Expect git -C <path> to work

This option is available since git 1.8.5 that was released in 2013.
This commit is contained in:
Nobuyoshi Nakada 2025-09-16 17:20:46 +09:00
parent 971174054a
commit a2849239db
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465
4 changed files with 37 additions and 34 deletions

View File

@ -44,6 +44,10 @@ RUBYLIB = $(PATH_SEPARATOR)
RUBYOPT = -
RUN_OPTS = --disable-gems
GIT_IN_SRC = $(GIT) -C $(srcdir)
GIT_LOG = $(GIT_IN_SRC) log
GIT_LOG_FORMAT = $(GIT_LOG) --pretty=format:
# GITPULLOPTIONS = --no-tags
PRISM_SRCDIR = $(srcdir)/prism
@ -1514,8 +1518,8 @@ update-bundled_gems: PHONY
$(tooldir)/update-bundled_gems.rb \
"$(srcdir)/gems/bundled_gems" | \
$(IFCHANGE) "$(srcdir)/gems/bundled_gems" -
$(GIT) -C "$(srcdir)" diff --no-ext-diff --ignore-submodules --exit-code || \
$(GIT) -C "$(srcdir)" commit -m "Update bundled_gems" gems/bundled_gems
$(GIT_IN_SRC) diff --no-ext-diff --ignore-submodules --exit-code || \
$(GIT_IN_SRC) commit -m "Update bundled_gems" gems/bundled_gems
PRECHECK_BUNDLED_GEMS = yes
test-bundled-gems-precheck: $(TEST_RUNNABLE)-test-bundled-gems-precheck
@ -1899,8 +1903,8 @@ nightly: yesterday $(DOT_WAIT) install
yesterday: rewindable
rewindable:
$(GIT) -C $(srcdir) status --porcelain
$(GIT) -C $(srcdir) diff --quiet
$(GIT_IN_SRC) status --porcelain
$(GIT_IN_SRC) diff --quiet
HELP_EXTRA_TASKS = ""

View File

@ -220,8 +220,8 @@ post-commit: $(if $(DOT_WAIT),,do-commit)
GITHUB_RUBY_URL = https://github.com/ruby/ruby
PR =
COMMIT_GPG_SIGN = $(shell $(GIT) -C "$(srcdir)" config commit.gpgsign)
REMOTE_GITHUB_URL = $(shell $(GIT) -C "$(srcdir)" config remote.github.url)
COMMIT_GPG_SIGN = $(shell $(GIT_IN_SRC) config commit.gpgsign)
REMOTE_GITHUB_URL = $(shell $(GIT_IN_SRC) config remote.github.url)
COMMITS_NOTES = commits
.PHONY: fetch-github
@ -236,19 +236,19 @@ define fetch-github
$(eval REMOTE_GITHUB_URL := $(REMOTE_GITHUB_URL))
$(if $(REMOTE_GITHUB_URL),,
echo adding $(GITHUB_RUBY_URL) as remote github
$(GIT) -C "$(srcdir)" remote add github $(GITHUB_RUBY_URL)
$(GIT) -C "$(srcdir)" config --add remote.github.fetch +refs/notes/$(COMMITS_NOTES):refs/notes/$(COMMITS_NOTES)
$(GIT_IN_SRC) remote add github $(GITHUB_RUBY_URL)
$(GIT_IN_SRC) config --add remote.github.fetch +refs/notes/$(COMMITS_NOTES):refs/notes/$(COMMITS_NOTES)
$(eval REMOTE_GITHUB_URL := $(GITHUB_RUBY_URL))
)
$(if $(shell $(GIT) -C "$(srcdir)" rev-parse "github/pull/$(1)/head" -- 2> /dev/null),
$(GIT) -C "$(srcdir)" branch -f "gh-$(1)" "github/pull/$(1)/head",
$(GIT) -C "$(srcdir)" fetch -f github "pull/$(1)/head:gh-$(1)"
$(if $(shell $(GIT_IN_SRC) rev-parse "github/pull/$(1)/head" -- 2> /dev/null),
$(GIT_IN_SRC) branch -f "gh-$(1)" "github/pull/$(1)/head",
$(GIT_IN_SRC) fetch -f github "pull/$(1)/head:gh-$(1)"
)
endef
.PHONY: checkout-github
checkout-github: fetch-github
$(GIT) -C "$(srcdir)" checkout "gh-$(PR)"
$(GIT_IN_SRC) checkout "gh-$(PR)"
.PHONY: update-github
update-github: fetch-github
@ -261,25 +261,25 @@ update-github: fetch-github
$(eval PR_BRANCH := $(word 2,$(PULL_REQUEST_FORK_BRANCH)))
$(eval GITHUB_UPDATE_WORKTREE := $(shell mktemp -d "$(srcdir)/gh-$(PR)-XXXXXX"))
$(GIT) -C "$(srcdir)" worktree add $(notdir $(GITHUB_UPDATE_WORKTREE)) "gh-$(PR)"
$(GIT_IN_SRC) worktree add $(notdir $(GITHUB_UPDATE_WORKTREE)) "gh-$(PR)"
$(GIT) -C "$(GITHUB_UPDATE_WORKTREE)" merge master --no-edit
@$(BASERUBY) -e 'print "Are you sure to push this to PR=$(PR)? [Y/n]: "; exit(gets.chomp != "n")'
$(GIT) -C "$(srcdir)" remote add fork-$(PR) git@github.com:$(FORK_REPO).git
$(GIT_IN_SRC) remote add fork-$(PR) git@github.com:$(FORK_REPO).git
$(GIT) -C "$(GITHUB_UPDATE_WORKTREE)" push fork-$(PR) gh-$(PR):$(PR_BRANCH)
$(GIT) -C "$(srcdir)" remote rm fork-$(PR)
$(GIT) -C "$(srcdir)" worktree remove $(notdir $(GITHUB_UPDATE_WORKTREE))
$(GIT) -C "$(srcdir)" branch -D gh-$(PR)
$(GIT_IN_SRC) remote rm fork-$(PR)
$(GIT_IN_SRC) worktree remove $(notdir $(GITHUB_UPDATE_WORKTREE))
$(GIT_IN_SRC) branch -D gh-$(PR)
.PHONY: pull-github
pull-github: fetch-github
$(call pull-github,$(PR))
define pull-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_BASE := $(shell $(GIT_LOG_FORMAT):%H -1)
$(eval GITHUB_MERGE_BRANCH := $(shell $(GIT_IN_SRC) symbolic-ref --short HEAD))
$(eval GITHUB_MERGE_WORKTREE := $(shell mktemp -d "$(srcdir)/gh-$(1)-XXXXXX"))
$(GIT) -C "$(srcdir)" worktree prune
$(GIT) -C "$(srcdir)" worktree add $(notdir $(GITHUB_MERGE_WORKTREE)) "gh-$(1)"
$(GIT_IN_SRC) worktree prune
$(GIT_IN_SRC) worktree add $(notdir $(GITHUB_MERGE_WORKTREE)) "gh-$(1)"
$(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase $(GITHUB_MERGE_BRANCH)
$(eval COMMIT_GPG_SIGN := $(COMMIT_GPG_SIGN))
$(if $(filter true,$(COMMIT_GPG_SIGN)), \
@ -294,7 +294,7 @@ fetch-github-%:
.PHONY: checkout-github-%
checkout-github-%: fetch-github-%
$(GIT) -C "$(srcdir)" checkout "gh-$*"
$(GIT_IN_SRC) checkout "gh-$*"
.PHONY: pr-% pull-github-%
pr-% pull-github-%: fetch-github-%
@ -433,7 +433,7 @@ ifneq ($(DOT_WAIT),)
endif
ifeq ($(HAVE_GIT),yes)
REVISION_LATEST := $(shell $(CHDIR) $(srcdir) && $(GIT) log -1 --format=%H 2>/dev/null)
REVISION_LATEST := $(shell $(GIT_LOG_FORMAT)%H -1 2>/dev/null)
else
REVISION_LATEST := update
endif
@ -495,7 +495,7 @@ endif
update-deps:
$(eval update_deps := $(shell date +update-deps-%Y%m%d))
$(eval deps_dir := $(shell mktemp -d)/$(update_deps))
$(eval GIT_DIR := $(shell $(GIT) -C $(srcdir) rev-parse --absolute-git-dir))
$(eval GIT_DIR := $(shell $(GIT_IN_SRC) rev-parse --absolute-git-dir))
$(GIT) --git-dir=$(GIT_DIR) worktree add $(deps_dir)
cp $(tooldir)/config.guess $(tooldir)/config.sub $(deps_dir)/tool
[ -f config.status ] && cp config.status $(deps_dir)
@ -543,13 +543,13 @@ matz: up
$(eval NEW := $(MAJOR).$(MINOR).0)
$(eval message := Development of $(NEW) started.)
$(eval files := include/ruby/version.h include/ruby/internal/abi.h)
$(GIT) -C $(srcdir) mv -f NEWS.md doc/NEWS/NEWS-$(OLD).md
$(GIT) -C $(srcdir) commit -m "[DOC] Flush NEWS.md"
$(GIT_IN_SRC) mv -f NEWS.md doc/NEWS/NEWS-$(OLD).md
$(GIT_IN_SRC) commit -m "[DOC] Flush NEWS.md"
sed -i~ \
-e "s/^\(#define RUBY_API_VERSION_MINOR\) .*/\1 $(MINOR)/" \
-e "s/^\(#define RUBY_ABI_VERSION\) .*/\1 0/" \
$(files:%=$(srcdir)/%)
$(GIT) -C $(srcdir) add $(files)
$(GIT_IN_SRC) add $(files)
$(BASERUBY) -C $(srcdir) -p -00 \
-e 'BEGIN {old, new = ARGV.shift(2); STDOUT.reopen("NEWS.md")}' \
-e 'case $$.' \
@ -559,8 +559,8 @@ matz: up
-e 'next if /^[\[ *]/ =~ $$_' \
-e '$$_.sub!(/\n{2,}\z/, "\n\n")' \
$(OLD) $(NEW) doc/NEWS/NEWS-$(OLD).md
$(GIT) -C $(srcdir) add NEWS.md
$(GIT) -C $(srcdir) commit -m "$(message)"
$(GIT_IN_SRC) add NEWS.md
$(GIT_IN_SRC) commit -m "$(message)"
tags:
$(MAKE) GIT="$(GIT)" -C "$(srcdir)" -f defs/tags.mk

View File

@ -748,5 +748,4 @@ yes-test-syntax-suggest: $(PREPARE_SYNTAX_SUGGEST)
no-test-syntax-suggest:
yesterday:
$(GIT) -C $(srcdir) reset --hard \
`$(GIT) -C $(srcdir) log -1 --before=00:00+0900 --format=%H`
$(GIT_IN_SRC) reset --hard `$(GIT_LOG_FORMAT):%H -1 --before=00:00+0900`

View File

@ -1336,7 +1336,7 @@ $(RCFILES): $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
update-benchmark-driver:
$(GIT) clone https://github.com/benchmark-driver/benchmark-driver $(srcdir)/benchmark/benchmark-driver || \
$(GIT) -C $(srcdir)/benchmark/benchmark-driver pull origin master
$(GIT_IN_SRC)/benchmark/benchmark-driver pull origin master
$(ruby_pc): $(RBCONFIG)
@$(BOOTSTRAPRUBY) $(tooldir)/expand-config.rb \
@ -1507,5 +1507,5 @@ exts: rubyspec-capiext
yesterday:
for /f "usebackq" %H in \
(`$(GIT) -C $(srcdir) log -1 "--before=00:00+0900" "--format=%H"`) do \
$(GIT) -C $(srcdir) reset --hard %%H
(`$(GIT_LOG_FORMAT):%H -1 "--before=00:00+0900"`) do \
$(GIT_IN_SRC) reset --hard %%H