list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
From: Johannes Schindelin <>
Subject: Request for testing v2.19.0-rc0 *with builtin stash/rebase*
Date: Fri, 24 Aug 2018 14:14:44 +0200 (DST)	[thread overview]
Message-ID: <> (raw)


while this mail talks about Git for Windows, please keep in mind that we
try *very* hard to keep Git for Windows' master working correctly not only
on Windows but also on macOS and Linux.

I, for one, run Git built from Git for Windows' `master` branch in my
Linux VMs all the time.

As all of you know by now, the fact that Git was pretty much designed to
work well on Linux is not exactly helping Git for Windows. (Or for that
matter, macOS: Git is substantially slower on macOS than on Linux when
running on the same hardware.) The quickest pay-off comes from converting
Unix shell scripts (which are designed to spawn processes, whereas Windows
is more optimized for multi-threaded applications).

For that reason, I was delighted to see that our Google Summer of Code
pushed pretty hard in that direction. And I could not help myself so I had
to test how much faster things got. Here is the result of my first, really
quick and dirty test:

		without builtin stash/rebase	with builtin stash/rebase
t3400 (rebase)		1m27s				32s
t3404 (rebase -i)	13m15s				3m59s
t3903 (stash)		8m37s				1m18s

What can I say? Even if the numbers are off by as much as 10%, these are
impressive improvements: keep in mind that there is a lot of churn going
on in the test suite because it is itself implemented in Unix shell
scripts (and hence I won't even bother to try more correct performance
benchmarking because that is simply not possible when Unix shell scripts
are in the equation). So the speed improvements of the stash/rebase
commands are *even higher* than this.

So I really, really, really want those builtins in Git for Windows
v2.19.0. At *least* as an option.

Therefore, after creating a pre-release of Git for Windows corresponding
to Git v2.19.0-rc0, I created another one (note the .2 at the end), *with*
those new builtins:

I would like to ask you for help in dog-fooding this. In particular if you
are a heavy stash/rebase user (like I am), it would be helpful to really
kick those tires.

Of course, those are only Windows binaries on that web page, but it should
be easy to compile from that tag on Linux and macOS. I could also build a
macOS installer and add it to that pre-release, is there interest in that?

Currently I am uncertain whether I should spend the time to reinstate the
old scripted `git stash` guarded by `stash.useBuiltin` and the old
scripted `git rebase -i` (guarded by the same `rebase.useBuiltin` that
guards the scripted `git rebase`), as a fall-back (or make the new
builtins opt-ins instead of opt-outs).

So far, I have not encountered any serious bug, but then, I did not really
have a chance to use it yet (I installed it, of course, but I have not
done any serious rebasing yet). So your help will be crucial in
determining where I need to spend time.


             reply	other threads:[~2018-08-24 12:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-24 12:14 Johannes Schindelin [this message]
2018-08-24 16:41 ` [git-for-windows] Request for testing v2.19.0-rc0 *with builtin stash/rebase* Johannes Schindelin
2018-08-24 22:53 ` Bryan Turner
2018-08-25 23:52   ` Johannes Schindelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).