int read_stdin = 1;
int inaccurate_eof = 0;
int errs = 0;
+ int is_not_gitdir = 0;
const char *whitespace_option = NULL;
+ prefix = setup_git_directory_gently(&is_not_gitdir);
+ prefix_length = prefix ? strlen(prefix) : 0;
+ if (!is_not_gitdir) {
+ git_config(git_apply_config);
+ if (apply_default_whitespace)
+ parse_whitespace_option(apply_default_whitespace);
+ }
+
for (i = 1; i < argc; i++) {
const char *arg = argv[i];
char *end;
continue;
}
if (!strcmp(arg, "--index")) {
+ if (is_not_gitdir)
+ die("--index outside a repository");
check_index = 1;
continue;
}
if (!strcmp(arg, "--cached")) {
+ if (is_not_gitdir)
+ die("--cached outside a repository");
check_index = 1;
cached = 1;
continue;
inaccurate_eof = 1;
continue;
}
-
- if (check_index && prefix_length < 0) {
- prefix = setup_git_directory();
- prefix_length = prefix ? strlen(prefix) : 0;
- git_config(git_apply_config);
- if (!whitespace_option && apply_default_whitespace)
- parse_whitespace_option(apply_default_whitespace);
- }
if (0 < prefix_length)
arg = prefix_filename(prefix, prefix_length, arg);
--- /dev/null
+#!/bin/sh
+#
+# Copyright (c) 2007 Junio C Hamano
+#
+
+test_description='git-apply --whitespace=strip and configuration file.
+
+'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+ echo A >file1 &&
+ cp file1 saved &&
+ git add file1 &&
+ echo "B " >file1 &&
+ git diff >patch.file
+'
+
+test_expect_success 'apply --whitespace=strip' '
+
+ cp saved file1 &&
+ git update-index --refresh &&
+
+ git apply --whitespace=strip patch.file &&
+ if grep " " file1
+ then
+ echo "Eh?"
+ false
+ else
+ echo Happy
+ fi
+'
+
+test_expect_success 'apply --whitespace=strip from config' '
+
+ cp saved file1 &&
+ git update-index --refresh &&
+
+ git config apply.whitespace strip &&
+ git apply patch.file &&
+ if grep " " file1
+ then
+ echo "Eh?"
+ false
+ else
+ echo Happy
+ fi
+'
+
+mkdir sub
+D=`pwd`
+
+test_expect_success 'apply --whitespace=strip in subdir' '
+
+ cd "$D" &&
+ git config --unset-all apply.whitespace
+ cp saved file1 &&
+ git update-index --refresh &&
+
+ cd sub &&
+ git apply --whitespace=strip ../patch.file &&
+ if grep " " ../file1
+ then
+ echo "Eh?"
+ false
+ else
+ echo Happy
+ fi
+'
+
+test_expect_success 'apply --whitespace=strip from config in subdir' '
+
+ cd "$D" &&
+ git config apply.whitespace strip &&
+ cp saved file1 &&
+ git update-index --refresh &&
+
+ cd sub &&
+ git apply ../patch.file &&
+ if grep " " file1
+ then
+ echo "Eh?"
+ false
+ else
+ echo Happy
+ fi
+'
+
+test_done