Browse Source

git-branch: cleanup config file when deleting branches

When deleting branches, remove the sections referring to these branches
from the config file.

Signed-off-by: Gerrit Pape <pape@smarden.org>
maint
Gerrit Pape 18 years ago committed by Junio C Hamano
parent
commit
f1eccbab63
  1. 9
      builtin-branch.c
  2. 9
      t/t3200-branch.sh

9
builtin-branch.c

@ -85,6 +85,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds) @@ -85,6 +85,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds)
unsigned char sha1[20];
char *name = NULL;
const char *fmt, *remote;
char section[PATH_MAX];
int i;
int ret = 0;

@ -152,9 +153,13 @@ static int delete_branches(int argc, const char **argv, int force, int kinds) @@ -152,9 +153,13 @@ static int delete_branches(int argc, const char **argv, int force, int kinds)
error("Error deleting %sbranch '%s'", remote,
argv[i]);
ret = 1;
} else
} else {
printf("Deleted %sbranch %s.\n", remote, argv[i]);

snprintf(section, sizeof(section), "branch.%s",
argv[i]);
if (git_config_rename_section(section, NULL) < 0)
warning("Update of config-file failed");
}
}

if (name)

9
t/t3200-branch.sh

@ -171,6 +171,15 @@ test_expect_success 'test tracking setup via --track but deeper' \ @@ -171,6 +171,15 @@ test_expect_success 'test tracking setup via --track but deeper' \
test "$(git-config branch.my7.remote)" = local &&
test "$(git-config branch.my7.merge)" = refs/heads/o/o'

test_expect_success 'test deleting branch deletes branch config' \
'git-branch -d my7 &&
test "$(git-config branch.my7.remote)" = "" &&
test "$(git-config branch.my7.merge)" = ""'

test_expect_success 'test deleting branch without config' \
'git-branch my7 s &&
test "$(git-branch -d my7 2>&1)" = "Deleted branch my7."'

# Keep this test last, as it changes the current branch
cat >expect <<EOF
0000000000000000000000000000000000000000 $HEAD $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150200 +0000 branch: Created from master

Loading…
Cancel
Save