aboutsummaryrefslogtreecommitdiffstats
path: root/defs
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-04-25 15:03:54 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-04-25 15:03:54 +0900
commit09ce223b0b297359fd7f9a5d629a70be32157302 (patch)
tree70271f623ba53fc173af9b859e15aad3bd87b24d /defs
parentd0ba4abf1a00339ebbb5d405db3240a8bdb7b68b (diff)
downloadruby-09ce223b0b297359fd7f9a5d629a70be32157302.tar.gz
Rebase the pull request in a worktree
A pull request based on an old commit may rewind too many files, even if unnecessary. As rewinding some files, e.g., common header files, configure.ac, will result in full-rebuild, rebase in a separate directory to get rid of such rewind.
Diffstat (limited to 'defs')
-rw-r--r--defs/gmake.mk10
1 files changed, 6 insertions, 4 deletions
diff --git a/defs/gmake.mk b/defs/gmake.mk
index 73ae01bf12..4e0e2330fe 100644
--- a/defs/gmake.mk
+++ b/defs/gmake.mk
@@ -170,10 +170,12 @@ fetch-github:
.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 -
+ $(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 -d gh-$(PR)-XXXXXX))
+ git -C "$(srcdir)" worktree add $(GITHUB_MERGE_WORKTREE) "gh-$(PR)"
+ git -C "$(GITHUB_MERGE_WORKTREE)" rebase $(GITHUB_MERGE_BRANCH)
+ git -C "$(srcdir)" worktree remove "$(GITHUB_MERGE_WORKTREE)"
git -C "$(srcdir)" merge --ff-only "gh-$(PR)"
git -C "$(srcdir)" branch -D "gh-$(PR)"
git -C "$(srcdir)" filter-branch -f \