aboutsummaryrefslogtreecommitdiffstats
path: root/defs
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2019-04-24 22:40:54 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-04-24 22:48:21 +0900
commitdaff4cbd6c7d6be07ae094bda45bca076b37a375 (patch)
tree4f6a69c42b47bd8919a017833afe6ca1b1ef0f34 /defs
parent2642f22050d74d56da5525b0cd1a5c665ddb4c51 (diff)
downloadruby-daff4cbd6c7d6be07ae094bda45bca076b37a375.tar.gz
Add `make fetch-github` and `make merge-github`
Closes: https://github.com/ruby/ruby/pull/2147
Diffstat (limited to 'defs')
-rw-r--r--defs/gmake.mk27
1 files changed, 27 insertions, 0 deletions
diff --git a/defs/gmake.mk b/defs/gmake.mk
index edd115c2b7..9a11df1316 100644
--- a/defs/gmake.mk
+++ b/defs/gmake.mk
@@ -153,6 +153,33 @@ commit: $(if $(filter commit,$(MAKECMDGOALS)),$(filter-out commit,$(MAKECMDGOALS
VCSUP="" ENC_MK=.top-enc.mk REVISION_FORCE=PHONY CONFIGURE="$(CONFIGURE)" -f - \
update-src srcs all-incs
+PR =
+GITHUB_RUBY_URL = https://github.com/ruby/ruby
+
+.PHONY: fetch-github
+fetch-github:
+ $(Q) if [ -z "$(PR)" ]; then \
+ echo "usage:"; echo " make $@ PR=1234"; \
+ exit 1; \
+ fi
+ $(Q) if ! git config remote.github.url > /dev/null; then \
+ echo adding $(GITHUB_RUBY_URL) as remote github; \
+ git -C "$(srcdir)" remote add github $(GITHUB_RUBY_URL); \
+ fi
+ git -C "$(srcdir)" fetch -f github "pull/$(PR)/head:gh-$(PR)"
+
+.PHONY: merge-github
+merge-github: fetch-github
+ $(Q) $(eval GITHUB_MERGE_BASE := $(shell git -C "$(srcdir)" log -1 --format=format:%H))
+ git -C "$(srcdir)" checkout "gh-$(PR)"
+ git -C "$(srcdir)" rebase -
+ git -C "$(srcdir)" checkout -
+ git -C "$(srcdir)" merge --ff-only "gh-$(PR)"
+ git -C "$(srcdir)" branch -D "gh-$(PR)"
+ git -C "$(srcdir)" filter-branch -f --msg-filter \
+ 'cat && echo && echo "Closes: $(GITHUB_RUBY_URL)/pull/$(PR)"' \
+ -- "$(GITHUB_MERGE_BASE)..@"
+
ifeq ($(words $(filter update-gems extract-gems,$(MAKECMDGOALS))),2)
extract-gems: update-gems
endif