<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/git-rebase--interactive.sh, branch v2.15.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.15.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.15.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2017-11-21T05:05:32Z</updated>
<entry>
<title>Merge branch 'ad/rebase-i-serie-typofix' into maint</title>
<updated>2017-11-21T05:05:32Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-11-21T05:05:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8ff22f5a88cb02a51391f7b1eb1c0e7bfc65122e'/>
<id>urn:sha1:8ff22f5a88cb02a51391f7b1eb1c0e7bfc65122e</id>
<content type='text'>
Typofix.

* ad/rebase-i-serie-typofix:
  rebase -i: fix comment typo
</content>
</entry>
<entry>
<title>rebase -i: fix comment typo</title>
<updated>2017-11-09T03:32:25Z</updated>
<author>
<name>Adam Dinwoodie</name>
<email>adam@dinwoodie.org</email>
</author>
<published>2017-11-08T13:20:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3dc5433fd5c68f7e31038061b0d038560b6c0363'/>
<id>urn:sha1:3dc5433fd5c68f7e31038061b0d038560b6c0363</id>
<content type='text'>
Signed-off-by: Adam Dinwoodie &lt;adam@dinwoodie.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'js/rebase-i-final'</title>
<updated>2017-10-03T06:42:47Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-10-03T06:42:47Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5f3108b7b6720ae3ce61caa1a3684b9fcac5c8db'/>
<id>urn:sha1:5f3108b7b6720ae3ce61caa1a3684b9fcac5c8db</id>
<content type='text'>
The final batch to "git rebase -i" updates to move more code from
the shell script to C.

* js/rebase-i-final:
  rebase -i: rearrange fixup/squash lines using the rebase--helper
  t3415: test fixup with wrapped oneline
  rebase -i: skip unnecessary picks using the rebase--helper
  rebase -i: check for missing commits in the rebase--helper
  t3404: relax rebase.missingCommitsCheck tests
  rebase -i: also expand/collapse the SHA-1s via the rebase--helper
  rebase -i: do not invent onelines when expanding/collapsing SHA-1s
  rebase -i: remove useless indentation
  rebase -i: generate the script via rebase--helper
  t3415: verify that an empty instructionFormat is handled as before
</content>
</entry>
<entry>
<title>rebase -i: honor --rerere-autoupdate</title>
<updated>2017-08-02T22:16:09Z</updated>
<author>
<name>Phillip Wood</name>
<email>phillip.wood@dunelm.org.uk</email>
</author>
<published>2017-08-02T10:44:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=9b6d7a6245e3be34a50a94a1174d8aebf5b1a263'/>
<id>urn:sha1:9b6d7a6245e3be34a50a94a1174d8aebf5b1a263</id>
<content type='text'>
Interactive rebase was ignoring '--rerere-autoupdate'. Fix this by
reading it appropriate file when restoring the sequencer state for an
interactive rebase and passing '--rerere-autoupdate' to merge and
cherry-pick when rebasing with '--preserve-merges'.

Reported-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: Phillip Wood &lt;phillip.wood@dunelm.org.uk&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase -i: rearrange fixup/squash lines using the rebase--helper</title>
<updated>2017-07-27T22:35:06Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2017-07-14T14:45:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c44a4c650c66eb7b8d50c57fd4e1bff1add7bf77'/>
<id>urn:sha1:c44a4c650c66eb7b8d50c57fd4e1bff1add7bf77</id>
<content type='text'>
This operation has quadratic complexity, which is especially painful
on Windows, where shell scripts are *already* slow (mainly due to the
overhead of the POSIX emulation layer).

Let's reimplement this with linear complexity (using a hash map to
match the commits' subject lines) for the common case; Sadly, the
fixup/squash feature's design neglected performance considerations,
allowing arbitrary prefixes (read: `fixup! hell` will match the
commit subject `hello world`), which means that we are stuck with
quadratic performance in the worst case.

The reimplemented logic also happens to fix a bug where commented-out
lines (representing empty patches) were dropped by the previous code.

While at it, clarify how the fixup/squash feature works in `git rebase
-i`'s man page.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase -i: skip unnecessary picks using the rebase--helper</title>
<updated>2017-07-27T22:35:05Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2017-07-14T14:45:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cdac2b01ff77d32305610aeb26396e25bffa9dba'/>
<id>urn:sha1:cdac2b01ff77d32305610aeb26396e25bffa9dba</id>
<content type='text'>
In particular on Windows, where shell scripts are even more expensive
than on MacOSX or Linux, it makes sense to move a loop that forks
Git at least once for every line in the todo list into a builtin.

Note: The original code did not try to skip unnecessary picks of root
commits but punts instead (probably --root was not considered common
enough of a use case to bother optimizing). We do the same, for now.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase -i: check for missing commits in the rebase--helper</title>
<updated>2017-07-27T22:35:05Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2017-07-14T14:45:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=943999493fd4084d00bd5b5decc85b68eb64785f'/>
<id>urn:sha1:943999493fd4084d00bd5b5decc85b68eb64785f</id>
<content type='text'>
In particular on Windows, where shell scripts are even more expensive
than on MacOSX or Linux, it makes sense to move a loop that forks
Git at least once for every line in the todo list into a builtin.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase -i: also expand/collapse the SHA-1s via the rebase--helper</title>
<updated>2017-07-27T22:35:05Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2017-07-14T14:45:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3546c8d927d31048f0d6f41aa132ebdb82cf8bda'/>
<id>urn:sha1:3546c8d927d31048f0d6f41aa132ebdb82cf8bda</id>
<content type='text'>
This is crucial to improve performance on Windows, as the speed is now
mostly dominated by the SHA-1 transformation (because it spawns a new
rev-parse process for *every* line, and spawning processes is pretty
slow from Git for Windows' MSYS2 Bash).

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase -i: do not invent onelines when expanding/collapsing SHA-1s</title>
<updated>2017-07-27T22:35:05Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2017-07-14T14:45:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1f4044af7f35f9979d464bc2009b554e8e9dfb99'/>
<id>urn:sha1:1f4044af7f35f9979d464bc2009b554e8e9dfb99</id>
<content type='text'>
To avoid problems with short SHA-1s that become non-unique during the
rebase, we rewrite the todo script with short/long SHA-1s before and
after letting the user edit the script. Since SHA-1s are not intuitive
for humans, rebase -i also provides the onelines (commit message
subjects) in the script, purely for the user's convenience.

It is very possible to generate a todo script via different means than
rebase -i and then to let rebase -i run with it; In this case, these
onelines are not required.

And this is where the expand/collapse machinery has a bug: it *expects*
that oneline, and failing to find one reuses the previous SHA-1 as
"oneline".

It was most likely an oversight, and made implementation in the (quite
limiting) shell script language less convoluted. However, we are about
to reimplement performance-critical parts in C (and due to spawning a
git.exe process for every single line of the todo script, the
expansion/collapsing of the SHA-1s *is* performance-hampering on
Windows), therefore let's fix this bug to make cross-validation with the
C version of that functionality possible.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase -i: remove useless indentation</title>
<updated>2017-07-27T22:35:05Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2017-07-14T14:45:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4b8b65d706f92887c9b80d586dbdcc2abfde60be'/>
<id>urn:sha1:4b8b65d706f92887c9b80d586dbdcc2abfde60be</id>
<content type='text'>
The commands used to be indented, and it is nice to look at, but when we
transform the SHA-1s, the indentation is removed. So let's do away with it.

For the moment, at least: when we will use the upcoming rebase--helper
to transform the SHA-1s, we *will* keep the indentation and can
reintroduce it. Yet, to be able to validate the rebase--helper against
the output of the current shell script version, we need to remove the
extra indentation.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
