summaryrefslogtreecommitdiff
path: root/defs
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-04-25 18:29:58 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-04-25 18:29:58 +0900
commit70adfdcd8de3296e9015338216073e8144dbea04 (patch)
treed0bfd54df95f862f052864fae6fb2f38cd54b2b8 /defs
parent44bb429bb1bb431dc2805daf93f52509c26b9da7 (diff)
Added pr-%
May merge multiple github pull requests at once. e.g., $ make pr-123456789 pr-987654321
Diffstat (limited to 'defs')
-rw-r--r--defs/gmake.mk29
1 files changed, 22 insertions, 7 deletions
diff --git a/defs/gmake.mk b/defs/gmake.mk
index 15ff0fd755..213eb33f1e 100644
--- a/defs/gmake.mk
+++ b/defs/gmake.mk
@@ -161,7 +161,10 @@ REMOTE_GUTHUB_URL = $(shell git -C "$(srcdir)" config remote.github.url)
.PHONY: fetch-github
fetch-github:
- $(if $(PR),,\
+ $(call fetch-github, $(PR))
+
+define fetch-github
+ $(if $(1),,\
echo "usage:"; echo " make $@ PR=1234"; \
exit 1; \
)
@@ -169,8 +172,10 @@ fetch-github:
$(if $(REMOTE_GUTHUB_URL),, \
echo adding $(GITHUB_RUBY_URL) as remote github; \
git -C "$(srcdir)" remote add github $(GITHUB_RUBY_URL); \
+ $(eval REMOTE_GUTHUB_URL := $(GITHUB_RUBY_URL)) \
)
- git -C "$(srcdir)" fetch -f github "pull/$(PR)/head:gh-$(PR)"
+ git -C "$(srcdir)" fetch -f github "pull/$(1)/head:gh-$(1)"
+endef
.PHONY: checkout-github
checkout-github: fetch-github
@@ -178,21 +183,31 @@ checkout-github: fetch-github
.PHONY: merge-github
merge-github: fetch-github
+ $(call merge-github, $(PR))
+
+define merge-github
$(eval GITHUB_MERGE_BASE := $(shell git -C "$(srcdir)" log -1 --format=format:%H))
$(eval GITHUB_MERGE_BRANCH := $(shell git -C "$(srcdir)" symbolic-ref --short HEAD))
- $(eval GITHUB_MERGE_WORKTREE := $(shell mktemp -p "$(srcdir)" -d gh-$(PR)-XXXXXX))
- git -C "$(srcdir)" worktree add $(notdir $(GITHUB_MERGE_WORKTREE)) "gh-$(PR)"
+ $(eval GITHUB_MERGE_WORKTREE := $(shell mktemp -p "$(srcdir)" -d gh-$(1)-XXXXXX))
+ git -C "$(srcdir)" worktree add $(notdir $(GITHUB_MERGE_WORKTREE)) "gh-$(1)"
git -C "$(GITHUB_MERGE_WORKTREE)" rebase $(GITHUB_MERGE_BRANCH)
git -C "$(srcdir)" worktree remove $(notdir $(GITHUB_MERGE_WORKTREE))
- git -C "$(srcdir)" merge --ff-only "gh-$(PR)"
- git -C "$(srcdir)" branch -D "gh-$(PR)"
+ git -C "$(srcdir)" merge --ff-only "gh-$(1)"
+ git -C "$(srcdir)" branch -D "gh-$(1)"
git -C "$(srcdir)" filter-branch -f \
- --msg-filter 'cat && echo && echo "Closes: $(GITHUB_RUBY_URL)/pull/$(PR)"' \
+ --msg-filter 'cat && echo && echo "Closes: $(GITHUB_RUBY_URL)/pull/$(1)"' \
-- "$(GITHUB_MERGE_BASE)..@"
$(eval COMMIT_GPG_SIGN := $(COMMIT_GPG_SIGN))
$(if $(filter true,$(COMMIT_GPG_SIGN)), \
git -C "$(srcdir)" rebase --exec "git commit --amend --no-edit -S" "$(GITHUB_MERGE_BASE)"; \
)
+endef
+
+fetch-github-%:
+ $(call fetch-github,$*)
+
+pr-% merge-github-%: fetch-github-%
+ $(call merge-github,$*)
ifeq ($(words $(filter update-gems extract-gems,$(MAKECMDGOALS))),2)
extract-gems: update-gems