Re: Bug with fixup and autosquash
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Feb 9, 2017, 23:34 UTC
- Message-ID
- <454E7D934160418EB4C4871ED209CBCA@PhilipOakley>
- In-Reply-To
- <alpine.DEB.2.20.1702092142020.3496@virtualbox>
From: "Johannes Schindelin" <Johannes.Schindelin@gmx.de> Sent: Thursday, February 09, 2017 8:55 PM
Show 47 quoted lines
> Hi Ashutosh and Junio, > > On Wed, 8 Feb 2017, Junio C Hamano wrote: > >> Ashutosh Bapat <ashutosh.bapat@enterprisedb.com> writes: >> >> > I have been using git rebase heavily these days and seem to have found >> > a bug. >> > >> > If there are two commit messages which have same prefix e.g. >> > yyyyyy This is prefix >> > xxxxxx This is prefix and message >> > >> > xxxxxx comitted before yyyyyy >> > >> > Now I commit a fixup to yyyyyy using git commit --fixup yyyyyy >> > zzzzzz fixup! This is prefix >> > >> > When I run git rebase -i --autosquash, the script it shows me looks >> > like >> > pick xxxxxx This is prefix and message >> > fixup zzzzzz fixup! This is prefix >> > pick yyyyyy This is prefix >> > >> > I think the correct order is >> > pick xxxxxx This is prefix and message >> > pick yyyyyy This is prefix >> > fixup zzzzzz fixup! This is prefix >> > >> > Is that right? >> >> [...] >> >> Unfortunately, "rebase -i --autosquash" reorders the entries by >> identifying the commit by its title, and it goes with prefix match so >> that fix-up commits created without using --fixup option but manually >> records the title's prefix substring can also work. > > This prefix match also happens to introduce a serious performance problem, > which is why I "fixed" this issue in the rebase--helper already (which is > the case if you are using Git for Windows, whose master branch builds on > Linux and MacOSX as well). I quoted "fix" because my motivation was to fix > the performance problem, not the "incorrect match" problem. > > The rebase--helper code (specifically, the patch moving autosquash logic > into it: https://github.com/dscho/git/commit/7d0831637f) tries to match > exact onelines first,
While I think this is an improvement, and will strongly support the `git commit --fixup=<commit>` option which will, if the sha1/oid is given, create the exact commit subject line.
However it would also be useful if the actual commit subject line could have a similar format option, so that those who use say the git gui (rather than the cli) for the commit message, could easily create the `!fixup <commit>` message which would allow a broader range of ways of spelling the commit (e.g. giving a sha1(min length) that is within the rebase todo list).
Show 17 quoted lines
> and falls back to prefix matching only after that. > > Now that the sequencer-i patch series is in `master`, the next step is to > send the patch series introducing the rebase--helper. The patch series > including the fix discussed above relies on that one. Meaning that it will > take a while to get through the mill. > > So please do not hold your breath until this feature/fix hits an official > Git version. If you need it[*1*] faster, feel free to build Git for > Windows' master and run with that for a while. > > Ciao, > Johannes > > Footnote: By "it" I mean "the feature/fix", not "an official Git version" > nor "your breath". >
-- Philip