f179044862
An unmerged path appears as both "Updated but not checked in" list, and "Changed but not updated" list. We are not going to commit that path until it is resolved, so remove it from the former list. Signed-off-by: Junio C Hamano <junkio@cox.net>
107 lines
1.9 KiB
Bash
Executable File
107 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Linus Torvalds
|
|
#
|
|
. git-sh-setup || die "Not a git archive"
|
|
|
|
report () {
|
|
header="#
|
|
# $1:
|
|
# ($2)
|
|
#
|
|
"
|
|
trailer=""
|
|
while read status name newname
|
|
do
|
|
echo -n "$header"
|
|
header=""
|
|
trailer="#
|
|
"
|
|
case "$status" in
|
|
M ) echo "# modified: $name";;
|
|
D*) echo "# deleted: $name";;
|
|
T ) echo "# typechange: $name";;
|
|
C*) echo "# copied: $name -> $newname";;
|
|
R*) echo "# renamed: $name -> $newname";;
|
|
A*) echo "# new file: $name";;
|
|
U ) echo "# unmerged: $name";;
|
|
esac
|
|
done
|
|
echo -n "$trailer"
|
|
[ "$header" ]
|
|
}
|
|
|
|
branch=$(GIT_DIR="$GIT_DIR" git-symbolic-ref HEAD)
|
|
case "$branch" in
|
|
refs/heads/master) ;;
|
|
*) echo "# On branch $branch" ;;
|
|
esac
|
|
|
|
git-update-index -q --unmerged --refresh || exit
|
|
|
|
if GIT_DIR="$GIT_DIR" git-rev-parse --verify HEAD >/dev/null 2>&1
|
|
then
|
|
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="$?"
|
|
else
|
|
echo '#
|
|
# Initial commit
|
|
#'
|
|
git-ls-files |
|
|
sed -e '
|
|
s/\\/\\\\/g
|
|
s/ /\\ /g
|
|
s/^/A /
|
|
' |
|
|
report "Updated but not checked in" "will commit"
|
|
|
|
committable="$?"
|
|
fi
|
|
|
|
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 test -f "$GIT_DIR/info/exclude"
|
|
then
|
|
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)
|
|
echo "nothing to commit"
|
|
exit 1
|
|
esac
|
|
exit 0
|