diff options
author | Brandon Phillips <kelson@shysecurity.com> | 2015-01-06 11:19:55 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-01-07 09:29:06 -0800 |
commit | b48d3f810cd0dc1c9805ea211b4a87ff9fcabdd0 (patch) | |
tree | 6cd39bef2a63c7b75e9ab80adf7b2bf7677bfe77 | |
parent | c5b9256360b06efb9453c1627b78b14598e288b8 (diff) | |
download | git-b48d3f810cd0dc1c9805ea211b4a87ff9fcabdd0.tar.gz |
diff: teach --no-relative to override earlier --relative
Teach --no-relative option to git-diff, which overrides --relative
that appears earlier on the command line.
Signed-off-by: Brandon Phillips <kelson@shysecurity.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Documentation/diff-options.txt | 4 | ||||
-rw-r--r-- | diff.c | 2 | ||||
-rwxr-xr-x | t/t4045-diff-relative.sh | 46 |
3 files changed, 49 insertions, 3 deletions
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 6cb083aae5..2b15050763 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -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 and include all changes in the + repository. endif::git-format-patch[] -a:: @@ -3695,6 +3695,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")) diff --git a/t/t4045-diff-relative.sh b/t/t4045-diff-relative.sh index 3950f5034d..ccd67c77ba 100755 --- a/t/t4045-diff-relative.sh +++ b/t/t4045-diff-relative.sh @@ -12,8 +12,8 @@ test_expect_success 'setup' ' git commit -m one ' -check_diff() { -expect=$1; shift +store_diff_relative() { +expect=$1; cat >expected <<EOF diff --git a/$expect b/$expect new file mode 100644 @@ -23,12 +23,52 @@ index 0000000..25c05ef @@ -0,0 +1 @@ +other content EOF +} + +store_diff_absolute() { +expect=$1; +cat >expected <<EOF +diff --git a/file1 b/file1 +new file mode 100644 +index 0000000..d95f3ad +--- /dev/null ++++ b/file1 +@@ -0,0 +1 @@ ++content +diff --git a/subdir/file2 b/subdir/file2 +new file mode 100644 +index 0000000..25c05ef +--- /dev/null ++++ b/subdir/file2 +@@ -0,0 +1 @@ ++other content +EOF +} + +check_diff() { +store_diff_relative $1; shift test_expect_success "-p $*" " git diff -p $* HEAD^ >actual && test_cmp expected actual " } +check_norel_pre() { +store_diff_relative $1; shift +test_expect_success "-p --no-relative $*" " + git diff -p --no-relative $* HEAD^ >actual && + test_cmp expected actual +" +} + +check_norel_post() { +store_diff_absolute $1; shift +test_expect_success "-p $* --no-relative" " + git diff -p $* --no-relative HEAD^ >actual && + test_cmp expected actual +" +} + check_numstat() { expect=$1; shift cat >expected <<EOF @@ -64,7 +104,7 @@ test_expect_success "--raw $*" " " } -for type in diff numstat stat raw; do +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 |