#
# Copyright (c) 2005 Linus Torvalds
#
-. git-sh-setup || die "Not a git archive"
+GIT_DIR=$(git-rev-parse --git-dir) || exit
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 |
+ git-diff-index -M --cached --name-status --diff-filter=MDTCRA HEAD |
sed -e '
- s/^://
- h
- s/^[^\t]*//
+ s/\\/\\\\/g
s/ /\\ /g
- x
- s/\t.*$//
- G
- s/\n/ /' |
+ ' |
report "Updated but not checked in" "will commit"
committable="$?"
#'
git-ls-files |
sed -e '
+ s/\\/\\\\/g
s/ /\\ /g
- s/^/o o o o A /' |
+ s/^/A /
+ ' |
report "Updated but not checked in" "will commit"
committable="$?"
fi
-git-diff-files |
+git-diff-files --name-status |
sed -e '
- s/^://
- h
- s/^[^\t]*//
+ s/\\/\\\\/g
s/ /\\ /g
- x
- s/\t.*$//
- G
- s/\n/ /' |
+' |
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)