Suggestion: git status --untracked

Previous thread: [DOC BUG] branch.autosetupmerge defaults to true, not false by Kalle Olavi Niemitalo on Monday, February 11, 2008 - 1:46 am. (4 messages)

Next thread: libcrypto core dump in 64bit by H.Merijn Brand on Monday, February 11, 2008 - 3:28 am. (3 messages)
From: Rafael Garcia-Suarez
Date: Monday, February 11, 2008 - 2:46 am

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

From: Matthieu Moy
Date: Monday, February 11, 2008 - 3:13 am

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
-

From: Rafael Garcia-Suarez
Date: Monday, February 11, 2008 - 3:54 am

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

From: Jeff King
Date: Monday, February 11, 2008 - 3:23 am

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

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
-

From: Jakub Narebski
Date: Monday, February 11, 2008 - 3:56 am

Probably because git-status is porcelain, and is meant to be used by

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
-

Previous thread: [DOC BUG] branch.autosetupmerge defaults to true, not false by Kalle Olavi Niemitalo on Monday, February 11, 2008 - 1:46 am. (4 messages)

Next thread: libcrypto core dump in 64bit by H.Merijn Brand on Monday, February 11, 2008 - 3:28 am. (3 messages)