Subject: [PATCH 00/16] nd/list-files redesign

From: Nguyễn Thái Ngọc Duy <[email-masked]>
Date: Mon, 9 Mar 2015 17:18:18 +0700

On Tue, Feb 24, 2015 at 2:00 AM, Junio C Hamano <[email-masked]> wrote:
> Michael J Gruber <[email-masked]> 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 worktree

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

Any 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