##// END OF EJS Templates
exchange: add fast path for subrepo check on push...
Joerg Sonnenberger -
r49381:28f0092e default
parent child Browse files
Show More
@@ -88,7 +88,9 b' 3. remotefilelog only works with ssh bas'
88 88
89 89 4. Tags are not supported in completely shallow repos. If you use tags in your repo you will have to specify `excludepattern=.hgtags` in your client configuration to ensure that file is downloaded. The include/excludepattern settings are experimental at the moment and have yet to be deployed in a production environment.
90 90
91 5. A few commands will be slower. `hg log <filename>` will be much slower since it has to walk the entire commit history instead of just the filelog. Use `hg log -f <filename>` instead, which remains very fast.
91 5. Similarly, subrepositories should not be used with completely shallow repos. Use `excludepattern=.hgsub*` in your client configuration to ensure that the files are downloaded.
92
93 6. A few commands will be slower. `hg log <filename>` will be much slower since it has to walk the entire commit history instead of just the filelog. Use `hg log -f <filename>` instead, which remains very fast.
92 94
93 95 Contributing
94 96 ============
@@ -244,11 +244,11 b' class remotefilelog(object):'
244 244 __bool__ = __nonzero__
245 245
246 246 def __len__(self):
247 if self.filename == b'.hgtags':
248 # The length of .hgtags is used to fast path tag checking.
249 # remotefilelog doesn't support .hgtags since the entire .hgtags
250 # history is needed. Use the excludepattern setting to make
251 # .hgtags a normal filelog.
247 if self.filename in (b'.hgtags', b'.hgsub', b'.hgsubstate'):
248 # Global tag and subrepository support require access to the
249 # file history for various performance sensitive operations.
250 # excludepattern should be used for repositories depending on
251 # those features to fallback to regular filelog.
252 252 return 0
253 253
254 254 raise RuntimeError(b"len not supported")
@@ -521,8 +521,16 b' def _pushdiscovery(pushop):'
521 521
522 522 def _checksubrepostate(pushop):
523 523 """Ensure all outgoing referenced subrepo revisions are present locally"""
524
525 repo = pushop.repo
526
527 # If the repository does not use subrepos, skip the expensive
528 # manifest checks.
529 if not len(repo.file(b'.hgsub')) or not len(repo.file(b'.hgsubstate')):
530 return
531
524 532 for n in pushop.outgoing.missing:
525 ctx = pushop.repo[n]
533 ctx = repo[n]
526 534
527 535 if b'.hgsub' in ctx.manifest() and b'.hgsubstate' in ctx.files():
528 536 for subpath in sorted(ctx.substate):
@@ -15,6 +15,8 b' The `--no-check` and `--no-merge` now pr'
15 15
16 16 == Backwards Compatibility Changes ==
17 17
18 The remotefilelog extension now requires an appropiate excludepattern
19 for subrepositories.
18 20
19 21 == Internal API Changes ==
20 22
General Comments 0
You need to be logged in to leave comments. Login now