git-config support for diff.relative setting
PATCH v3 2/2 git-config support for diff.relative setting
added support for git diff --no-relative (code, documentation, and tests)
git-diff --no-relative overrides diff.relative config setting and prior git-diff --relative[=<path>] options.
--- Documentation/diff-config.txt | 1 + Documentation/diff-options.txt | 4 +++ diff.c | 2 ++ t/t4045-diff-relative.sh | 56 +++++++++++++++++++++++++++++++++--------- 4 files changed, 51 insertions(+), 12 deletions(-)
Documentation/diff-config.txt +1 -0
@@ -107,6 +107,7 @@ diff.relative:: Show pathnames relative to the current directory and exclude changes outside this directory; equivalent to the 'git diff' option '--relative'. + Overridden by the '--no-relative' linkgit:git-diff[1] option. diff.renameLimit:: The number of files to consider when performing the copy/rename
Documentation/diff-options.txt +4 -0
@@ -448,6 +448,10 @@ ifndef::git-format-patch[] not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. + +--no-relative:: + Turn off relative pathnames, even when the configuration + file gives the default to do so. endif::git-format-patch[] -a::
diff.c +2 -0
@@ -3703,6 +3703,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)DIFF_OPT_SET (options,RELATIVE_NAME ); options->prefix = arg; } +else if (!strcmp (arg,"--no-relative" )) +DIFF_OPT_CLR (options,RELATIVE_NAME );/* xdiff options */ else if (!strcmp (arg,"--minimal" ))
t/t4045-diff-relative.sh +44 -12
93 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 2/2 git-config support for diff.relative setting
added support for git diff --no-relative (code, documentation, and tests)
git-diff --no-relative overrides diff.relative config setting and prior git-diff --relative[=<path>] options.
--- Documentation/diff-config.txt | 1 + Documentation/diff-options.txt | 4 +++ diff.c | 2 ++ t/t4045-diff-relative.sh | 56 +++++++++++++++++++++++++++++++++--------- 4 files changed, 51 insertions(+), 12 deletions(-)
Documentation/diff-config.txt +1 -0
@@ -107,6 +107,7 @@ diff.relative:: Show pathnames relative to the current directory and exclude changes outside this directory; equivalent to the 'git diff' option '--relative'. + Overridden by the '--no-relative' linkgit:git-diff[1] option. diff.renameLimit:: The number of files to consider when performing the copy/rename
Documentation/diff-options.txt +4 -0
@@ -448,6 +448,10 @@ ifndef::git-format-patch[] not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. + +--no-relative:: + Turn off relative pathnames, even when the configuration + file gives the default to do so. endif::git-format-patch[] -a::
diff.c +2 -0
@@ -3703,6 +3703,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)DIFF_OPT_SET (options,RELATIVE_NAME ); options->prefix = arg; } +else if (!strcmp (arg,"--no-relative" )) +DIFF_OPT_CLR (options,RELATIVE_NAME );/* xdiff options */ else if (!strcmp (arg,"--minimal" ))
t/t4045-diff-relative.sh +44 -12
93 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH 2/2 support for --no-relative and diff.relative
added diff.relative setting for git-diff (code, documentation, and tests)
git-config diff.relative=true causes git diff to behave like git diff --relative. Overridden by git diff --no-relative.
--- Documentation/diff-config.txt | 6 ++++++ diff.c | 8 ++++++++ t/t4045-diff-relative.sh | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+)
Documentation/diff-config.txt +6 -0
@@ -103,6 +103,12 @@ diff.orderfile:: one shell glob pattern per line. Can be overridden by the '-O' option to linkgit:git-diff[1]. +diff.relative:: + Show pathnames relative to the current directory and exclude + changes outside this directory; equivalent to the 'git diff' + option '--relative'. + Overridden by the '--no-relative' linkgit:git-diff[1] option. + diff.renameLimit:: The number of files to consider when performing the copy/rename detection; equivalent to the 'git diff' option '-l'.
diff.c +8 -0
@@ -223,6 +223,14 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)return 0 ; } +if (!strcmp (var,"diff.relative" )) { +if (git_config_bool (var, value)) +DIFF_OPT_SET (&default_diff_options,RELATIVE_NAME ); +else +DIFF_OPT_CLR (&default_diff_options,RELATIVE_NAME ); +return 0 ; + } +if (git_color_config (var, value, cb) <0 )return -1 ;
t/t4045-diff-relative.sh +20 -0
@@ -104,10 +104,30 @@ test_expect_success "--raw $*" " " } +check_config() { +store_diff_relative $1; shift +test_expect_success "git-config diff.relative=true in $1" " + (cd $1; git -c diff.relative=true diff -p HEAD^ >../actual) && + test_cmp expected actual +" +} + +check_config_no_relative() { +store_diff_absolute $1; shift +test_expect_success "--no-relative w/ git-config diff.relative=true in $1" " + (cd $1; git -c diff.relative=true diff --no-relative -p HEAD^ >../actual) && + test_cmp expected actual +" +} + for type in diff numstat stat raw norel_pre norel_post; do check_$type file2 --relative=subdir/ check_$type file2 --relative=subdir check_$type dir/file2 --relative=sub done +for type in config config_no_relative; do + check_$type file2 subdir/ + check_$type file2 subdir +done test_done
--
1.9.1
PATCH 2/2 support for --no-relative and diff.relative
added diff.relative setting for git-diff (code, documentation, and tests)
git-config diff.relative=true causes git diff to behave like git diff --relative. Overridden by git diff --no-relative.
--- Documentation/diff-config.txt | 6 ++++++ diff.c | 8 ++++++++ t/t4045-diff-relative.sh | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+)
Documentation/diff-config.txt +6 -0
@@ -103,6 +103,12 @@ diff.orderfile:: one shell glob pattern per line. Can be overridden by the '-O' option to linkgit:git-diff[1]. +diff.relative:: + Show pathnames relative to the current directory and exclude + changes outside this directory; equivalent to the 'git diff' + option '--relative'. + Overridden by the '--no-relative' linkgit:git-diff[1] option. + diff.renameLimit:: The number of files to consider when performing the copy/rename detection; equivalent to the 'git diff' option '-l'.
diff.c +8 -0
@@ -223,6 +223,14 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)return 0 ; } +if (!strcmp (var,"diff.relative" )) { +if (git_config_bool (var, value)) +DIFF_OPT_SET (&default_diff_options,RELATIVE_NAME ); +else +DIFF_OPT_CLR (&default_diff_options,RELATIVE_NAME ); +return 0 ; + } +if (git_color_config (var, value, cb) <0 )return -1 ;
t/t4045-diff-relative.sh +20 -0
@@ -104,10 +104,30 @@ test_expect_success "--raw $*" " " } +check_config() { +store_diff_relative $1; shift +test_expect_success "git-config diff.relative=true in $1" " + (cd $1; git -c diff.relative=true diff -p HEAD^ >../actual) && + test_cmp expected actual +" +} + +check_config_no_relative() { +store_diff_absolute $1; shift +test_expect_success "--no-relative w/ git-config diff.relative=true in $1" " + (cd $1; git -c diff.relative=true diff --no-relative -p HEAD^ >../actual) && + test_cmp expected actual +" +} + for type in diff numstat stat raw norel_pre norel_post; do check_$type file2 --relative=subdir/ check_$type file2 --relative=subdir check_$type dir/file2 --relative=sub done +for type in config config_no_relative; do + check_$type file2 subdir/ + check_$type file2 subdir +done test_done
--
1.9.1
Re: [PATCH 2/2] support for --no-relative and diff.relative
In reply to [email protected]These two patches
* bp/diff-relative-config (2015-01-07) 2 commits
- diff: teach diff.relative to give default to --relative=<value>
- diff: teach --no-relative to override earlier --relative
have been sitting in my Undecided pile, primarily because I am wary of touching a core command like "diff" with just me reviewing. I think they look reasonably safe (especially since the configuration parsing is done only in diff_ui_config()), but I may have overlooked something obvious and silly.
Another set or two of eyeballs are very much appreciated.
Thanks.