From 6d3e9d21d1bfa0a024bbf5758c6f6e55086deac8 Mon Sep 17 00:00:00 2001
From: Richard Hartmann <richih@debian.org>
Date: Sun, 29 Nov 2015 12:41:37 +0100
Subject: [PATCH] vcsh: Default to `git ls-files --exclude-standard`

github: Closes richih/vcsh#181
---
 doc/vcsh.1.ronn | 12 +++++++-----
 vcsh            | 12 ++++++++----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 19daed5..2bf8a77 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -19,7 +19,7 @@ vcsh(1) - Version Control System for $HOME - multiple Git repositories in $HOME
 
 `vcsh` list-tracked [<repo>]
 
-`vcsh` list-untracked [<-r>] [<repo>]
+`vcsh` list-untracked [<-a>] [<-r>] [<repo>]
 
 `vcsh` pull
 
@@ -121,12 +121,14 @@ an interactive user.
 * list-untracked:
   List all files NOT tracked by vcsh.
 
+  `-a`: Show all files.
+  By default, the `git ls-files --exclude-standard` is called.
+
+  `-r`: Recursive mode.
   By default, the file list is shallow and stops at directory levels where
-  possible. If you prefer to get a list of all files, append `-r` for
-  recursive mode.
+  possible.
 
-  If you want to list files not tracked by a specific repository, simply
-  append the repository's name last.
+  `$repo`: List files not tracked by this specific repository.
 
 * pull:
   Pull from all vcsh remotes.
diff --git a/vcsh b/vcsh
index 8bfafab..4da3547 100755
--- a/vcsh
+++ b/vcsh
@@ -112,7 +112,8 @@ help() {
    list-tracked \\
         [<repo>]        List all files tracked all or one repositories
    list-untracked \\
-        [<-r>] [<repo>] List all files not tracked by all or one repositories
+        [<-a>] [<-r>]
+        [<repo>]        List all files not tracked by all or one repositories
    pull                 Pull from all vcsh remotes
    push                 Push to vcsh remotes
    rename <repo> \\
@@ -275,10 +276,13 @@ list_untracked() {
 	temp_file_untracked_copy=$(mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX") || fatal 'Could not create temp file'
 
 	# Hack in support for `vcsh list-untracked -r`...
+	exclude_standard_opt='--exclude-standard'
 	directory_opt="--directory"
 	shift 1
-	while getopts "r" flag; do
-		if [ x"$1" = x'-r' ]; then
+	while getopts "ar" flag; do
+		if [ x"$1" = x'-a' ]; then
+			unset exclude_standard_opt
+		elif [ x"$1" = x'-r' ]; then
 			unset directory_opt
 		fi
 		shift 1
@@ -301,7 +305,7 @@ list_untracked() {
 
 list_untracked_helper() {
 	export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
-	git ls-files --others "$directory_opt" | (
+	git ls-files --others $exclude_standard_opt "$directory_opt" | (
 		while read line; do
 			echo "$line"
 			directory_component=${line%%/*}
-- 
GitLab