Merge branch 'maint-1.6.5' into maint-1.6.6
authorJunio C Hamano <gitster@pobox.com>
Tue, 16 Feb 2010 23:04:55 +0000 (15:04 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Feb 2010 23:04:55 +0000 (15:04 -0800)
* maint-1.6.5:
dwim_ref: fix dangling symref warning
stash pop: remove 'apply' options during 'drop' invocation
diff: make sure --output=/bad/path is caught

diff.c
git-stash.sh
sha1_name.c
t/t3903-stash.sh
diff --git a/diff.c b/diff.c
index 6da52e0c49bc5646594ab47cba3971fd156e021d..7a321f4254cf25101f9c9ed5df1621e3bf4b2e29 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -2855,6 +2855,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                ;
        else if (!prefixcmp(arg, "--output=")) {
                options->file = fopen(arg + strlen("--output="), "w");
+               if (!options->file)
+                       die_errno("Could not open '%s'", arg + strlen("--output="));
                options->close_file = 1;
        } else
                return 0;
index 3a0685f1893098e8f5c877f509183c8434e7c028..2d691963934c31242512bd4dd349d970c0350243 100755 (executable)
@@ -221,6 +221,7 @@ show_stash () {
 }
 
 apply_stash () {
+       applied_stash=
        unstash_index=
 
        while test $# != 0
@@ -242,6 +243,9 @@ apply_stash () {
        if test $# = 0
        then
                have_stash || die 'Nothing to apply'
+               applied_stash="$ref_stash@{0}"
+       else
+               applied_stash="$*"
        fi
 
        # stash records the work tree, and is a merge between the
@@ -415,8 +419,7 @@ pop)
        shift
        if apply_stash "$@"
        then
-               test -z "$unstash_index" || shift
-               drop_stash "$@"
+               drop_stash "$applied_stash"
        fi
        ;;
 branch)
index 04fb3b8fed2970bf7fde83e0dc38cea9485ca3d2..7013c53ca6f083b6887f2d8567c72c5a63054c1c 100644 (file)
@@ -278,8 +278,7 @@ int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref)
                                *ref = xstrdup(r);
                        if (!warn_ambiguous_refs)
                                break;
-               } else if ((flag & REF_ISSYMREF) &&
-                          (len != 4 || strcmp(str, "HEAD")))
+               } else if ((flag & REF_ISSYMREF) && strcmp(fullref, "HEAD"))
                        warning("ignoring dangling symref %s.", fullref);
        }
        free(last_branch);
index 5514f74b30aa74fe2bf214e90f9ad8f4da2876e4..476e5ec038f3c9fd2cad4607c3819f54dabd04ad 100755 (executable)
@@ -194,6 +194,15 @@ test_expect_success 'pop -q is quiet' '
        test ! -s output.out
 '
 
+test_expect_success 'pop -q --index works and is quiet' '
+       echo foo > file &&
+       git add file &&
+       git stash save --quiet &&
+       git stash pop -q --index > output.out 2>&1 &&
+       test foo = "$(git show :file)" &&
+       test ! -s output.out
+'
+
 test_expect_success 'drop -q is quiet' '
        git stash &&
        git stash drop -q > output.out 2>&1 &&