From: Junio C Hamano Date: Thu, 14 Dec 2006 20:41:38 GMT Subject: Re: git-fetching from a big repository is slow Message-ID: <7v8xha2osd.fsf@assigned-by-dhcp.cox.net> In-Reply-To: Johannes Schindelin 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?