Re: [PATCH] added git-config support for diff.relative setting

2014-12-11 Thread Duy Nguyen
On Thu, Dec 11, 2014 at 2:28 PM, Kelson kel...@shysecurity.com wrote:
 @@ -270,6 +270,14 @@ int git_diff_basic_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 (starts_with(var, submodule.))
 return parse_submodule_config_option(var, value);


This affects more than just git-diff. git_diff_ui_config() may be a
better place.
-- 
Duy
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] added git-config support for diff.relative setting

2014-12-11 Thread Kelson
That is quite manageable. I was concerned that --relative changes the UI 
(relative paths) and behavior (excluding files outside the current 
directory), which might not be clear if placed in just the UI component. 
You make a great point that git_diff_basic_config drives other commands 
though, like git-bisect, which --relative would not effect.


-Original Message-
From: Duy Nguyen pclo...@gmail.com
Sent: 12/11/2014 08:37 AM
To: Kelson kel...@shysecurity.com
CC: Git Mailing List git@vger.kernel.org
Subject: Re: [PATCH] added git-config support for diff.relative setting

On Thu, Dec 11, 2014 at 2:28 PM, Kelson kel...@shysecurity.com wrote:

@@ -270,6 +270,14 @@ int git_diff_basic_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 (starts_with(var, submodule.))
 return parse_submodule_config_option(var, value);



This affects more than just git-diff. git_diff_ui_config() may be a
better place.


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] added git-config support for diff.relative setting

2014-12-10 Thread Kelson
By default, git-diff shows changes and pathnames relative to the 
repository root.
Setting the diff.relative config option to true shows pathnames 
relative to

the current directory and excludes changes outside this directory.
---
 Documentation/diff-config.txt |  6 ++
 diff.c|  8 
 t/t4045-diff-relative.sh  | 21 +
 3 files changed, 35 insertions(+)

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index b001779..10f183f 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -182,3 +182,9 @@ diff.algorithm::
low-occurrence common elements.
 --
 +
+
+diff.relative::
+   By default, linkgit:git-diff[1] shows changes and pathnames
+   relative to the repository root. Setting this variable to
+   `true` shows pathnames relative to the current directory and
+   excludes changes outside this directory.
diff --git a/diff.c b/diff.c
index d1bd534..22daa2f 100644
--- a/diff.c
+++ b/diff.c
@@ -270,6 +270,14 @@ int git_diff_basic_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 (starts_with(var, submodule.))
return parse_submodule_config_option(var, value);

diff --git a/t/t4045-diff-relative.sh b/t/t4045-diff-relative.sh
index 3950f50..8c8fe0b 100755
--- a/t/t4045-diff-relative.sh
+++ b/t/t4045-diff-relative.sh
@@ -29,6 +29,23 @@ test_expect_success -p $* 
 
 }

+check_config() {
+expect=$1; shift
+cat expected EOF
+diff --git a/$expect b/$expect
+new file mode 100644
+index 000..25c05ef
+--- /dev/null
 b/$expect
+@@ -0,0 +1 @@
++other content
+EOF
+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_numstat() {
 expect=$1; shift
 cat expected EOF
@@ -69,5 +86,9 @@ for type in diff numstat stat raw; do
check_$type file2 --relative=subdir
check_$type dir/file2 --relative=sub
 done
+for type in config; do
+   check_$type file2 subdir/
+   check_$type file2 subdir
+done

 test_done
--
1.9.1
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html