Re: git-fetching from a big repository is slow
- From
Junio C Hamano <junkio@cox.net>
- Date
- Dec 14, 2006, 20:41 UTC
- Message-ID
- <7v8xha2osd.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <Pine.LNX.4.63.0612141732410.3635@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> git-show-ref traverses every single _local_ tag when called. This is to > overcome the problem that tags can be packed now, so a simple file > existence check is not sufficient.
Is "traverses every single _local_ tag" a fact? It might go through every single _local_ (possibly stale) packed tag in memory but it should not traverse $GIT_DIR/refs/tags.
If I recall correctly, show-ref (1) first checks the filesystem "$GIT_DIR/$named_ref" and says Ok if found and valid; otherwise (2) checks packed refs (reads $GIT_DIR/packed-refs if not already). So that would be at most one open (which may fail in (1)) and one open+read (in (2)). Unless we are talking about fork+exec overhead, that "traverse" should be reasonably fast.
Where is the bottleneck?