зеркало из https://github.com/microsoft/git.git
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@owsiany.pl> Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
Родитель
31c79549b8
Коммит
e3bd4ddaa9
|
@ -367,9 +367,9 @@ Git::SVN::init_vars();
|
||||||
eval {
|
eval {
|
||||||
Git::SVN::verify_remotes_sanity();
|
Git::SVN::verify_remotes_sanity();
|
||||||
$cmd{$cmd}->[0]->(@ARGV);
|
$cmd{$cmd}->[0]->(@ARGV);
|
||||||
|
post_fetch_checkout();
|
||||||
};
|
};
|
||||||
fatal $@ if $@;
|
fatal $@ if $@;
|
||||||
post_fetch_checkout();
|
|
||||||
exit 0;
|
exit 0;
|
||||||
|
|
||||||
####################### primary functions ######################
|
####################### primary functions ######################
|
||||||
|
@ -1598,8 +1598,8 @@ sub rebase_cmd {
|
||||||
|
|
||||||
sub post_fetch_checkout {
|
sub post_fetch_checkout {
|
||||||
return if $_no_checkout;
|
return if $_no_checkout;
|
||||||
|
return if verify_ref('HEAD^0');
|
||||||
my $gs = $Git::SVN::_head or return;
|
my $gs = $Git::SVN::_head or return;
|
||||||
return if verify_ref('refs/heads/master^0');
|
|
||||||
|
|
||||||
# look for "trunk" ref if it exists
|
# look for "trunk" ref if it exists
|
||||||
my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}};
|
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 HEAD), $gs->refname);
|
||||||
command_noisy(qw(update-ref refs/heads/master), $gs->refname);
|
return unless verify_ref('HEAD^0');
|
||||||
return if ($valid_head || !verify_ref('HEAD^0'));
|
|
||||||
|
|
||||||
return if $ENV{GIT_DIR} !~ m#^(?:.*/)?\.git$#;
|
return if $ENV{GIT_DIR} !~ m#^(?:.*/)?\.git$#;
|
||||||
my $index = $ENV{GIT_INDEX_FILE} || "$ENV{GIT_DIR}/index";
|
my $index = $ENV{GIT_INDEX_FILE} || "$ENV{GIT_DIR}/index";
|
||||||
|
|
Загрузка…
Ссылка в новой задаче