зеркало из https://github.com/microsoft/git.git
Add "commit" helper script
This is meant to make raw git not hugely less usable than something like raw CVS. I want to make a 1.0 release of the plumbing, and the actual commit part was just too intimidating.
This commit is contained in:
Родитель
f345b0a066
Коммит
a3e870f2e2
5
Makefile
5
Makefile
|
@ -22,7 +22,7 @@ INSTALL=install
|
|||
|
||||
SCRIPTS=git-apply-patch-script git-merge-one-file-script git-prune-script \
|
||||
git-pull-script git-tag-script git-resolve-script git-whatchanged \
|
||||
git-deltafy-script git-fetch-script
|
||||
git-deltafy-script git-fetch-script git-status-script git-commit-script
|
||||
|
||||
PROG= git-update-cache git-diff-files git-init-db git-write-tree \
|
||||
git-read-tree git-commit-tree git-cat-file git-fsck-cache \
|
||||
|
@ -31,7 +31,7 @@ PROG= git-update-cache git-diff-files git-init-db git-write-tree \
|
|||
git-unpack-file git-export git-diff-cache git-convert-cache \
|
||||
git-http-pull git-rpush git-rpull git-rev-list git-mktag \
|
||||
git-diff-helper git-tar-tree git-local-pull git-write-blob \
|
||||
git-get-tar-commit-id git-mkdelta git-apply
|
||||
git-get-tar-commit-id git-mkdelta git-apply git-stripspace
|
||||
|
||||
all: $(PROG)
|
||||
|
||||
|
@ -112,6 +112,7 @@ git-diff-helper: diff-helper.c
|
|||
git-tar-tree: tar-tree.c
|
||||
git-write-blob: write-blob.c
|
||||
git-mkdelta: mkdelta.c
|
||||
git-stripspace: stripspace.c
|
||||
|
||||
git-http-pull: LIBS += -lcurl
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
git-status-script > .editmsg
|
||||
if [ "$?" != "0" ]
|
||||
then
|
||||
cat .editmsg
|
||||
exit 1
|
||||
fi
|
||||
ED=${VISUAL:$EDITOR}
|
||||
ED=${ED:vi}
|
||||
$ED .editmsg
|
||||
grep -v '^#' < .editmsg | git-stripspace > .cmitmsg
|
||||
[ -s .cmitmsg ] || exit 1
|
||||
tree=$(git-write-tree) || exit 1
|
||||
commit=$(cat .cmitmsg | git-commit-tree $tree -p HEAD) || exit 1
|
||||
echo $commit > .git/HEAD
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
report () {
|
||||
header="#
|
||||
# $1:
|
||||
# ($2)
|
||||
#
|
||||
"
|
||||
trailer=""
|
||||
while read oldmode mode oldsha sha 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";;
|
||||
N) echo "# new file: $name";;
|
||||
U) echo "# unmerged: $name";;
|
||||
esac
|
||||
done
|
||||
echo -n "$trailer"
|
||||
[ "$header" ]
|
||||
}
|
||||
|
||||
git-update-cache --refresh >& /dev/null
|
||||
git-diff-cache -B -C --cached HEAD | sed 's/^://' | report "Updated but not checked in" "will commit"
|
||||
committable="$?"
|
||||
git-diff-files | sed 's/^://' | report "Changed but not updated" "use git-update-cache to mark for commit"
|
||||
if [ "$committable" == "0" ]
|
||||
then
|
||||
echo "nothing to commit"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
|
@ -0,0 +1,48 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/*
|
||||
* Remove empty lines from the beginning and end.
|
||||
*
|
||||
* Turn multiple consecutive empty lines into just one
|
||||
* empty line.
|
||||
*/
|
||||
static void cleanup(char *line)
|
||||
{
|
||||
int len = strlen(line);
|
||||
|
||||
if (len > 1 && line[len-1] == '\n') {
|
||||
do {
|
||||
unsigned char c = line[len-2];
|
||||
if (!isspace(c))
|
||||
break;
|
||||
line[len-2] = '\n';
|
||||
len--;
|
||||
line[len] = 0;
|
||||
} while (len > 1);
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int empties = -1;
|
||||
char line[1024];
|
||||
|
||||
while (fgets(line, sizeof(line), stdin)) {
|
||||
cleanup(line);
|
||||
|
||||
/* Not just an empty line? */
|
||||
if (line[0] != '\n') {
|
||||
if (empties > 0)
|
||||
putchar('\n');
|
||||
empties = 0;
|
||||
fputs(line, stdout);
|
||||
continue;
|
||||
}
|
||||
if (empties < 0)
|
||||
continue;
|
||||
empties++;
|
||||
}
|
||||
return 0;
|
||||
}
|
Загрузка…
Ссылка в новой задаче