Re: How to rebase when some commit hashes are in some commit messages
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Oct 13, 2015, 23:06 UTC
- Message-ID
- <B8985A8E92044BD8845B1ABD23FABA13@PhilipOakley>
- In-Reply-To
- <CA+P7+xpgY-PGdxDKHBeu0X=U6FKMavzmjexUTWatUzEdw8CmcQ@mail.gmail.com>
From: "Jacob Keller" <jacob.keller@gmail.com>
Show 32 quoted lines
> On Tue, Oct 13, 2015 at 12:24 PM, Philip Oakley <philipoakley@iee.org> > wrote: >> IIUC (as an alternate example), in G4W one can submit a (long) pull >> request >> with internal back references that would be merged directly, so the >> sha1's >> could be updated as Francois-Xavier originally asked. I have a series >> that's >> been bumping along for a long while that needs regular rebasing, though >> doesn't have sha1 back references, so I can see that the need does >> happen. I >> can see that others may have a workflow that would work well with the >> sha1 >> auto-update. >> >> -- >> Philip >> > > I still don't see how this is useful, because the part that *can* be > implemented is not valuable and the part that is valuable can't be > implemented. > > So, what we can implement easily enough: > > you rebase a series and any time the message contains sha1 of a commit > we're modifying in this rebase, we update the sha1 to match again. > This seems reasonable, but not useful. Why would you reference a > commit that is *ITSELF* being rebased. No one has explained a > reasonable use for this... I'm sure there exists one, but I would want > an explanation of one first. >
This particular case is about self-references within a long series. At the moment, on the Git list there is general comments about say [PATCH v3 18/44], whichs is great for for the list ($gmane) but not for a `git log`. In flows where PRs are valid, one can have what was [34/44] refering to prior patch [26/44] as `deadbeaf` or whatever. It won't be suitable for most flows but will be useful for a proportion (as already evidenced by the request).
> The "useful" case is if you rebase "onto" a tree that has a previous > history that has been changed. In this case, how do you propose we > find it.
This use case (where upstream also rebases) hasn't been considered. It would be a tricky one. As long as the possibility (of such an A depends on B re-write) isn't closed off then the smaller requested case could still go ahead.
> Doing as suggested above, ie: only changing sha1s that we are > already rebasing works, but why are you backreferencing it if you are > re-writing the commit?
Essentially one wants to say `$CURR_COMMIT~nn` (i.e. "see nn commits earlier in my series") and have that replaced with its cannonical sha1, and updated when rebased. It sort of begs the question whether there should be a ref shorthand for "the (this) current commit" to allow THIS~<n> as an interpretable [valid?] format.
> That doesn't make sense to me at all. Yes, you > can do it, but I don't get why this is valuable.
> If you're backref is > "fixes xyz" why not just fix xyz instead of have two commits. If the > back ref has some other value... what is that value? I don't > understand it I guess.
For the 'fixes' (of a bug report) case we are already talking about an immutable so it would not be part of this. Its use may be more of the type "Using helper function xyz introduced earlier in patch abcde", which would change after each rebase.
> > It just seems pretty narrow focus. I mean if someone wants to > implement it, that is fine. >
Agreed -- Philip