Show More
@@ -22,6 +22,7 b' shelve".' | |||
|
22 | 22 | """ |
|
23 | 23 | |
|
24 | 24 | import collections |
|
25 | import io | |
|
25 | 26 | import itertools |
|
26 | 27 | import stat |
|
27 | 28 | |
@@ -183,6 +184,27 b' class Shelf:' | |||
|
183 | 184 | def open_patch(self, mode=b'rb'): |
|
184 | 185 | return self.vfs(self.name + b'.patch', mode) |
|
185 | 186 | |
|
187 | def patch_from_node(self, repo, node): | |
|
188 | repo = repo.unfiltered() | |
|
189 | match = _optimized_match(repo, node) | |
|
190 | fp = io.BytesIO() | |
|
191 | cmdutil.exportfile( | |
|
192 | repo, | |
|
193 | [node], | |
|
194 | fp, | |
|
195 | opts=mdiff.diffopts(git=True), | |
|
196 | match=match, | |
|
197 | ) | |
|
198 | fp.seek(0) | |
|
199 | return fp | |
|
200 | ||
|
201 | def load_patch(self, repo): | |
|
202 | try: | |
|
203 | # prefer node-based shelf | |
|
204 | return self.patch_from_node(repo, self.readinfo()[b'node']) | |
|
205 | except (FileNotFoundError, error.RepoLookupError): | |
|
206 | return self.open_patch() | |
|
207 | ||
|
186 | 208 | def _backupfilename(self, backupvfs, filename): |
|
187 | 209 | def gennames(base): |
|
188 | 210 | yield base |
@@ -674,7 +696,7 b' def listcmd(ui, repo, pats, opts):' | |||
|
674 | 696 | ui.write(age, label=b'shelve.age') |
|
675 | 697 | ui.write(b' ' * (12 - len(age))) |
|
676 | 698 | used += 12 |
|
677 |
with shelf_dir.get(name). |
|
|
699 | with shelf_dir.get(name).load_patch(repo) as fp: | |
|
678 | 700 | while True: |
|
679 | 701 | line = fp.readline() |
|
680 | 702 | if not line: |
General Comments 0
You need to be logged in to leave comments.
Login now