[PATCH v3 0/4] Improve push performance with lots of refs
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- Dec 23, 2014, 12:01 UTC
- Message-ID
- <1419336082-283091-1-git-send-email-sandals@crustytoothpaste.net>
This series contains patches to address a significant push performance regression in repositories with large amounts of refs. It avoids performing expensive edge marking unless the repository is shallow.
The first patch in the series is a fix for a minor typo I discovered when editing the documentation. The second patch implements git rev-list --objects-edge-aggressive, and the third patch ensures it's used for shallow repos only. The final patch ensures that sending packs to shallow clients use --object-edge-aggressive as well.
The only change from v2 is the addition of a fourth patch, which fixes t5500. It's necessary because the test wants packs for fetches to shallow clones to be minimal.
I'm not especially thrilled with having to provide a --shallow command line argument, but the alternative is to buffer a potentially large amount of data in order to determine whether the remote side is shallow.
The original fix was suggested by Duy Nguyen.
brian m. carlson (4): Documentation: add missing article in rev-list-options.txt rev-list: add an option to mark fewer edges as uninteresting pack-objects: use --objects-edge-aggressive only for shallow repos upload-pack: use --objects-edge-aggressive for shallow fetches
Documentation/git-pack-objects.txt | 7 ++++++- Documentation/git-rev-list.txt | 3 ++- Documentation/rev-list-options.txt | 7 ++++++- builtin/pack-objects.c | 7 ++++++- list-objects.c | 4 ++-- revision.c | 6 ++++++ revision.h | 1 + upload-pack.c | 4 +++- 8 files changed, 32 insertions(+), 7 deletions(-)
-- 2.2.1.209.g41e5f3a