зеркало из https://github.com/microsoft/git.git
checkout: avoid resolving HEAD unnecessarily
When --ignore-other-worktree is specified, we unconditionally skip the check to see if the requested branch is already checked out in a linked worktree. Since we know that we will be skipping that check, there is no need to resolve HEAD in order to detect other conditions under which we may skip the check. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
114ff8881a
Коммит
c265c533cf
|
@ -1145,13 +1145,13 @@ static int checkout_branch(struct checkout_opts *opts,
|
|||
die(_("Cannot switch branch to a non-commit '%s'"),
|
||||
new->name);
|
||||
|
||||
if (new->path && !opts->force_detach && !opts->new_branch) {
|
||||
if (new->path && !opts->force_detach && !opts->new_branch &&
|
||||
!opts->ignore_other_worktrees) {
|
||||
unsigned char sha1[20];
|
||||
int flag;
|
||||
char *head_ref = resolve_refdup("HEAD", 0, sha1, &flag);
|
||||
if (head_ref &&
|
||||
(!(flag & REF_ISSYMREF) || strcmp(head_ref, new->path)) &&
|
||||
!opts->ignore_other_worktrees)
|
||||
(!(flag & REF_ISSYMREF) || strcmp(head_ref, new->path)))
|
||||
check_linked_checkouts(new);
|
||||
free(head_ref);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче