Re: git-prune-script eats data

From: Linus Torvalds <torvalds@osdl.org>
Date: 2005-06-23 12:04:46
On Tue, 21 Jun 2005, Jeff Garzik wrote:
> 
> $ git-prune-script
> 
> $ git-fsck-cache
> error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a
> bad object in tag 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c
> bad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'

It's exactly the same thing that Jens had. You have a tag object for the 
v2.6.11-tree thing, but you don't have the reference to the tag.

And now I realize what the problem is. It's _not_ that "git prune" has 
removed too much, like the obvious implication would be: it's that "git 
prune" has not removed _enough_.

"git prune" normally never removes tag-objects, whether reachable or not. 
That's because git-fsck-cache was explicitly ignoring them, which was 
because early on, the way you found tags was you did

	git-fsck-cache --tags

and then you created refs to them manually. 

But now that special case causes problems (and is no longer needed 
anyway), because it means that "git prune" will not remove unreachable 
tags, but it _will_ remove everything that an unreachable tag points to 
(because that is also unreachable).

So the trivial fix is to just remove the lines from fsck-cache.c that say

	/* Don't bother with tag reachability. */
	if (obj->type == tag_type)
		continue;

and that will fix it for you.

Will do.

		Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Thu Jun 23 12:12:30 2005

This archive was generated by hypermail 2.1.8 : 2005-06-23 12:12:32 EST