Add support for negative refs
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Sep 12, 2006, 03:10 UTC
- Message-ID
- <Pine.LNX.4.64.0609112008500.27779@g5.osdl.org>
- In-Reply-To
- <Pine.LNX.4.64.0609111632050.27779@g5.osdl.org>
You can remove a ref that is packed two different ways: either simply repack all the refs without that one, or create a loose ref that has the magic all-zero SHA1.
This also adds back the test that a ref actually has the object it points to.
Signed-off-by: Linus Torvalds <torvalds@osdl.org> ---
This one is trivial, and obviously depends on the previous series.
I'm sending it just because I have a much bigger cleanup that I'd _really_ like to go in, and I did this trivial one before that much more interesting one.
diff --git a/refs.c b/refs.c index 5f80a68..72e2283 100644 --- a/refs.c +++ b/refs.c @@ -280,6 +280,12 @@ static int do_for_each_ref(const char *b } if (strncmp(base, entry->name, trim)) continue; + if (is_null_sha1(entry->sha1)) + continue; + if (!has_sha1_file(entry->sha1)) { + error("%s does not point to a valid object!", entry->name); + continue; + } retval = fn(entry->name + trim, entry->sha1); if (retval) return retval;