##// END OF EJS Templates
phase-shelve: read patch details from a (possibly internal) node in the repo
Jason R. Coombs -
r50321:24ffd138 default
parent child Browse files
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).open_patch() as fp:
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