Commit Graph

17 Commits

Author SHA1 Message Date
Tim Ruffing
656c7cc704 sync-upstream: Clarify that we merge a *single* upstream ref
Roughly speaking, this changes (assuming 3 upstream PRs)

  git merge <upstream-commit1> <upstream-commit-2> <upstream-commit3>

into

  git merge <upstream-commit3>

This is more intuitive. We're merging a single upstream revision, namely
<upstream-commit3>. The other two commits are simply parents of that one,
i.e., they're included anyway, and git merge ignores them.

(In fact, passing multiple refs looks like we're doing an octopus
merge. It's just that git recognizes the fact that everything is included
in the last ref anyway, and behaves as if only the last one had been passed.)

This commit also makes some further clean ups and improvements.
2026-03-05 14:42:33 +01:00
Tim Ruffing
349a94b169 sync-upstream: Remove "select" mode and simplify
I believe it was introduced to cherry-pick upstream PRs, but that simply
doesn't work. Assume upstream is two PRs A and B ahead, and A has been
merged before B. Then trying to cherry-picking B by merging the state of
upstream's master after the merge-B commit won't do what we expect. In
particular, the merge result will *include A's changes* because A had
already been merged in upstream's master when B was merged.

(One could think that merging the PR branch of B instead works, but this
will yield the same result if B was rebased on master before it was
merged.)

The proper way to cherry-pick B is to create a PR that cherry-picks all
commits that had been included in B. This could be done automatically,
but the need to cherry-pick a PR is rare enough that we don't need tool
support for it. In fact, because we want to keep cherry-picking at a
minimum, there's a good chance that we'd anyway want to pick only a
subset of the commits in a upstream PR, and that would need manual work
anyway.
2026-03-05 14:42:33 +01:00
Tim Ruffing
41cead8a0b sync-upstream: Extend git usage tips 2026-02-05 16:01:30 +01:00
Jonas Nick
db8750de46 sync-upstream: improve help text 2026-01-22 09:09:27 +00:00
Tim Ruffing
0a99156871 sync-upstream.sh: Add "git show --remerge-diff" tip 2023-07-18 15:05:27 +02:00
Tim Ruffing
9b6a1c384d sync-upstream.sh: Fix position of "-b" option in reproduce command 2023-07-17 18:44:33 +02:00
Jonas Nick
05b207e969 sync-upstream: allows providing the local branch via cli 2023-07-17 13:29:59 +00:00
Tim Ruffing
13c438cdee sync-upstream: Use --autostash to handle uncommitted changes
This makes it possible to use sync-upstream with uncommitted changes. (This
is in particular helpful when working on the script itself.)

Without this commit, git pull will fail due to the uncommitted changes.
2023-04-11 12:25:51 +02:00
Tim Ruffing
e04c660b11 sync-upstream: Fix $REPRODUCE_COMMAND for "select" 2023-01-20 17:09:18 +01:00
Andrew Poelstra
b9ebee1490 fix a couple things to make Elements 22's linter happy 2021-10-14 21:21:30 +00:00
Jonas Nick
95ee1fa030 sync-upstream: fix quoting
Otherwise strings in $TITLE and $BODAY that are enclosed in ` are executed in
gh-pr-create.sh.
2021-09-15 20:29:33 +00:00
Tim Ruffing
907633e2e9 sync-upstream: fix "end" parameter for specifying range 2021-07-12 18:24:04 +02:00
Tim Ruffing
394f49fd1a sync-upstream: quote variables 2021-07-12 18:23:18 +02:00
Tim Ruffing
9321d42f75 sync-upstream: parse merge commits w/ and w/o repo identifier 2021-07-12 15:21:38 +02:00
Tim Ruffing
136ed8f84d sync-upstream: Fix output of command to reproduce 2021-03-10 16:13:17 +01:00
Tim Ruffing
38f1e777d4 sync-upstream: Create proper links to upstream PRs 2021-03-10 15:53:54 +01:00
Jonas Nick
7eeacd7725 Add contrib/sync-upstream.sh script to automate merging upstream PRs 2021-01-14 15:17:18 +00:00