aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2016-05-12 22:31:26 +0900
committerKazuki Yamaguchi <k@rhe.jp>2016-05-12 22:40:16 +0900
commitb7f6381cea57a344af5e0144565d85921eb10a13 (patch)
treefe7ed74e0680c8533d9420f33b6809a2c03be619
parent2b7c721499784b93df3911477394c6d7461f4f81 (diff)
downloadruby-b7f6381cea57a344af5e0144565d85921eb10a13.tar.gz
add nya
-rwxr-xr-xnya44
1 files changed, 44 insertions, 0 deletions
diff --git a/nya b/nya
new file mode 100755
index 0000000000..3ba9ea5277
--- /dev/null
+++ b/nya
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+list_branches() {
+ git for-each-ref --sort=-committerdate --format='
+ d=%(committerdate:short)
+ r=%(refname)
+ echo $d ${r#refs/heads}
+ ' refs/heads
+}
+
+git update-index --refresh || exit 1
+
+case "$(git diff-index --name-status HEAD)" in
+'') ;;
+*)
+ echo "there are local modifications"
+ exit 1
+esac
+
+# reset first
+git fetch upstream --progress
+git reset --hard upstream/trunk
+
+# then merge branches
+git fetch origin --progress
+while list_branches && echo -n "> " && read line; do
+ if ORIGIN_HEAD=$(git rev-parse "origin/$line"); then
+ LOCAL_HEAD=$(git rev-parse "$line")
+ if [ "x$LOCAL_HEAD" != "x$ORIGIN_HEAD" ]; then
+ echo "origin and local differs?"
+ exit 1
+ fi
+ fi
+
+ echo "merging branch $line"
+ while :; do
+ if git merge --no-edit --no-ff "$line"; then
+ break
+ fi
+ echo -n "merge failed; press a key to retry"
+ read
+ done
+done
+