threads / patch / 4247

patchgit status: ignore empty directories (because they cannot be added)

Subject: [PATCH] git status: ignore empty directories (because they cannot be added)

## tl;dr

4 messages between May 22, 2006 and May 23, 2006. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Matthias Lederhofer· May 22, 2006, 21:02 UTC · lore

and a new option -u / --untracked-files to show files in untracked directories.

---
A few things I'm not sure about:
- Should there be another option to disable --no-empty-directory?
- Is the option name --untracked-files ok?
- Should it be documented (probably yes :))? At the moment the
  git-status man page does not tell about any command line option at
  all but for git-commit it does not make sense.
 git-commit.sh |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)
---
1921592d5e7809f72a902cca1a38217b150800a9
Show changes to git-commit.sh +14 −3
diff --git a/git-commit.sh b/git-commit.sh
index 6ef1a9d..6785826 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -3,7 +3,7 @@ #
 # Copyright (c) 2005 Linus Torvalds
 # Copyright (c) 2006 Junio C Hamano
 
-USAGE='[-a] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit>) [--amend] [-e] [--author <author>] [[-i | -o] <path>...]'
+USAGE='[-a] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit>] [-u] [--amend] [-e] [--author <author>] [[-i | -o] <path>...]'
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
 
@@ -134,13 +134,17 @@ #'
 	report "Changed but not updated" \
 	    "use git-update-index to mark for commit"
 
+        option=""
+        if test -z "$untracked_files"; then
+            option="--directory --no-empty-directory"
+        fi
 	if test -f "$GIT_DIR/info/exclude"
 	then
-	    git-ls-files -z --others --directory \
+	    git-ls-files -z --others $option \
 		--exclude-from="$GIT_DIR/info/exclude" \
 		--exclude-per-directory=.gitignore
 	else
-	    git-ls-files -z --others --directory \
+	    git-ls-files -z --others $option \
 		--exclude-per-directory=.gitignore
 	fi |
 	perl -e '$/ = "\0";
@@ -203,6 +207,7 @@ verbose=
 signoff=
 force_author=
 only_include_assumed=
+untracked_files=
 while case "$#" in 0) break;; esac
 do
   case "$1" in
@@ -340,6 +345,12 @@ do
       verbose=t
       shift
       ;;
+  -u|--u|--un|--unt|--untr|--untra|--untrac|--untrack|--untracke|--untracked|\
+  --untracked-|--untracked-f|--untracked-fi|--untracked-fil|--untracked-file|\
+  --untracked-files)
+      untracked_files=t
+      shift
+      ;;
   --)
       shift
       break
-- 
1.3.2
Junio C Hamano· May 23, 2006, 01:11 UTC · re: Matthias Lederhofer · lore

Re: [PATCH] git status: ignore empty directories (because they cannot be added)

Matthias Lederhofer <matled@gmx.net> writes:
Show 6 quoted lines
> and a new option -u / --untracked-files to show files in untracked
> directories.
>
> ---
> A few things I'm not sure about:
> - Should there be another option to disable --no-empty-directory?

I am not sure about this. We used to show everything in a directory full of untracked directory, which was distracting and that was the reason we added --directory there. Maybe it would be less confusing if we just updated the message

	    print "#\n# Untracked files:\n";
	    print "#   (use \"git add\" to add to commit)\n";
	    print "#\n";

to say "use 'git add' on these files and files in these directories you wish to add", or something silly like that, without this patch?

Matthias Lederhofer· May 23, 2006, 05:35 UTC · re: Junio C Hamano · lore

Re: [PATCH] git status: ignore empty directories (because they cannot be added)

Show 19 quoted lines
> > and a new option -u / --untracked-files to show files in untracked
> > directories.
> >
> > ---
> > A few things I'm not sure about:
> > - Should there be another option to disable --no-empty-directory?
>
> I am not sure about this.  We used to show everything in a
> directory full of untracked directory, which was distracting and
> that was the reason we added --directory there.  Maybe it would
> be less confusing if we just updated the message
>
>           print "#\n# Untracked files:\n";
>           print "#   (use \"git add\" to add to commit)\n";
>           print "#\n";
>
> to say "use 'git add' on these files and files in these
> directories you wish to add", or something silly like that,
> without this patch?

I do not know if I understand you correctly, do you want to leave out the -u part of the patch or the whole patch?

Well, anyway, here the reasons for this patch:
- Working in a git repository with a lot of empty directories is
  annoying, because all of them show up in git status even though they
  cannot be added. With --no-empty-directories they are hidden.
- If there is a directory which may be added because it is quite
  useful to have the -u option to see what is in there to add (without
  using ls path/to/directory).
Matthias Lederhofer· May 23, 2006, 14:00 UTC · lore

Re: [PATCH] git status: ignore empty directories (because they cannot be added)

Show 8 quoted lines
> > Well, anyway, here the reasons for this patch:
> > - Working in a git repository with a lot of empty directories is
> >   annoying, because all of them show up in git status even though they
> >   cannot be added. With --no-empty-directories they are hidden.
> 
> What directories are they?  Will they some day have files that
> you might want to keep track of?  The reason for this question
> is, "otherwise you could .gitignore them".

I have been trying ruby on rails and there are some empty directories which will have files later. I would even add those empty directories if it would be possible.

Show 18 quoted lines
> > - If there is a directory which may be added because it is quite
> >   useful to have the -u option to see what is in there to add (without
> >   using ls path/to/directory).
> 
> It really depends on how many files there are in such a
> "interesting" directory _and_ other "uninteresting" directories
> full of transitory files.  The -u option that disables "skip
> contents and show only the top directory" behaviour globally
> might not be so useful in such a case -- you will see useful
> contents of an otherwise "closed" directory (because it defeats
> the --directory flag), but at the same time you would get tons
> of uninteresting files in another directory as well in such a
> case.  You are likely to end up doing ls path/to/dir after
> noticing that there are non-empty foo/ and bar/ directories that
> have no tracked files, and you know which one has files
> interesting to you.
> So I am OK with the change, but I am somewhat still doubtful how
> useful the option would be.

The case I think about is that there are some directories which are not tracked because they contain no files yet. All other directories which are uninteresting are added to .gitignore. If an untracked directory shows up in git-status one could easily check with git-status -u what can be added.

PS: I had a typo in the git mailing list e-mail address and resent my
last e-mail to the list. Your reply did not make it to the list,
perhaps you can send it again.

← back to recent threads