On Tue, Feb 24, 2015 at 2:00 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
> Michael J Gruber <git@drmicha.warpmail.net> writes: > >> status, status -s and the like are in an ordinary user's tool box. >> ls-files isn't, at least not with "-t", which we even mark as deprecated. >> >> That makes me wonder, though, how difficult it would be to >> wt_status_collect_unchanged() and to leverage the status machinery >> rather than ls-files. > > Good point. wt-status feels like a much better infrastructure to > build on than "ls-files -t", which should die ;-). Especially if > the command is interested in showing the state of the working tree > files relative to the tree of HEAD, as "ls-files" is purely between > the index and the working tree.
So here it is. Except the first 4 patches identical with 'nd/list-files' in 'pu' and not reposted here, the rest is rewritten using wt-status.c as the base. Documentation and tests are missing. Probably bugs lurking too. I just want to check if the UI makes sense. Full series is available at
https://github.com/pclouds/git/commits/ls
if you want to pull and try out quickly. With this we got:
usage: git list-files [options] [<pathspec>...]
Filter options
-c, --cached show cached files (default)
-o, --others show untracked files
-i, --ignored show ignored files
-u, --unmerged show unmerged files
-a, --added show added files compared to HEAD
-d, --deleted show deleted files compared to HEAD
-m, --modified show modified files compared to HEAD
-A, --wt-added show added files in worktree
-D, --wt-deleted show deleted files in worktree
-M, --wt-modified show modified files on worktreeOther
-C, --column[=<style>]
show files in columns
-1 shortcut for --no-column
--max-depth <depth> descend at most <depth> levels
-R, --recursive shortcut for --max-depth=-1
--color[=<when>] show color
-F, --classify append indicator (one of */=>@|) to entriesAny filter option can be combined with others. Status code is the same with 'git status --porcelain'. In fact options -[iouadmADM] are basically the 'git status --porcelain' with bells and whistles.
-- 2.3.0.rc1.137.g477eb31