Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Wed, 12 Mar 2008 04:40:47 +0000 (21:40 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 Mar 2008 04:40:47 +0000 (21:40 -0700)
* maint:
git-svn: fix find-rev error message when missing arg
t0021: tr portability fix for Solaris
launch_editor(): allow spaces in the filename
git rebase --abort: always restore the right commit

builtin-tag.c
git-svn.perl
t/t0021-conversion.sh
t/t7005-editor.sh
index 28c36fdcd1658968ff7c3e2f1d6ba6f364f99592..8dd959fe1c74507023f8e82c7f4682c1588ebac6 100644 (file)
@@ -50,12 +50,15 @@ void launch_editor(const char *path, struct strbuf *buffer, const char *const *e
                size_t len = strlen(editor);
                int i = 0;
                const char *args[6];
+               struct strbuf arg0;
 
+               strbuf_init(&arg0, 0);
                if (strcspn(editor, "$ \t'") != len) {
                        /* there are specials */
+                       strbuf_addf(&arg0, "%s \"$@\"", editor);
                        args[i++] = "sh";
                        args[i++] = "-c";
-                       args[i++] = "$0 \"$@\"";
+                       args[i++] = arg0.buf;
                }
                args[i++] = editor;
                args[i++] = path;
@@ -63,6 +66,7 @@ void launch_editor(const char *path, struct strbuf *buffer, const char *const *e
 
                if (run_command_v_opt_cd_env(args, 0, NULL, env))
                        die("There was a problem with the editor %s.", editor);
+               strbuf_release(&arg0);
        }
 
        if (!buffer)
index 1195569529401fd1c62414c8683a6b577721c1c7..d8b38c9a47c0b77dd55781a66e42e4dec26fd4b7 100755 (executable)
@@ -522,7 +522,8 @@ sub cmd_dcommit {
 }
 
 sub cmd_find_rev {
-       my $revision_or_hash = shift;
+       my $revision_or_hash = shift or die "SVN or git revision required ",
+                                           "as a command-line argument\n";
        my $result;
        if ($revision_or_hash =~ /^r\d+$/) {
                my $head = shift;
index cb860296edfab2d117fc8b62505df00a51baed02..8fc39d77cec6168dae930beef785597dace24aa3 100755 (executable)
@@ -5,7 +5,9 @@ test_description='blob conversion via gitattributes'
 . ./test-lib.sh
 
 cat <<\EOF >rot13.sh
-tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
+tr \
+  'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
+  'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
 EOF
 chmod +x rot13.sh
 
index c1cec553060a2fd6a4d27191a866b3bf53ba3335..6a74b3acfda6774d7996cf5787e9858654357328 100755 (executable)
@@ -89,6 +89,33 @@ do
        '
 done
 
+test_expect_success 'editor with a space' '
+
+       if echo "echo space > \"\$1\"" > "e space.sh"
+       then
+               chmod a+x "e space.sh" &&
+               GIT_EDITOR="./e\ space.sh" git commit --amend &&
+               test space = "$(git show -s --pretty=format:%s)"
+       else
+               say "Skipping; FS does not support spaces in filenames"
+       fi
+
+'
+
+unset GIT_EDITOR
+test_expect_success 'core.editor with a space' '
+
+       if test -f "e space.sh"
+       then
+               git config core.editor \"./e\ space.sh\" &&
+               git commit --amend &&
+               test space = "$(git show -s --pretty=format:%s)"
+       else
+               say "Skipping; FS does not support spaces in filenames"
+       fi
+
+'
+
 TERM="$OLD_TERM"
 
 test_done