Git is not scalable with too many refs/*
- From
- NAKAMURA Takumi <geek4civic@gmail.com>
- Date
- Jun 9, 2011, 03:44 UTC
- Message-ID
- <BANLkTimnCqaEBVreMhnbRBV3r-r1ZzkFcg@mail.gmail.com>
Hello, Git. It is my 1st post here.
I have tried tagging each commit as "refs/tags/rXXXXXX" on git-svn repo locally. (over 100k refs/tags.) Indeed, it made something extremely slower, even with packed-refs and pack objects. I gave up, then, to push tags to upstream. (it must be terror) :p
I know it might be crazy in the git way, but it would bring me conveniences. (eg. git log --oneline --decorate shows me each svn revision) I would like to work for Git to live with many tags.
* Issues as far as I have investigated;
- git show --decorate is always slow.
in decorate.c, every commits are inspected.
- git rev-tree --quiet --objects $upstream --not --all spends so much time,
even if it is expected to return with 0.
As you know, it is used in builtin/fetch.c.
- git-upload-pack shows "all" refs to me if upstream has too many refs.I would like to work as below if they were valuable.
- Get rid of inspecting commits in packed-refs on decorate stuff. - Implement sort-by-hash packed-refs, (not sort-by-name) - Implement more effective pruning --not --all on revision.c. - Think about enhancement of protocol to transfer many refs more effectively.
I am happy to consider the issue, thank you.
...Takumi