Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 882640d

Browse files
committed
add git-{mark,unmark}
1 parent cc8536d commit 882640d

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed

‎Makefile‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
prefix=$(HOME)
2+
bindir=$(prefix)/bin
3+
4+
INSTALL = install
5+
LN = ln
6+
7+
BINS = \
8+
git-dot \
9+
git-synth \
10+
git-ptt
11+
12+
all: $(BINS)
13+
14+
install: all
15+
$(INSTALL) -m 755 git-dot $(bindir)/git-dot
16+
$(INSTALL) -m 755 git-synth $(bindir)/git-synth
17+
$(INSTALL) -m 755 git-ptt $(bindir)/git-ptt
18+
$(INSTALL) -m 755 git-mark $(bindir)/git-mark
19+
$(LN) -s git-mark $(bindir)/unmark

‎git-mark‎

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/bin/sh
2+
3+
mark=$(git config --get --default WIP mark.default)
4+
5+
die() {
6+
echo "ERROR: $*" >&2
7+
exit 1
8+
}
9+
10+
case 0ドル in
11+
(*unmark)
12+
mode=unmark
13+
;;
14+
15+
(*)
16+
mode=mark
17+
;;
18+
esac
19+
20+
OPTS_SPEC="\
21+
${0##*/} [<options>] [<ref> [...]]
22+
23+
Mark or unmark the subject line of the named commits
24+
(or HEAD if unspecified).
25+
--
26+
h,help Show the help
27+
28+
m,mark Add the mark
29+
u,unmark Remove the mark
30+
M,set-mark=MARK Set the mark to MARK
31+
"
32+
33+
eval "$(git rev-parse --parseopt -- "$@" <<<$OPTS_SPEC || echo exit $?)"
34+
35+
while (( $# > 0 )); do
36+
case 1ドル in
37+
(-u) mode=unmark
38+
shift
39+
;;
40+
41+
(-m) mode=mark
42+
shift
43+
;;
44+
45+
(-M) mark=2ドル
46+
shift 2
47+
;;
48+
49+
(--) shift
50+
break
51+
;;
52+
esac
53+
done
54+
55+
56+
tmpdir=$(mktemp -d commitXXXXXX)
57+
trap "rm -rf $tmpdir" EXIT
58+
59+
for refspec in "${@:-HEAD}"; do
60+
rev=$(git rev-parse --verify -q ${refspec})
61+
[[ $rev ]] || die "invalid refspec: $refspec"
62+
63+
git show -q --format='%B' $rev | tee $tmpdir/modified > $tmpdir/orig
64+
if [[ $mode == mark ]]; then
65+
if ! sed -n 1p $tmpdir/orig | grep -q '\['"$mark"']'; then
66+
sed '1 s/^/['"$mark"'] /' $tmpdir/orig > $tmpdir/modified
67+
fi
68+
else
69+
sed '1 s/^\['"$mark"'] //' $tmpdir/orig > $tmpdir/modified
70+
fi
71+
72+
if ! diff $tmpdir/orig $tmpdir/modified > /dev/null; then
73+
echo "modifying commit $refspec (${rev:0:10})"
74+
git revise -F $tmpdir/modified $rev > $tmpdir/out 2> $tmpdir/err ||
75+
die "failed to modify mark: $(cat $tmpdir/err)"
76+
git show -q $(head -1 $tmpdir/out | cut -f1 -d' ')
77+
fi
78+
done

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /