Re: [PATCH] log: add log.follow config option

2015-07-03 Thread Junio C Hamano
Matthieu Moy matthieu@grenoble-inp.fr writes:

 David Turner dtur...@twopensource.com writes:

 Twitter's history is almost completely linear, so it's useful for us.  

 Since it looks like the patch won't be useful outside of our context,
 I'll just rewrite it to check the pathspec count, and not upstream it
 until follow becomes more general.

 As long as it's an opt-in and that the documentation states the
 limitations clearly enough, I think it makes sense to me to have this
 upstream.

Perhaps.  But at least log -- 1 2 and log -- should not be broken
for those that set the configuration.

Unless you are counting these as also limitations, that is.
--
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] log: add log.follow config option

2015-07-03 Thread Matthieu Moy
David Turner dtur...@twopensource.com writes:

 Twitter's history is almost completely linear, so it's useful for us.  

 Since it looks like the patch won't be useful outside of our context,
 I'll just rewrite it to check the pathspec count, and not upstream it
 until follow becomes more general.

As long as it's an opt-in and that the documentation states the
limitations clearly enough, I think it makes sense to me to have this
upstream.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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] log: add log.follow config option

2015-07-02 Thread David Turner
On Wed, 2015-07-01 at 14:19 -0700, Junio C Hamano wrote:
 Matthieu Moy matthieu@grenoble-inp.fr writes:
 
  So activating --follow for all git log calls would prevent log from
  being used with several pathspecs.
 
  Or, do you have a preparation patch that allows --follow with multiple
  pathspecs? ;-)
 
  In any case, you have to test git log -- path1 path2 with the option
  activated.
 
 Or more commonly, just git log with no pathspec.
 
 I also think that it is a bad idea to force log --follow to people
 before it is made into a true feature; as it stands, it is merely a
 checkbox item.  It has too severe limitation to be used seriously
 in real projects, unless your history is completely linear.
 
 cf.
 
   http://thread.gmane.org/gmane.comp.version-control.git/269357/focus=269433

Thanks.

Twitter's history is almost completely linear, so it's useful for us.  

Since it looks like the patch won't be useful outside of our context,
I'll just rewrite it to check the pathspec count, and not upstream it
until follow becomes more general.

--
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] log: add log.follow config option

2015-07-01 Thread David Turner
Many users prefer to always use --follow with logs.  Rather than
aliasing the command, an option might be more convenient for some.

Signed-off-by: David Turner dtur...@twopensource.com
---

Why not just alias log=log --follow?

At Twitter, we manage git config centrally, but we also allow users to
add their own aliases.  We would like to turn log.follow on globally,
while not messing up any aliases users already have for log.

Also, some users might have different log aliases for different
repositories, but want to manage --follow globally.

And in the future, we might want to make log --follow the default (it
is what I usually want), so it would be nice to provide a way for
users to turn that off globally from a config option.

 builtin/log.c   |  7 +++
 t/t4206-log-follow-harder-copies.sh | 23 +++
 2 files changed, 30 insertions(+)

diff --git a/builtin/log.c b/builtin/log.c
index 8781049..11b8d82 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -31,6 +31,7 @@ static const char *default_date_mode = NULL;
 
 static int default_abbrev_commit;
 static int default_show_root = 1;
+static int default_follow = 0;
 static int decoration_style;
 static int decoration_given;
 static int use_mailmap_config;
@@ -102,6 +103,8 @@ static void cmd_log_init_defaults(struct rev_info *rev)
 {
if (fmt_pretty)
get_commit_format(fmt_pretty, rev);
+   if (default_follow)
+   DIFF_OPT_SET(rev-diffopt, FOLLOW_RENAMES);
rev-verbose_header = 1;
DIFF_OPT_SET(rev-diffopt, RECURSIVE);
rev-diffopt.stat_width = -1; /* use full terminal width */
@@ -390,6 +393,10 @@ static int git_log_config(const char *var, const char 
*value, void *cb)
default_show_root = git_config_bool(var, value);
return 0;
}
+   if (!strcmp(var, log.follow)) {
+   default_follow = git_config_bool(var, value);
+   return 0;
+   }
if (skip_prefix(var, color.decorate., slot_name))
return parse_decorate_color_config(var, slot_name, value);
if (!strcmp(var, log.mailmap)) {
diff --git a/t/t4206-log-follow-harder-copies.sh 
b/t/t4206-log-follow-harder-copies.sh
index ad29e65..6b2f3b9 100755
--- a/t/t4206-log-follow-harder-copies.sh
+++ b/t/t4206-log-follow-harder-copies.sh
@@ -53,4 +53,27 @@ test_expect_success \
 'validate the output.' \
 'compare_diff_patch current expected'
 
+test_expect_success \
+'git config log.follow works like --follow' \
+'test_config log.follow true 
+ git log --name-status --pretty=format:%s  path1  current'
+
+test_expect_success \
+'validate the output.' \
+'compare_diff_patch current expected'
+
+test_expect_success \
+'git config log.follow is overridden by --no-follow' \
+'test_config log.follow true 
+ git log --no-follow --name-status --pretty=format:%s  path1  current'
+
+cat expected \EOF
+Copy path1 from path0
+A  path1
+EOF
+
+test_expect_success \
+'validate the output.' \
+'compare_diff_patch current expected'
+
 test_done
-- 
2.0.5.499.g01f6352.dirty-twtrsrc

--
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] log: add log.follow config option

2015-07-01 Thread Matthieu Moy
David Turner dtur...@twopensource.com writes:

 diff --git a/builtin/log.c b/builtin/log.c
 index 8781049..11b8d82 100644
 --- a/builtin/log.c
 +++ b/builtin/log.c
 @@ -31,6 +31,7 @@ static const char *default_date_mode = NULL;
  
  static int default_abbrev_commit;
  static int default_show_root = 1;
 +static int default_follow = 0;
  static int decoration_style;
  static int decoration_given;
  static int use_mailmap_config;
 @@ -102,6 +103,8 @@ static void cmd_log_init_defaults(struct rev_info *rev)
  {
   if (fmt_pretty)
   get_commit_format(fmt_pretty, rev);
 + if (default_follow)
 + DIFF_OPT_SET(rev-diffopt, FOLLOW_RENAMES);

Doesn't it activate --follow all the time, including when the user
provides several paths?

In this case, you get this:

$ git log --follow *.c
fatal: --follow requires exactly one pathspec

So activating --follow for all git log calls would prevent log from
being used with several pathspecs.

Or, do you have a preparation patch that allows --follow with multiple
pathspecs? ;-)

In any case, you have to test git log -- path1 path2 with the option
activated.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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] log: add log.follow config option

2015-07-01 Thread Junio C Hamano
Matthieu Moy matthieu@grenoble-inp.fr writes:

 So activating --follow for all git log calls would prevent log from
 being used with several pathspecs.

 Or, do you have a preparation patch that allows --follow with multiple
 pathspecs? ;-)

 In any case, you have to test git log -- path1 path2 with the option
 activated.

Or more commonly, just git log with no pathspec.

I also think that it is a bad idea to force log --follow to people
before it is made into a true feature; as it stands, it is merely a
checkbox item.  It has too severe limitation to be used seriously
in real projects, unless your history is completely linear.

cf.

  http://thread.gmane.org/gmane.comp.version-control.git/269357/focus=269433
--
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