From 078f8380f65acfdffee077a642e982453277873a Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 20 May 2007 14:19:17 +0200 Subject: 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 diff --git a/builtin-branch.c b/builtin-branch.c index 7408285..8956d0f 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; } -- cgit v0.10.2-6-g49f6 From 1472966c04103874096fb786657459ea6628e451 Mon Sep 17 00:00:00 2001 From: "Fernando J. Pereda" Date: Sun, 20 May 2007 15:35:46 +0200 Subject: Use PATH_MAX instead of TEMPFILE_PATH_LEN Signed-off-by: Fernando J. Pereda Signed-off-by: Junio C Hamano diff --git a/diff.c b/diff.c index b28933f..3c15553 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) -- cgit v0.10.2-6-g49f6 From 0a76f6652459e4bbf5311347e9bf726e203e86d6 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 20 May 2007 19:26:37 +0200 Subject: 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 diff --git a/unpack-trees.c b/unpack-trees.c index ee10eea..6d1f0d1 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); -- cgit v0.10.2-6-g49f6 From cab333cb6ac0ac857dcfb112989ea32aea5d0ec1 Mon Sep 17 00:00:00 2001 From: Frank Lichtenheld Date: Mon, 21 May 2007 00:12:57 +0200 Subject: 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 diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index a1d777c..3f3fd2d 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" -- cgit v0.10.2-6-g49f6 From 0cb21911f49176866ee5170e292d351f4697634e Mon Sep 17 00:00:00 2001 From: Frank Lichtenheld Date: Mon, 21 May 2007 00:12:58 +0200 Subject: 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 diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 280ef20..827a499 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: -- cgit v0.10.2-6-g49f6 From 5b6dedd6a0b7566f7e8466b6aefe8f019c52f5d3 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 May 2007 19:56:28 -0700 Subject: annotate: make it work from subdirectories. Signed-off-by: Junio C Hamano diff --git a/git.c b/git.c index 7def319..3d0754c 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 }, -- cgit v0.10.2-6-g49f6