Marcin Owsiany <marcin@xxxxxxxxxx> writes: > PTAL: > > From: Marcin Owsiany <marcin@xxxxxxxxxx> > Date: Sun, 24 Jun 2012 22:40:05 +0100 > Subject: [PATCH] git-svn: don't create master if another head exists > > git-svn insists on creating the "master" head (unless it exists) on every > "fetch". It is useful that it gets created initially, when no head exists > - users expect this git convention of having a "master" branch on initial > clone. > > However creating it when there already is another head does not provide any > value - the ref is never updated, so it just gets stale after a while. Also, > some users find it annoying that it gets recreated, especially when they would > like the git branch names to follow SVN repository branch names. More > background in http://thread.gmane.org/gmane.comp.version-control.git/115030 > > Make git-svn skip the "master" creation if HEAD already points at a valid head. > This means "master" does get created on initial "clone" but does not get > recreated once a user deletes it. > > Also, make post_fetch_checkout work with any head that is pointed to by HEAD, > not just "master". > > Also, use fatal error handling consistent with the rest of the program for > post_fetch_checkout. > > Signed-off-by: Marcin Owsiany <marcin@xxxxxxxxxx> > --- > git-svn.perl | 9 ++++----- > 1 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/git-svn.perl b/git-svn.perl > index 0b074c4..6673d21 100755 > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -367,9 +367,9 @@ Git::SVN::init_vars(); > eval { > Git::SVN::verify_remotes_sanity(); > $cmd{$cmd}->[0]->(@ARGV); > + post_fetch_checkout(); > }; > fatal $@ if $@; > -post_fetch_checkout(); > exit 0; > > ####################### primary functions ###################### > @@ -1598,8 +1598,8 @@ sub rebase_cmd { > > sub post_fetch_checkout { > return if $_no_checkout; > + return if verify_ref('HEAD^0'); > my $gs = $Git::SVN::_head or return; > - return if verify_ref('refs/heads/master^0'); > > # look for "trunk" ref if it exists > my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}}; > @@ -1612,9 +1612,8 @@ sub post_fetch_checkout { > } > } > > - my $valid_head = verify_ref('HEAD^0'); > - command_noisy(qw(update-ref refs/heads/master), $gs->refname); > - return if ($valid_head || !verify_ref('HEAD^0')); > + command_noisy(qw(update-ref HEAD), $gs->refname); > + return unless verify_ref('HEAD^0'); > > return if $ENV{GIT_DIR} !~ m#^(?:.*/)?\.git$#; > my $index = $ENV{GIT_INDEX_FILE} || "$ENV{GIT_DIR}/index"; I am happy with this version, as long as Eric is happy ;-) Thanks. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html