Merge branch 'ls/clean-smudge-override-in-config'
authorJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2016 22:20:07 +0000 (14:20 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2016 22:20:07 +0000 (14:20 -0800)
Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.

* ls/clean-smudge-override-in-config:
convert: treat an empty string for clean/smudge filters as "cat"

convert.c
t/t0021-conversion.sh
index 4bb4ec1d836e695a86f309b276fd07e300885c57..8cd6222a263ac99a63335bf7080a3fb4dd797ff7 100644 (file)
--- a/convert.c
+++ b/convert.c
@@ -434,7 +434,7 @@ static int apply_filter(const char *path, const char *src, size_t len, int fd,
        struct async async;
        struct filter_params params;
 
-       if (!cmd)
+       if (!cmd || !*cmd)
                return 0;
 
        if (!dst)
index 718efa04d34df1f867a37d7b3073f1463457455b..7bac2bcf260794bbfeb795b210ed0c9eceb45937 100755 (executable)
@@ -252,4 +252,20 @@ test_expect_success "filter: smudge empty file" '
        test_cmp expected filtered-empty-in-repo
 '
 
+test_expect_success 'disable filter with empty override' '
+       test_config_global filter.disable.smudge false &&
+       test_config_global filter.disable.clean false &&
+       test_config filter.disable.smudge false &&
+       test_config filter.disable.clean false &&
+
+       echo "*.disable filter=disable" >.gitattributes &&
+
+       echo test >test.disable &&
+       git -c filter.disable.clean= add test.disable 2>err &&
+       test_must_be_empty err &&
+       rm -f test.disable &&
+       git -c filter.disable.smudge= checkout -- test.disable 2>err &&
+       test_must_be_empty err
+'
+
 test_done