Hi Taylor,
On Mon, 6 Feb 2017, Taylor Blau wrote:
> It was a pleasure meeting you at Git Merge in Brussels.
The pleasure was mine!
> > However, you had mentioned that you could squeeze it a little more? I
> > do not really know how much this means for the installer size, as we
> > use LZMA to squeeze it as much as possible, and I *think* that debug
> > symbols are fairly compressible. So let's test this? Could you provide
> > me with a still-functional but heavily-stripped git-lfs.exe to play
> > with?
>
> I _think_ I can squeeze it a bit more. Since we don't need debugger
> symbols in a production release, I think just omitting them will provide
> a small benefit over compressing them. I don't have a ton of experience
> in tweaking these sorts of `go build` flags, but I'll spend some time on
> this next week and see how far we can get it down.
Let me know if you need access to a machine where I can set up a script to
test out final installer sizes quickly.
> > This is already a ton of an improvement, as the installer increased by
> > barely more than 6%.
>
> If not, I think only increasing the installer 6% is a fair trade-off.
Agreed. But let's try first.
> One other point we already went over in person is that LFS does not
> currently have a schedule release cycle. We typically release point
> releases every 3-5 weeks or so (with the occasional emergency release).
> If I recall correctly, you said that this would work fine for the way
> that Git for Windows is currently distributed.
Yes, we already have to deal with several mutually incompatible schedule
releases: Git itself, Git Credential Manager, MSYS2's runtime, OpenSSL and
of course OpenSSH. And all the other packages (if something like
Heartbleed raises its ugly head, I will release an "out of band" version
with the affected component updated and fixed).
My personal rule of thumb is: whenever one of the included components is
available at a newer version, I will always try to update our package
repository (Git for Windows' SDK is essentially a friendly fork of MSYS2,
and they use `Pacman` of Arch Linux to manage packages similar to apt-get,
Homebrew and the likes; Git for Windows has its own Pacman repository
where it hosts MSYS2 and MINGW packages). If the update of the component
fixes a serious bug that could affect users negatively, *and* if I am
aware of it, I will release an "out of band" version.
"Out of band" here means that it does not follow upstream Git's release
cycle. When a new Git version comes out, I will always try to drop
everything else (fun, fun) and release a new Git for Windows version with
the same version [*1*]. When I have to release an official version without
any such corresponding upstream Git release, I will append an (2), (3),
(4), etc.
For example, after Git for Windows v2.11.0 came out, there was no upstream
Git release for over six weeks, and since I had some fixes for bugs
affecting users negatively, I released v2.11.0(2) [*2*]. Since that
version introduced a serious bug that was only detected 30 minutes *after*
publishing it, the next day I released v2.11.0(3). After that, upstream
Git v2.11.1 was released, so I rebased Git for Windows' 71 topic branches,
generated all 9 files for release (~350MB), tested it as usual, and
published Git for Windows v2.11.1. In a room full of laptops with only one
wifi. At GitMerge.
> We're really excited about getting Git LFS into Git for Windows. Thanks
> for getting a thread open about this, and I'm looking forward to diving
> into this more next week and getting back to you.
Yes, I think this will improve the user experience. Thank you for your
help!
Ciao,
Johannes
Footnote *1*: There has been one Git version that broke things *only* on
Windows, and we skipped that version: v2.9.1.
Footnote *2*: I should have released that version much sooner. As it was,
v2.11.0 was out for more than a month with known serious issues. In the
future, expect me to be more liberal with out-of-band releases.