gpush: make chaining series comfortable


this is for series that have local dependencies, but are nonetheless
logically separate.

a base that refers to a local Change will now get translated to that
Change's latest PatchSet at the time the push happens, regardless of
whether it was actually specified as that PatchSet's sha1, the
Change-Id, or the current sha1 of the local commit.
i can't think of a reason why that would be undesirable, so there is no
opt-out from that.

we don't auto-rebase when the parent is re-pushed, to minimize churn.
instead, the new option --rebase-chained needs to be used for that.
this is in the spirit of --minimal (it may make sense to link the
behavior to that option, but things get a bit messy then).

we don't automatically push the parent series, either.
but if we did, in combination with auto-rebasing, this would effectively
create atomic series whose parts can have different attributes, for
example different reviewers (but note that we currently don't persist
these locally anyway).
however, such auto-chaining would be rather tricky in conjunction with
--minimal when a series has multiple children.
and realistically, push --all mode should be adequate in practice.

Change-Id: I7a9608c99091a8a373c36af8ba95559234a5857c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
commit9400a7ca9f4b3dc8cde404e2db7cef0b9e95bf58
parent7e769b158f070ff0bc7b3d7cdf00f654e03d1c9f
authorOswald Buddenhagen <oswald.buddenhagen@gmx.de>
committerOswald Buddenhagen <oswald.buddenhagen@gmx.de>
commit timeTue, 9 Jan 2024 16:49:49 +0000