##// 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 import collections
24 import collections
25 import io
25 import itertools
26 import itertools
26 import stat
27 import stat
27
28
@@ -183,6 +184,27 b' class Shelf:'
183 def open_patch(self, mode=b'rb'):
184 def open_patch(self, mode=b'rb'):
184 return self.vfs(self.name + b'.patch', mode)
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 def _backupfilename(self, backupvfs, filename):
208 def _backupfilename(self, backupvfs, filename):
187 def gennames(base):
209 def gennames(base):
188 yield base
210 yield base
@@ -674,7 +696,7 b' def listcmd(ui, repo, pats, opts):'
674 ui.write(age, label=b'shelve.age')
696 ui.write(age, label=b'shelve.age')
675 ui.write(b' ' * (12 - len(age)))
697 ui.write(b' ' * (12 - len(age)))
676 used += 12
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 while True:
700 while True:
679 line = fp.readline()
701 line = fp.readline()
680 if not line:
702 if not line:
General Comments 0
You need to be logged in to leave comments. Login now