sync --all avoid unncessary first pass

Sped up seeking to around twice as fast, by avoiding a pass over the
worktree files when preferred content expressions of the local repo and
remotes don't use include=/exclude=.

Thanks to Lukey for identifying the optimisation.

This commit was sponsored by Brock Spratlen on Patreon.
This commit is contained in:
Joey Hess 2020-09-24 15:12:09 -04:00
parent b45b37b088
commit d89984b121
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
9 changed files with 86 additions and 12 deletions

View file

@ -19,3 +19,5 @@ and it led to a 2x speedup (with warm cache):
This repo has 25641 keys and all of them are in the worktree too.
> [[done]]! --[[Joey]]

View file

@ -0,0 +1,15 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2020-09-24T19:04:32Z"
content="""
One side effect of this optimisation is that, while sync --all used to
tell the filenames it was getting or dropping, when operating on files
in the working tree, when the optimsation is enabled it will only
display the keys. So, its behavior in 2 different repos might seem
inconsistent to a user, who doesn't know about all these gory 2 pass details.
I think, if that became a problem, the best fix would be to only display
the keys, and never the worktree filenames, even when running the first
pass. But I'll wait and see if that needs to be done, I suppose.
"""]]