#
# Copyright (c) 2005 Linus Torvalds
#
-. git-sh-setup || die "Not a git archive"
+
+USAGE=''
+SUBDIRECTORY_OK='Yes'
+
+. git-sh-setup
+
+if [ "$#" != "0" ]
+then
+ usage
+fi
report () {
header="#
#
"
trailer=""
- while read oldmode mode oldsha sha status name newname
+ while read status name newname
do
- echo -n "$header"
+ printf '%s' "$header"
header=""
trailer="#
"
U ) echo "# unmerged: $name";;
esac
done
- echo -n "$trailer"
+ printf '%s' "$trailer"
[ "$header" ]
}
if GIT_DIR="$GIT_DIR" git-rev-parse --verify HEAD >/dev/null 2>&1
then
- git-diff-index -M --cached HEAD |
- sed 's/^://' |
+ git-diff-index -M --cached --name-status --diff-filter=MDTCRA HEAD |
+ sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+ ' |
report "Updated but not checked in" "will commit"
committable="$?"
# Initial commit
#'
git-ls-files |
- sed 's/^/o o o o A /' |
+ sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+ s/^/A /
+ ' |
report "Updated but not checked in" "will commit"
committable="$?"
fi
-git-diff-files |
-sed 's/^://' |
+git-diff-files --name-status |
+sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+' |
report "Changed but not updated" "use git-update-index to mark for commit"
-if grep -v '^#' "$GIT_DIR/info/exclude" >/dev/null 2>&1
+
+if test -f "$GIT_DIR/info/exclude"
then
- git-ls-files --others \
- --exclude-from="$GIT_DIR/info/exclude" \
- --exclude-per-directory=.gitignore |
- sed -e '
- 1i\
-#\
-# Ignored files:\
-# (use "git add" to add to commit)\
-#
- s/^/# /
- $a\
-#'
-fi
+ git-ls-files -z --others \
+ --exclude-from="$GIT_DIR/info/exclude" \
+ --exclude-per-directory=.gitignore
+else
+ git-ls-files -z --others \
+ --exclude-per-directory=.gitignore
+fi |
+perl -e '$/ = "\0";
+ my $shown = 0;
+ while (<>) {
+ chomp;
+ s|\\|\\\\|g;
+ s|\t|\\t|g;
+ s|\n|\\n|g;
+ s/^/# /;
+ if (!$shown) {
+ print "#\n# Untracked files:\n";
+ print "# (use \"git add\" to add to commit)\n#\n";
+ $shown = 1;
+ }
+ print "$_\n";
+ }
+'
case "$committable" in
0)