# Suggestion: git status --untracked

5 messages from 2008-02-11 to 2008-02-11. Participants: Rafael Garcia-Suarez, Matthieu Moy, Jeff King, Jakub Narebski.
Thread: https://gitlist.dev/t/12029

## Rafael Garcia-Suarez, 2008-02-11 09:46

Subject: Suggestion: git status --untracked
Message-ID: <b77c1dce0802110146o708e26a7lef56683f6b823365@mail.gmail.com>
URL: https://gitlist.dev/e/b77c1dce0802110146o708e26a7lef56683f6b823365%40mail.gmail.com

```
I find myself wanting sometimes to filter out the output of
git-status, to feed it to another command (for example, git-add, or
rm, or cat >> .gitignore). However it's not currently very easy to
parse in a one-liner.

I'm suggesting to add options to control this behaviour. My suggestion
would be (for a start) to add an option --untracked that will list all
untracked files on stdout, without a leading "#\t", and without
listing the added / modified / removed files.

I'm willing to implement it, but I'd like to have some discussion
about the interface first. Is that a good idea at all, and how could
it be improved interface-wise?

```

## Matthieu Moy, 2008-02-11 10:13

Subject: Re: Suggestion: git status --untracked
Message-ID: <vpq63wvztqc.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpq63wvztqc.fsf%40bauges.imag.fr
In-Reply-To: <b77c1dce0802110146o708e26a7lef56683f6b823365@mail.gmail.com>

```
"Rafael Garcia-Suarez" <rgarciasuarez@gmail.com> writes:

> I find myself wanting sometimes to filter out the output of
> git-status, to feed it to another command (for example, git-add, or
> rm, or cat >> .gitignore). However it's not currently very easy to
> parse in a one-liner.
>
> I'm suggesting to add options to control this behaviour. My suggestion
> would be (for a start) to add an option --untracked that will list all
> untracked files on stdout, without a leading "#\t", and without
> listing the added / modified / removed files.

Actually, it's already available (since a few weeks in master IIRC,
not sure whether it's in the latest release), as

  git ls-files --exclude-standard -o

The --exclude-standard tells git ls-files to read .gitignore and
friends as most commands do, and -o means "show 'other' files".

Older gits didn't have the --exclude-standard, so you had to say
--exclude-from=.git/info/exclude --exclude-per-directory=.gitignore
(or stg like that) instead.

-- 
Matthieu

```

## Jeff King, 2008-02-11 10:23

Subject: Re: Suggestion: git status --untracked
Message-ID: <20080211102359.GA5916@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20080211102359.GA5916%40coredump.intra.peff.net
In-Reply-To: <b77c1dce0802110146o708e26a7lef56683f6b823365@mail.gmail.com>

```
On Mon, Feb 11, 2008 at 10:46:25AM +0100, Rafael Garcia-Suarez wrote:

> I find myself wanting sometimes to filter out the output of
> git-status, to feed it to another command (for example, git-add, or
> rm, or cat >> .gitignore). However it's not currently very easy to
> parse in a one-liner.

Here's a one-liner:

  git status | sed -ne '/^# Untracked/,${s/#\t//p}'

Unfortunately it is both specific to GNU sed as well as horribly
unreadable.

> I'm suggesting to add options to control this behaviour. My suggestion
> would be (for a start) to add an option --untracked that will list all
> untracked files on stdout, without a leading "#\t", and without
> listing the added / modified / removed files.

The problem you are running into is that "git status" has a specific
purpose: generating the commit message template. Fortunately, it is
built on top of plumbing that is much easier to parse:

  git ls-files -o --exclude-standard

should produce the results you want. It even has a '-z' option to do
things safely in the face of filenames with newlines, and can limit
itself to partial paths.

-Peff

```

## Rafael Garcia-Suarez, 2008-02-11 10:54

Subject: Re: Suggestion: git status --untracked
Message-ID: <b77c1dce0802110254g724d4218l7219c9d9f9ec8027@mail.gmail.com>
URL: https://gitlist.dev/e/b77c1dce0802110254g724d4218l7219c9d9f9ec8027%40mail.gmail.com
In-Reply-To: <vpq63wvztqc.fsf@bauges.imag.fr>

```
On 11/02/2008, Matthieu Moy <Matthieu.Moy@imag.fr> wrote:
> Actually, it's already available (since a few weeks in master IIRC,
> not sure whether it's in the latest release), as
>
>   git ls-files --exclude-standard -o
>
> The --exclude-standard tells git ls-files to read .gitignore and
> friends as most commands do, and -o means "show 'other' files".

Ah, many thanks. (Still not familiar with the plumbing.) I'm already
adding an alias for that command in my config!

```

## Jakub Narebski, 2008-02-11 10:56

Subject: Re: Suggestion: git status --untracked
Message-ID: <m3bq6ng3sb.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3bq6ng3sb.fsf%40localhost.localdomain
In-Reply-To: <b77c1dce0802110146o708e26a7lef56683f6b823365@mail.gmail.com>

```
"Rafael Garcia-Suarez" <rgarciasuarez@gmail.com> writes:

> I find myself wanting sometimes to filter out the output of
> git-status, to feed it to another command (for example, git-add, or
> rm, or cat >> .gitignore). However it's not currently very easy to
> parse in a one-liner.

Probably because git-status is porcelain, and is meant to be used by
end user, not in scripts.
 
> I'm suggesting to add options to control this behaviour. My suggestion
> would be (for a start) to add an option --untracked that will list all
> untracked files on stdout, without a leading "#\t", and without
> listing the added / modified / removed files.
> 
> I'm willing to implement it, but I'd like to have some discussion
> about the interface first. Is that a good idea at all, and how could
> it be improved interface-wise?

To list all untracked files you can use plumbing command, namely
"git ls-files --others" (Show other files in the output), or perhaps
"git ls-files -o --directory --no-empty-directory --exclude-standard"

If you want to use git command in script, it is better to find
appropriate plumbing command to do what you want, for example
git-ls-files instead of git-status to list untracked files,
git-symbolic-ref instead of git-branch to get current branch name,
etc.

-- 
Jakub Narebski
Poland
ShadeHawk on #git

```
