Re: [PATCH 00/19] Add git-list-files

2014-12-02 Thread Duy Nguyen
On Tue, Dec 2, 2014 at 3:02 AM, Junio C Hamano gits...@pobox.com wrote:
 Does this contain a lot of borrowed code or something?  The style
 violation in the patches are unusually high, even compared with your
 other series.

The first one is from coreutils, but I reformatted (and trimmed) to
fit Git. I recall you had a script to spot style violation, right?
Where can I find the script? Else I'll reread CodingGuidlines again
and go through the patch.


 I've tried to fix it up and will push out the result on 'pu' if
 things work OK, but this does not even have tests, so it is unlikely
 that it would break anything but itself ;-)

Heh.. ;) Next version will come with tests. Thanks for the reminder.
-- 
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 00/19] Add git-list-files

2014-12-02 Thread Duy Nguyen
On Tue, Dec 2, 2014 at 12:42 PM, Jeff King p...@peff.net wrote:
 On Sun, Nov 30, 2014 at 03:55:48PM +0700, Nguyễn Thái Ngọc Duy wrote:

 This is something else that's been sitting in my tree for a while now.
 It adds git list-files, intended to be aliased as ls with your
 favourite display options.

 When I read the subject, I thought why isn't this called git-ls?. Then
 when I read this paragraph, I thought if the point is for everybody to
 make their own ls alias, why do we need list-files at all, instead of
 just adding options to ls-files?

 I'll let you decide which (if any) you'd like to answer. :)

 My guesses:

   1. If it were git-ls, it would stomp on existing aliases people have
  constructed.

Yes, Matthew Moy (I think) at least had this git-ls alias and he did
complain. Also we could not agree on what should be the good defaults
for git-ls if it's built in.

   2. If it is a wrapper around ls-files, then the options may be
  constrained; ls-files already squats on useful options like -d
  (which, if we are matching traditional ls, is more like our -t).

Also right. I want to keep option names close to GNU ls.

 As a side note, I wonder if it would be sensible to whitelist some
 commands as porcelain, and allow aliases to override them (either
 entirely, or just to add-in some options).

Agreed. Maybe not all porcelain (some like git-branch almost functions
like plumbing).

We also need away to stop alias (e.g. in scripts). In scripts I can
specify full path to a command to make sure I won't hit an alias. I
guess we can't do the same here. The closet to full path is git-cmd
form, as opposed to git cmd form) but I think we don't want to bring
back git-cmd. Maybe just a git --no-alias cmd and GIT_NO_ALIAS..

And if  people now can override standard commands, I think it makes
sense to ship a default alias set (with lower priority than
user-defined aliases). After all people need to check twice if the
command they type really means what they think it is..
-- 
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 00/19] Add git-list-files

2014-12-02 Thread Michael J Gruber
Jeff King schrieb am 02.12.2014 um 06:42:
 On Sun, Nov 30, 2014 at 03:55:48PM +0700, Nguyễn Thái Ngọc Duy wrote:
 
 This is something else that's been sitting in my tree for a while now.
 It adds git list-files, intended to be aliased as ls with your
 favourite display options.
 
 When I read the subject, I thought why isn't this called git-ls?. Then
 when I read this paragraph, I thought if the point is for everybody to
 make their own ls alias, why do we need list-files at all, instead of
 just adding options to ls-files?
 
 I'll let you decide which (if any) you'd like to answer. :)
 
 My guesses:
 
   1. If it were git-ls, it would stomp on existing aliases people have
  constructed.
 
   2. If it is a wrapper around ls-files, then the options may be
  constrained; ls-files already squats on useful options like -d
  (which, if we are matching traditional ls, is more like our -t).
 
 I somewhat feel like (1) can be mitigated by the fact that your command
 is what people were probably trying to approximate with their aliases,
 and that as porcelain it should be very configurable (so they should be
 able to accomplish the same things as their aliases). But I dunno. I do
 not have an ls alias, so I am biased. :)
 
 As a side note, I wonder if it would be sensible to whitelist some
 commands as porcelain, and allow aliases to override them (either
 entirely, or just to add-in some options).
 
 -Peff
 

I'd like to second all that (+1, like).

User friendly listing of files in the git repo is dearly needed, and
following names and default behaviour of mv/cp/ls is a way to follow the
principle of least surprise.

While ls might be an alias for many, I'm sure stage was for quite a
few people, too. We should be able to take any new name for new command,
regardless of aliases people may be using.

Allowing to alias at least porcelain commands, at least to the extent of
adding default options, is something we've talked about before and which
would have prevented us from the increasing bloat by the default
changing config knobs. git -c ... somehow took us down the other road.

I'm still dreaming of a git future where either git foo --bar=baz is
equivalent to git -c foo.bar=baz foo (i.e. unify the naming), or we
are simply able to alias foo to foo --bar=baz if that is what we
like as default (i.e. get rid of many of the special config knobs).

Right now, we have two sets of options with often differing names.

Also, we could ship a few commonly used aliases (such as co=checkout,
ci=commit, st=status) which could be overriden easily.

Michael
--
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 00/19] Add git-list-files

2014-12-02 Thread Jeff King
On Tue, Dec 02, 2014 at 06:45:52PM +0700, Duy Nguyen wrote:

  As a side note, I wonder if it would be sensible to whitelist some
  commands as porcelain, and allow aliases to override them (either
  entirely, or just to add-in some options).
 
 Agreed. Maybe not all porcelain (some like git-branch almost functions
 like plumbing).

Yeah, many things straddle the plumbing/porcelain line (e.g., commit
is porcelain, but it's basically the only sane way for scripts to make a
commit, so many use it). So I'd pick just a few things that should be
safe to override.

 We also need away to stop alias (e.g. in scripts).

Do we? I think the point of allowing this only for porcelain is that you
do not have to care about scripts. That is, a script running git ls
would get whatever the user's preferences are for ls output. A script
parsing the output of ls deserves whatever crap it gets.

 In scripts I can specify full path to a command to make sure I won't
 hit an alias. I guess we can't do the same here. The closet to full
 path is git-cmd form, as opposed to git cmd form) but I think we
 don't want to bring back git-cmd. Maybe just a git --no-alias cmd
 and GIT_NO_ALIAS..

Yeah, I think --no-alias/GIT_NO_ALIAS would work. But the problem is
one of compatibility. Scripts are not written to specify no-alias, so
you cannot just turn on the override-commands-with-aliases feature
immediately (and likewise, scripts have little incentive to bother
annotating their calls if it the override feature is not enabled).

-Peff
--
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 00/19] Add git-list-files

2014-12-01 Thread Junio C Hamano
Does this contain a lot of borrowed code or something?  The style
violation in the patches are unusually high, even compared with your
other series.

I've tried to fix it up and will push out the result on 'pu' if
things work OK, but this does not even have tests, so it is unlikely
that it would break anything but itself ;-)

--
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 00/19] Add git-list-files

2014-12-01 Thread Jeff King
On Sun, Nov 30, 2014 at 03:55:48PM +0700, Nguyễn Thái Ngọc Duy wrote:

 This is something else that's been sitting in my tree for a while now.
 It adds git list-files, intended to be aliased as ls with your
 favourite display options.

When I read the subject, I thought why isn't this called git-ls?. Then
when I read this paragraph, I thought if the point is for everybody to
make their own ls alias, why do we need list-files at all, instead of
just adding options to ls-files?

I'll let you decide which (if any) you'd like to answer. :)

My guesses:

  1. If it were git-ls, it would stomp on existing aliases people have
 constructed.

  2. If it is a wrapper around ls-files, then the options may be
 constrained; ls-files already squats on useful options like -d
 (which, if we are matching traditional ls, is more like our -t).

I somewhat feel like (1) can be mitigated by the fact that your command
is what people were probably trying to approximate with their aliases,
and that as porcelain it should be very configurable (so they should be
able to accomplish the same things as their aliases). But I dunno. I do
not have an ls alias, so I am biased. :)

As a side note, I wonder if it would be sensible to whitelist some
commands as porcelain, and allow aliases to override them (either
entirely, or just to add-in some options).

-Peff
--
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 00/19] Add git-list-files

2014-11-30 Thread Nguyễn Thái Ngọc Duy
This is something else that's been sitting in my tree for a while now.
It adds git list-files, intended to be aliased as ls with your
favourite display options.

As you can guess it's a friendlier version (and pretty close to GNU
ls) of ls-files. On one hand, I think this is a nice addition. On the
other hand, code bloat. Last version on the list is

http://thread.gmane.org/gmane.comp.version-control.git/244530/focus=245464

Nguyễn Thái Ngọc Duy (19):
  ls_colors.c: add $LS_COLORS parsing code
  ls_colors.c: parse color.ls.* from config file
  ls_colors.c: add a function to color a file name
  ls_colors.c: highlight submodules like directories
  ls-files: buffer full item in strbuf before printing
  ls-files: add --color to highlight file names
  ls-files: add --column
  ls-files: support --max-depth
  Add git-list-files, a user friendly version of ls-files and more
  list-files: -u does not imply showing stages
  list-files: add -R/--recursive short for --max-depth=-1
  list-files: add -1 short for --no-column
  list-files: add -t back
  list-files: sort output and remove duplicates
  list-files: do not show duplicate cached entries
  list-files: show directories as well as files
  list-files: add -F/--classify
  list-files -F: show submodules with the new indicator ''
  list-files: -M aka diff-cached

 .gitignore |   1 +
 Documentation/config.txt   |  22 ++
 Documentation/git-list-files.txt (new) |  99 +++
 Documentation/git-ls-files.txt |  20 ++
 Makefile   |   2 +
 builtin/ls-files.c | 415 ---
 color.h|  10 +
 command-list.txt   |   1 +
 git.c  |   1 +
 ls_colors.c (new)  | 496 +
 10 files changed, 1034 insertions(+), 33 deletions(-)
 create mode 100644 Documentation/git-list-files.txt
 create mode 100644 ls_colors.c

-- 
2.2.0.60.gb7b3c64

--
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