Merge branch 'maint-1.5.1' into maint
authorJunio C Hamano <junkio@cox.net>
Mon, 21 May 2007 02:57:00 +0000 (19:57 -0700)
committerJunio C Hamano <junkio@cox.net>
Mon, 21 May 2007 02:57:00 +0000 (19:57 -0700)
* maint-1.5.1:
annotate: make it work from subdirectories.
git-config: Correct asciidoc documentation for --int/--bool
t1300: Add tests for git-config --bool --get
unpack-trees.c: verify_uptodate: remove dead code
Use PATH_MAX instead of TEMPFILE_PATH_LEN
branch: fix segfault when resolving an invalid HEAD

Documentation/git-config.txt
builtin-branch.c
diff.c
git.c
t/t1300-repo-config.sh
unpack-trees.c
index 280ef2058ca95e601243ae57946b80695234c41c..827a49970d77cc1af431e673323510bb94e0a391 100644 (file)
@@ -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:
index 7408285050a0f41a33d31c73e79c2fdefe567593..8956d0f84213afbd0e53e39bc863c05960f524f0 100644 (file)
@@ -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;
        }
diff --git a/diff.c b/diff.c
index 33297aa8a7fd8f1c7f4711a9807b0b497d3de2ae..b23e1906783664103cf9b363a93a35f7d043c8ee 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -186,13 +186,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)
@@ -1561,7 +1559,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)
diff --git a/git.c b/git.c
index f20090721aa799a8dfd780291c8a83bd834b45b5..29b55a16047837084fd9e2e8238137b8a2fe44ea 100644 (file)
--- 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 },
index a1d777ca81456fb737b9f02effe7ff02c53645ad..3f3fd2d7f7cc148948a20e47cccd06751b9a2241 100755 (executable)
@@ -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"
index 906ce69ea6daf98cdb4f9dd3d6498264159b6b76..cac2411b9de7b4889abe6b0b84df25d24a38c7e5 100644 (file)
@@ -414,10 +414,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);