Thread (2 messages) flat view 2 messages, 1 author, 2016-06-15

Re: Any chance for a Git v2.1.5 release?

From: Kyle J. McKay <hidden>
Date: 2016-06-15 23:03:54

On Feb 24, 2015, at 11:52, Junio C Hamano wrote:
Kyle J. McKay [off-list ref] writes:
quoted
Which brings us back to the subject of this email, is there any  
chance
for a v2.1.5 release?
...
It appears that the average support lifespan of a Git release from
initial release date through last released maintenance update is
approximately 2-3 months with the 1.7.6 release being an exception at
a little over 7 months.
That matches my expectation.

A typical cycle lasts for 8-12 weeks, and during that time, topics
that are bugfixes that have graduated to the 'master' branch are
merged to the 'maint' branch with some lag and then the tip of
'maint' gets tagged as a maintenance release from time to time.
Some important but trivial fixes are further merged to older
maitenance tracks like 'maint-2.2', 'maint-2.1', etc.

But these topics downmerged to older maint-* branches have to be
very trivial for an obvious reason: there are only 24 hours a day
and 7 days in a week, and bugs that affect real world use cases are
found by using the software in real world use cases.  Usually I use
something a bit ahead of 'next' exactly for this reason---we would
want to catch bugs before topics are merged to 'master'.  Although I
sometimes have "let's use 'maint' for my work" day once or twice
every month, I cannot afford to do that for anything older than the
tip of 'maint' myself.
Obviously there would have to actually be some interest in having an  
older long-term-support release and some folks willing to exercise  
such a thing.  Unless we can figure out a way to clone you. ;) ;)
The consequence of the above is this.  v2.1.1 may be more stable
than v2.1.0 and v2.1.2 may be more stable than v2.1.1, but later
tagged versions on older maintenance tracks are made by merging
topics only after "ah, these are obvious enough" eyeballing without
real use (at least by me), once newer feature release is made and
there is a newer maintenance track.  I would not be surprised if
v2.1.5, if it is made, has hidden interactions between the changes
since v2.1.4 and the older codebase to cause unforeseen bugs.

When I say "the tip of 'master' is meant to be more stable than any
tagged versions", I do mean it.
Some fixes would likely not be back portable (e.g. to fix X you first  
need change Y which needs change Z which needs ...), not without  
ending up pulling in things that exceed the scope of a "maintenance"  
update.
Having said all that, if I were to tag maint-2.1 branch as 2.1.5
today, we would have

   6aaf956 is_hfs_dotgit: loosen over-eager match of \u{..47}

that does not exist in 2.1.4.  Is that what you want?
I suppose in that it fixes "false positives" it is a regression fix,  
but if that's all that showed up in v2.1.5, no, that wouldn't make it  
worthwhile.
quoted
If a v2.1.5 release is out of the question, would it be possible to
periodically designate certain Git releases as "long term support"
releases?
I can designate ;-), but I do not think I'd be the right person to
maintain or long-term-support it.  Are you volunteering to oversee
the "LTS team"?
I could not promise a team of more than one member.  And that would  
not be full-time 24/7 either.
It would involve:

   - Monitor "git log --first-parent maint-lts..master" and find
     the tip of topic branches that need to be down-merged;

   - Down-merge such topics to maint-lts; this might involve
     cherry-picking instead of merge, as the bugfix topics may
     originally be done on the codebase newer than maint-lts;
I've been cherry-picking fixes for a while now onto older releases.  I  
don't suppose down-merging would be that much more difficult with a  
fallback to cherry-picking.
   - Use the tip of the maint-lts branch in everyday work.

The last item is the most important of the above, because I do not
have time for that.  I can help with the first two to some degree,
though.
That's pretty much all I use at this point -- a slightly older release  
with cherry-picked fixes.  While it did cause me to find the problem  
with the first version of the loose alternates fix, having only one  
person use such a release doesn't provide that much coverage.
If the lts releases need to be tagged and published by me, then lts
team can have me pull from the tip of maint-lts they are confident
with and have me sign it and push it out.
It occurs to me that if the "maint-lts" updates were limited to crash  
fixes, regressions and security issues then often the pre-built man  
pages and docs from the release it's based on could be used as-is with  
the exception of the new release notes which might save some time.
If the primary concern you have with the currently maintained
releases is git-svn, perhaps a better way forward for you,
especially if you are willing to maintain your own "release plus
patches",
That was the discussion the admins had that we prefer to avoid rolling  
our own, but if there's no other option then we will do that.  Some  
other Git hosters obviously do not have the same reticence about  
rolling their own Git release (as can be seen from the capabilities  
returned).  There are several fixes not yet in a release that are  
needed besides just git-svn, but since the other fixes are all in  
master now they'll be out in the next release.  But, picking up that  
release to get those fixes also exposes us to new code that has not  
yet had widespread use and a "maint-lts" would hopefully pick up the  
fixes without doing that.
might be to keep a patch that reverts recent git-svn
changes back to v2.1.whatever and deploy the up-to-date release
and that patch on top?
That has occurred to me assuming there's not some dependency issue  
there that causes a cascade of reversions.
quoted
Nice to have: The CVE-2014-9390 fix, but repo.or.cz does not create
any working trees so it's not mandatory.
Even if you do not have a working tree, people who use you as the
meeting place and push into you and fetch from you do, so I do not
necessarily agree with your assessment.
Having the feature does no good unless it's turned on.  :)  How  
expensive would it be to turn such a feature on in terms of CPU  
usage?  Running `git fsck` is rather expensive and the name of the  
config option suggests it's related, is it also as expensive?  When  
someone pushes a 2GB pack, what impact does that option have on server  
load?  All existing repos would have to be checked first.  Do we eject  
any that fail?  What about mirrors?  Do we refuse to mirror from a  
source that fails the check?  As long as it's not too CPU expensive, I  
could see turning it on immediately for new push repos and after  
checking, existing push and mirror repos that pass.  Hopefully all of  
them just pass the check.  So we cannot just deploy a CVE-2014-9390  
fix even if we had it without first doing some work assuming the CPU  
load is not an issue.  But it would be nice to have so we *could*  
proceed in that direction.

-Kyle
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help