From: Junio C Hamano Date: Wed, 26 Oct 2005 05:07:11 GMT Subject: Re: [PATCH] fetch-pack: avoid packing reachable objects. Message-ID: <7v7jc0c1ds.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20051026042632.GA3059@delft.aura.cs.cmu.edu> Jan Harkes writes: > Mark remote commits that were found in the alternate repository as > COMPLETE and avoid unnecessary packing of already available objects. Sorry, this is wrong (we made this mistake twice already). The mere existence of that object in the local repository does not necessarily mean we have everything that is reachable from it. The rule is that we only trust local refs. Anything that are reachable from them are known to be complete. And after a successful fetch, we update local refs. The existence of an object is a strong _hint_ that it _might_ be complete, but nothing more. Think of a case where you tried to fetch via commit walker and got things reachable from the then-current ref, and the object you are marking as COMPLETE (maybe in pack) is a remnant of that failed fetch, which was killed before completing. You might have complete history starting from the then-current commit back to that commit, but there is no guarantee that you can further tangle the history back and find everything needed.