From 078f8380f65acfdffee077a642e982453277873a Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 20 May 2007 14:19:17 +0200 Subject: [PATCH 1/6] branch: fix segfault when resolving an invalid HEAD Caused by return value of resolve_ref being passed directly to xstrdup whereby the sanity checking was never reached. Signed-off-by: Jonas Fonseca Signed-off-by: Junio C Hamano --- builtin-branch.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builtin-branch.c b/builtin-branch.c index 7408285050..8956d0f842 100644 --- a/builtin-branch.c +++ b/builtin-branch.c @@ -623,9 +623,10 @@ int cmd_branch(int argc, const char **argv, const char *prefix) (rename && force_create)) usage(builtin_branch_usage); - head = xstrdup(resolve_ref("HEAD", head_sha1, 0, NULL)); + head = resolve_ref("HEAD", head_sha1, 0, NULL); if (!head) die("Failed to resolve HEAD as a valid ref."); + head = xstrdup(head); if (!strcmp(head, "HEAD")) { detached = 1; } From 1472966c04103874096fb786657459ea6628e451 Mon Sep 17 00:00:00 2001 From: "Fernando J. Pereda" Date: Sun, 20 May 2007 15:35:46 +0200 Subject: [PATCH 2/6] Use PATH_MAX instead of TEMPFILE_PATH_LEN Signed-off-by: Fernando J. Pereda Signed-off-by: Junio C Hamano --- diff.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/diff.c b/diff.c index b28933f870..3c15553710 100644 --- a/diff.c +++ b/diff.c @@ -137,13 +137,11 @@ static const char *external_diff(void) return external_diff_cmd; } -#define TEMPFILE_PATH_LEN 50 - static struct diff_tempfile { const char *name; /* filename external diff should read from */ char hex[41]; char mode[10]; - char tmp_path[TEMPFILE_PATH_LEN]; + char tmp_path[PATH_MAX]; } diff_temp[2]; static int count_lines(const char *data, int size) @@ -1507,7 +1505,7 @@ static void prep_temp_blob(struct diff_tempfile *temp, { int fd; - fd = git_mkstemp(temp->tmp_path, TEMPFILE_PATH_LEN, ".diff_XXXXXX"); + fd = git_mkstemp(temp->tmp_path, PATH_MAX, ".diff_XXXXXX"); if (fd < 0) die("unable to create temp-file"); if (write_in_full(fd, blob, size) != size) From 0a76f6652459e4bbf5311347e9bf726e203e86d6 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 20 May 2007 19:26:37 +0200 Subject: [PATCH 3/6] unpack-trees.c: verify_uptodate: remove dead code This code was killed by commit fcc387db9bc453dc7e07a262873481af2ee9e5c8. Signed-off-by: Sven Verdoolaege Signed-off-by: Junio C Hamano --- unpack-trees.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/unpack-trees.c b/unpack-trees.c index ee10eea24c..6d1f0d13a3 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -452,10 +452,6 @@ static void verify_uptodate(struct cache_entry *ce, return; errno = 0; } - if (o->reset) { - ce->ce_flags |= htons(CE_UPDATE); - return; - } if (errno == ENOENT) return; die("Entry '%s' not uptodate. Cannot merge.", ce->name); From cab333cb6ac0ac857dcfb112989ea32aea5d0ec1 Mon Sep 17 00:00:00 2001 From: Frank Lichtenheld Date: Mon, 21 May 2007 00:12:57 +0200 Subject: [PATCH 4/6] t1300: Add tests for git-config --bool --get Noticed that there were only tests for --int, but not for --bool. Add some. Signed-off-by: Frank Lichtenheld Signed-off-by: Junio C Hamano --- t/t1300-repo-config.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index a1d777ca81..3f3fd2d7f7 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -436,6 +436,40 @@ test_expect_success numbers ' test z1048576 = "z$m" ' +cat > expect << EOF +true +false +true +false +true +false +true +false +EOF + +test_expect_success bool ' + + git-config bool.true1 01 && + git-config bool.true2 -1 && + git-config bool.true3 YeS && + git-config bool.true4 true && + git-config bool.false1 000 && + git-config bool.false2 "" && + git-config bool.false3 nO && + git-config bool.false4 FALSE && + rm -f result && + for i in 1 2 3 4 + do + git-config --bool --get bool.true$i >>result + git-config --bool --get bool.false$i >>result + done && + cmp expect result' + +test_expect_failure 'invalid bool' ' + + git-config bool.nobool foobar && + git-config --bool --get bool.nobool' + rm .git/config git-config quote.leading " test" From 0cb21911f49176866ee5170e292d351f4697634e Mon Sep 17 00:00:00 2001 From: Frank Lichtenheld Date: Mon, 21 May 2007 00:12:58 +0200 Subject: [PATCH 5/6] git-config: Correct asciidoc documentation for --int/--bool The asciidoc documentation seemed to indicate that type specifiers are honoured on writing operations which they aren't. Make this more clear. Signed-off-by: Frank Lichtenheld Signed-off-by: Junio C Hamano --- Documentation/git-config.txt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 280ef2058c..827a49970d 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -9,15 +9,15 @@ git-config - Get and set repository or global options SYNOPSIS -------- [verse] -'git-config' [--system | --global] [type] name [value [value_regex]] -'git-config' [--system | --global] [type] --add name value -'git-config' [--system | --global] [type] --replace-all name [value [value_regex]] +'git-config' [--system | --global] name [value [value_regex]] +'git-config' [--system | --global] --add name value +'git-config' [--system | --global] --replace-all name [value [value_regex]] 'git-config' [--system | --global] [type] --get name [value_regex] 'git-config' [--system | --global] [type] --get-all name [value_regex] -'git-config' [--system | --global] [type] --unset name [value_regex] -'git-config' [--system | --global] [type] --unset-all name [value_regex] -'git-config' [--system | --global] [type] --rename-section old_name new_name -'git-config' [--system | --global] [type] --remove-section name +'git-config' [--system | --global] --unset name [value_regex] +'git-config' [--system | --global] --unset-all name [value_regex] +'git-config' [--system | --global] --rename-section old_name new_name +'git-config' [--system | --global] --remove-section name 'git-config' [--system | --global] -l | --list DESCRIPTION @@ -36,7 +36,8 @@ prepend a single exclamation mark in front (see EXAMPLES). The type specifier can be either '--int' or '--bool', which will make 'git-config' ensure that the variable(s) are of the given type and convert the value to the canonical form (simple decimal number for int, -a "true" or "false" string for bool). If no type specifier is passed, +a "true" or "false" string for bool). Type specifiers currently only +take effect for reading operations. If no type specifier is passed, no checks or transformations are performed on the value. This command will fail if: From 5b6dedd6a0b7566f7e8466b6aefe8f019c52f5d3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 May 2007 19:56:28 -0700 Subject: [PATCH 6/6] annotate: make it work from subdirectories. Signed-off-by: Junio C Hamano --- git.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git.c b/git.c index 7def319e60..3d0754cbaa 100644 --- a/git.c +++ b/git.c @@ -225,7 +225,7 @@ static void handle_internal_command(int argc, const char **argv, char **envp) int option; } commands[] = { { "add", cmd_add, RUN_SETUP | NOT_BARE }, - { "annotate", cmd_annotate, USE_PAGER }, + { "annotate", cmd_annotate, RUN_SETUP | USE_PAGER }, { "apply", cmd_apply }, { "archive", cmd_archive }, { "blame", cmd_blame, RUN_SETUP },