-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathundo_merge.sh
57 lines (48 loc) · 1.28 KB
/
undo_merge.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env bash
eval "$(/opt/homebrew/bin/brew shellenv)"
GERRIT_ROOT="$HOME/gerrit"
cd "$GERRIT_ROOT/git"
strike() {
echo "=================================="
}
export GERRIT_REPO
# Step 1
cd "$GERRIT_REPO.git/"
echo "Garbage collecting $GERRIT_REPO"
git gc
strike
$GERRIT_ROOT/bin/gerrit.sh stop
# Step 2
echo
echo "Exporting Merged Commits"
export_merged() {
for i in $(grep meta packed-refs | cut -d' ' -f2)
do
echo "$i:$(git log --oneline $i --grep='autogenerated:gerrit:merged')" | grep patch
done | cut -d' ' -f1
}
export_merged | tee /tmp/export_merged.txt
strike
# Step 3
echo
echo "Updating Merged Commits to previous HEAD"
cp packed-refs /tmp/packed-refsback
for i in $(cat /tmp/export_merged.txt); do
REF="$(echo $i | cut -d':' -f1)"
MERGED="$(echo $i | cut -d':' -f2)"
NEWREF="$(git rev-parse $MERGED~1)"
git update-ref $REF $NEWREF
done
git gc
strike
# Step 3
echo
echo "Refreshing gerrit UI to reflect latest status"
$GERRIT_ROOT/bin/gerrit.sh start
CHANGE_URL=$(printf %s "$GERRIT_REPO" | jq -sRr @uri)
for i in $(grep meta packed-refs| cut -d' ' -f2)
do
CHANGE_NUM=$(basename $(dirname $i))
screen -d -m curl -s "https://localhost:8443/changes/$CHANGE_URL~$CHANGE_NUM/revisions/current/mergeable" -k -o /tmp/log
sleep 0.1
done