##// 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 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.
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 Contributing
95 Contributing
94 ============
96 ============
@@ -244,11 +244,11 b' class remotefilelog(object):'
244 __bool__ = __nonzero__
244 __bool__ = __nonzero__
245
245
246 def __len__(self):
246 def __len__(self):
247 if self.filename == b'.hgtags':
247 if self.filename in (b'.hgtags', b'.hgsub', b'.hgsubstate'):
248 # The length of .hgtags is used to fast path tag checking.
248 # Global tag and subrepository support require access to the
249 # remotefilelog doesn't support .hgtags since the entire .hgtags
249 # file history for various performance sensitive operations.
250 # history is needed. Use the excludepattern setting to make
250 # excludepattern should be used for repositories depending on
251 # .hgtags a normal filelog.
251 # those features to fallback to regular filelog.
252 return 0
252 return 0
253
253
254 raise RuntimeError(b"len not supported")
254 raise RuntimeError(b"len not supported")
@@ -521,8 +521,16 b' def _pushdiscovery(pushop):'
521
521
522 def _checksubrepostate(pushop):
522 def _checksubrepostate(pushop):
523 """Ensure all outgoing referenced subrepo revisions are present locally"""
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 for n in pushop.outgoing.missing:
532 for n in pushop.outgoing.missing:
525 ctx = pushop.repo[n]
533 ctx = repo[n]
526
534
527 if b'.hgsub' in ctx.manifest() and b'.hgsubstate' in ctx.files():
535 if b'.hgsub' in ctx.manifest() and b'.hgsubstate' in ctx.files():
528 for subpath in sorted(ctx.substate):
536 for subpath in sorted(ctx.substate):
@@ -15,6 +15,8 b' The `--no-check` and `--no-merge` now pr'
15
15
16 == Backwards Compatibility Changes ==
16 == Backwards Compatibility Changes ==
17
17
18 The remotefilelog extension now requires an appropiate excludepattern
19 for subrepositories.
18
20
19 == Internal API Changes ==
21 == Internal API Changes ==
20
22
General Comments 0
You need to be logged in to leave comments. Login now