git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/RFC] fast-import: allow "reset" without "from" to delete a branch
@ 2008-03-15 14:59 Eyvind Bernhardsen
  2008-03-16  4:12 ` Shawn O. Pearce
  0 siblings, 1 reply; 4+ messages in thread
From: Eyvind Bernhardsen @ 2008-03-15 14:59 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Git Mailing List

Resetting a branch without "from" and not making any further commits
to it currently causes fast-import to fail with an error message.

This patch prevents the error, allowing "reset" to be used to delete
a branch.

Signed-off-by: Eyvind Bernhardsen <eyvind-git@orakel.ntnu.no>
---
Since commit c3b0dec ("Be more careful about updating refs"), git fast- 
import has given the following error message on every import from  
cvs2svn:

	error: Trying to write ref refs/heads/TAG.FIXUP with nonexistant  
object 0000000000000000000000000000000000000000
	error: Unable to update refs/heads/TAG.FIXUP

The imported repository is fine, but the error message finally bugged  
me enough to figure out what was going on, and the explanation is  
simple.  If a branch is reset in fast-import, and no further commits  
are made on that branch, the final dump_branches() call in fast- 
import.c fails.

cvs2svn creates a TAG.FIXUP branch for every tag and then resets it  
after the tag has been set. The intent is that TAG.FIXUP should be  
deleted, and this patch makes that work without error (the branch is  
actually deleted even without this patch).

It's a small change and the test suite passes, but I'm not sure if  
using reset to delete a branch is desired behaviour, so I would  
appreciate it if someone who actually knows what they are doing could  
take a look at it :)

  fast-import.c |    5 +++--
  1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/fast-import.c b/fast-import.c
index 655913d..989ba94 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -1539,8 +1539,9 @@ static int update_branch(struct branch *b)
  			return -1;
  		}
  	}
-	if (write_ref_sha1(lock, b->sha1, msg) < 0)
-		return error("Unable to update %s", b->name);
+	if (!is_null_sha1(b->sha1))
+		if (write_ref_sha1(lock, b->sha1, msg) < 0)
+			return error("Unable to update %s", b->name);
  	return 0;
  }

-- 
1.5.4.4.555.ga98c.dirty

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-03-16 21:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-15 14:59 [PATCH/RFC] fast-import: allow "reset" without "from" to delete a branch Eyvind Bernhardsen
2008-03-16  4:12 ` Shawn O. Pearce
2008-03-16 19:49   ` [PATCH] fast-import: Allow "reset" to delete a new branch without error Eyvind Bernhardsen
2008-03-16 21:17     ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).