* Re: Any chance for a Git v2.1.5 release? [not found] ` <xmqqk2z7qe8s.fsf@gitster.dls.corp.google.com> @ 2015-02-25 0:55 ` Kyle J. McKay 2015-02-25 5:13 ` Junio C Hamano 2015-03-12 1:23 ` Kyle J. McKay 0 siblings, 2 replies; 8+ messages in thread From: Kyle J. McKay @ 2015-02-25 0:55 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On Feb 24, 2015, at 11:52, Junio C Hamano wrote: > Kyle J. McKay <mackyle@gmail.com> writes: > >> 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. >> 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. >> 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-25 0:55 ` Any chance for a Git v2.1.5 release? Kyle J. McKay @ 2015-02-25 5:13 ` Junio C Hamano 2015-02-26 7:40 ` Kyle J. McKay 2015-03-12 1:23 ` Kyle J. McKay 1 sibling, 1 reply; 8+ messages in thread From: Junio C Hamano @ 2015-02-25 5:13 UTC (permalink / raw) To: Kyle J. McKay; +Cc: Git Mailing List "Kyle J. McKay" <mackyle@gmail.com> writes: >> 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. Heh. Making noises to find like-minded people would be the first step to build a viable team, and hopefully you are already doing a good job here ;-) >> 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. That is why I used the word "team". > 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. Cutting release tarballs including the pre-formatting docs might consume a lot of machine time, but it does not cost me time at all. I have Makefile for that ;-) Judging which fixes that have proven themselves to be safe and sound (by being in 'next', 'master' and hopefully 'maint' for some time) are worthy enough of down-merging to the LTS track is something I'd want to farm out to the LTS team. I am already doing the "safe and sound" part by deciding which topics to merge to 'maint' among the topics that have gone through 'pu' to 'next' to 'master' branches, but not all that are worthy enough to be merged to 'maint' may be important enough to bother downmerging and updating LTS track with, and picking which ones matter to the LTS users is what the folks who are interested in the LTS can help. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-25 5:13 ` Junio C Hamano @ 2015-02-26 7:40 ` Kyle J. McKay 2015-02-26 20:54 ` Junio C Hamano 0 siblings, 1 reply; 8+ messages in thread From: Kyle J. McKay @ 2015-02-26 7:40 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On Feb 24, 2015, at 21:13, Junio C Hamano wrote: > "Kyle J. McKay" <mackyle@gmail.com> writes: > >>> 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. > > Heh. Making noises to find like-minded people would be the first > step to build a viable team, and hopefully you are already doing a > good job here ;-) Doesn't seem to be catching much interest though. Maybe they're all just watching silently peering through the blinds waiting to see how it turns out. ;) >>> 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. > > That is why I used the word "team". > >> 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. > > Cutting release tarballs including the pre-formatting docs might > consume a lot of machine time, but it does not cost me time at all. > I have Makefile for that ;-) > > Judging which fixes that have proven themselves to be safe and sound > (by being in 'next', 'master' and hopefully 'maint' for some time) > are worthy enough of down-merging to the LTS track is something I'd > want to farm out to the LTS team. I am already doing the "safe and > sound" part by deciding which topics to merge to 'maint' among the > topics that have gone through 'pu' to 'next' to 'master' branches, > but not all that are worthy enough to be merged to 'maint' may be > important enough to bother downmerging and updating LTS track with, > and picking which ones matter to the LTS users is what the folks who > are interested in the LTS can help. If I were to keep a maint-lts up-to-date somewhere (with suitable down- merges matching the manner in which you maintain your tree) that you could pull from and potentially make releases from. I would not want to pick up anything that hadn't already made it into master or maint and I don't think any actual release based off maint-lts should have any fix that has not already appeared in another non-maint-lts release. So any given maint-lts release date would be expected to lag behind the corresponding master/maint release date that contained the same fixes (except possibly for a coordinated security fix release). That said, there's no reason I couldn't also keep a pu-lts up-to-date somewhere external to your tree that interested parties could grab that would include fixes making their way into maint/master that I believe would be candidates for inclusion in maint-lts once they graduated. I would like to better understand how the various heads are maintained. I've read MaintNotes and I've got the concepts, but I'm still a little fuzzy on some details. It looks to me like all topics still only in pu after master has been updated are then rebased onto the new master and then pu is rebuilt. MaintNotes doesn't get into the rebasing details. None of the graphic log viewers I've tried are much help -- too many lines running around although the graphiclog on repo.or.cz helps a bit as it shows --first-parent links as a bolder line, but still after the first page that's not much help either. I vaguely recall you may have explained some of this in more detail in the context of explaining how you used the scripts in todo to put everything together when someone asked a question about it on the list. But I can't seem to find that message anymore. :( I think I mostly understand how master, next and pu are maintained. But MaintNotes says "Whenever a feature release is made, 'maint' branch is forked off from 'master' at that point." What happens to the previous maint at that time? Is it just renamed to maint-X.X? Also, how do you handle a down merge to maint when you have this: * (master) * merge topic foo |\ | * topic foo |/ * c * b * a * (tag: vX.X.X, maint) * And you want to down merge topic foo into maint (where foo is a topic that didn't even first enter pu until some time after the vX.X.X release). Won't doing 'checkout maint', 'merge ":/^topic foo"' pull in commits a, b and c as well? I can think of several things to do here, but how do you normally handle this situation? -Kyle ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-26 7:40 ` Kyle J. McKay @ 2015-02-26 20:54 ` Junio C Hamano 2015-02-26 23:38 ` Kyle J. McKay 0 siblings, 1 reply; 8+ messages in thread From: Junio C Hamano @ 2015-02-26 20:54 UTC (permalink / raw) To: Kyle J. McKay; +Cc: Git Mailing List "Kyle J. McKay" <mackyle@gmail.com> writes: > I would like to better understand how the various heads are > maintained. I've read MaintNotes and I've got the concepts, but I'm > still a little fuzzy on some details. It looks to me like all topics > still only in pu after master has been updated are then rebased onto > the new master and then pu is rebuilt. Topics in 'pu' not yet in 'next' _can_ be rebased, but unless there is a good reason to do so, I wouldn't spend extra cycles necessary to do such thing. I even try to keep the same base when replacing the contents of a branch with a rerolled series. For example, today I have this: $ git config alias.lgf log --oneline --boundary --first-parent $ git lgf master..nd/slim-index-pack-memory-usage 3538291 index-pack: kill union delta_base to save memory 7b4ff41 FIXUP 45b6b71 index-pack: reduce memory footprint a bit - 9874fca Git 2.3 and Duy has a newer iteration of it starting at $gmane/264429. What I would do, after saving these patches in a mbox +nd-index-pack, would be to $ git checkout 9874fca $ git am -s3c ./+nd-index-pack $ git show-branch HEAD nd/slim-index-pack-memory-usage ... compare corresponding changes between the old and the new ... until I am satisified; otherwise I may tweak the new one $ git rebase -i 9874fca ... and then finally $ git branch -f nd/slim-index-pack-memory-usage HEAD to update the topic. Of course, it would be necessary to rebuild 'pu' by merging all the topics that are in it on top of 'master'. https://github.com/gitster/git.git has these topic branches broken out and you can observe how they change over time from your local reflog for refs/remotes/<that repository>/<topic branches>. > I vaguely recall you may have explained some of this in more detail in > the context of explaining how you used the scripts in todo to put > everything together when someone asked a question about it on the > list. But I can't seem to find that message anymore. :( There may be a copy in Documentaiton/howto/ somewhere. > I think I mostly understand how master, next and pu are maintained. > But MaintNotes says "Whenever a feature release is made, 'maint' > branch is forked off from 'master' at that point." What happens to > the previous maint at that time? Is it just renamed to maint-X.X? After finishing 2.3.0 release, at some point while 'master' is still at 2.3.0, something like this would happen: $ git branch -m maint maint-2.2 $ git branch maint master > Also, how do you handle a down merge to maint when you have this: > > * (master) > * merge topic foo > |\ > | * topic foo > |/ > * c > * b > * a > * (tag: vX.X.X, maint) > * I don't, and this is done by making sure I do not get into such a situation in the first place. A general rule of thumb when applying a set of patches that are fixes eventually worth having in older maintenance tracks is to find the oldest maintenance branch and apply them there. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-26 20:54 ` Junio C Hamano @ 2015-02-26 23:38 ` Kyle J. McKay 2015-02-26 23:51 ` Junio C Hamano 2015-02-27 22:49 ` Philip Oakley 0 siblings, 2 replies; 8+ messages in thread From: Kyle J. McKay @ 2015-02-26 23:38 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On Feb 26, 2015, at 12:54, Junio C Hamano wrote: > "Kyle J. McKay" <mackyle@gmail.com> writes: > >> I would like to better understand how the various heads are >> maintained. I've read MaintNotes and I've got the concepts, but I'm >> still a little fuzzy on some details. It looks to me like all topics >> still only in pu after master has been updated are then rebased onto >> the new master and then pu is rebuilt. > > Topics in 'pu' not yet in 'next' _can_ be rebased, but unless there > is a good reason to do so, I wouldn't spend extra cycles necessary > to do such thing. I even try to keep the same base when replacing > the contents of a branch with a rerolled series. For example, today > I have this: > > $ git config alias.lgf > log --oneline --boundary --first-parent > $ git lgf master..nd/slim-index-pack-memory-usage > 3538291 index-pack: kill union delta_base to save memory > 7b4ff41 FIXUP > 45b6b71 index-pack: reduce memory footprint a bit > - 9874fca Git 2.3 > > and Duy has a newer iteration of it starting at $gmane/264429. What > I would do, after saving these patches in a mbox +nd-index-pack, > would be to > > $ git checkout 9874fca > $ git am -s3c ./+nd-index-pack > $ git show-branch HEAD nd/slim-index-pack-memory-usage > ... compare corresponding changes between the old and the new > ... until I am satisified; otherwise I may tweak the new one > $ git rebase -i 9874fca > ... and then finally > $ git branch -f nd/slim-index-pack-memory-usage HEAD > > to update the topic. Of course, it would be necessary to rebuild > 'pu' by merging all the topics that are in it on top of 'master'. Thanks. That's helpful. > After finishing 2.3.0 release, at some point while 'master' is still > at 2.3.0, something like this would happen: > > $ git branch -m maint maint-2.2 > $ git branch maint master So the reason I don't notice force-updates to maint when this happens is because of the "Sync with maint" commits that make sure the new maint contains the old one. >> Also, how do you handle a down merge to maint when you have this: >> >> * (master) >> * merge topic foo >> |\ >> | * topic foo >> |/ >> * c >> * b >> * a >> * (tag: vX.X.X, maint) >> * > > I don't, and this is done by making sure I do not get into such a > situation in the first place. > > A general rule of thumb when applying a set of patches that are > fixes eventually worth having in older maintenance tracks is to find > the oldest maintenance branch and apply them there. If I were to keep a maint-lts branch somewhere I would need to cherry- pick topics with desired fixes that fall into that situation. That's what I expected but when you mentioned down merging the fixes I wanted to make sure I wasn't overlooking something. I'll see about setting up a maint-lts in a local git repository clone and tracking LTS fixes. If I'm able to keep that going without it becoming a black-hole of temporal need that sucks the life right out of me ;) then perhaps we can have a discussion at a future date about what would be needed for you to consider pulling from it and issuing LTS releases off it. :) -Kyle ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-26 23:38 ` Kyle J. McKay @ 2015-02-26 23:51 ` Junio C Hamano 2015-02-27 22:49 ` Philip Oakley 1 sibling, 0 replies; 8+ messages in thread From: Junio C Hamano @ 2015-02-26 23:51 UTC (permalink / raw) To: Kyle J. McKay; +Cc: Git Mailing List "Kyle J. McKay" <mackyle@gmail.com> writes: >> After finishing 2.3.0 release, at some point while 'master' is still >> at 2.3.0, something like this would happen: >> >> $ git branch -m maint maint-2.2 >> $ git branch maint master > > So the reason I don't notice force-updates to maint when this happens > is because of the "Sync with maint" commits that make sure the new > maint contains the old one. I could also do git branch maint-2.2 maint git push . master:maint ;# not +master:maint to make sure that I won't rewind 'maint', but this works because 'master' is designed to be always a super-set of 'maint'. > If I were to keep a maint-lts branch somewhere I would need to cherry- > pick topics with desired fixes that fall into that situation. That's > what I expected but when you mentioned down merging the fixes I wanted > to make sure I wasn't overlooking something. Yup. I _can_ become sloppy especially late in the release cycle and end up doing something silly like this: - Fork km/svn-fix from somewhere it _could_ be merged to 'maint' (e.g. "the last big release", e.g. v2.3.0). - Merge km/svn-fix to 'master' early in a cycle; - A mistake is found in the topic late in the cycle; as the next release will happen soon _anyway_, and I do not happen to consider km/svn-fix is so important a fix to be merged to 'maint', I apply a fix-up patch directly on top of 'master'; - A release candidate is tagged from 'master'. Then even though you can easily grab a broken-out tree at github.com:gitster/git, km/svn-fix topic alone cannot be merged to 'maint' as it would lack the late fix. I've been trying to be careful but I cannot promise to be perfect X-<. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-26 23:38 ` Kyle J. McKay 2015-02-26 23:51 ` Junio C Hamano @ 2015-02-27 22:49 ` Philip Oakley 1 sibling, 0 replies; 8+ messages in thread From: Philip Oakley @ 2015-02-27 22:49 UTC (permalink / raw) To: Kyle J. McKay; +Cc: Git Mailing List, Adam Spiers, Junio C Hamano From: "Kyle J. McKay" <mackyle@gmail.com> > On Feb 26, 2015, at 12:54, Junio C Hamano wrote: > >> "Kyle J. McKay" <mackyle@gmail.com> writes: >> >>> I would like to better understand how the various heads are >>> maintained. I've read MaintNotes and I've got the concepts, but I'm >>> still a little fuzzy on some details. It looks to me like all >>> topics >>> still only in pu after master has been updated are then rebased onto >>> the new master and then pu is rebuilt. >> >> Topics in 'pu' not yet in 'next' _can_ be rebased, but unless there >> is a good reason to do so, I wouldn't spend extra cycles necessary >> to do such thing. I even try to keep the same base when replacing >> the contents of a branch with a rerolled series. For example, today >> I have this: >> >> $ git config alias.lgf >> log --oneline --boundary --first-parent >> $ git lgf master..nd/slim-index-pack-memory-usage >> 3538291 index-pack: kill union delta_base to save memory >> 7b4ff41 FIXUP >> 45b6b71 index-pack: reduce memory footprint a bit >> - 9874fca Git 2.3 >> >> and Duy has a newer iteration of it starting at $gmane/264429. What >> I would do, after saving these patches in a mbox +nd-index-pack, >> would be to >> >> $ git checkout 9874fca >> $ git am -s3c ./+nd-index-pack >> $ git show-branch HEAD nd/slim-index-pack-memory-usage >> ... compare corresponding changes between the old and the new >> ... until I am satisified; otherwise I may tweak the new one >> $ git rebase -i 9874fca >> ... and then finally >> $ git branch -f nd/slim-index-pack-memory-usage HEAD >> >> to update the topic. Of course, it would be necessary to rebuild >> 'pu' by merging all the topics that are in it on top of 'master'. > > Thanks. That's helpful. > >> After finishing 2.3.0 release, at some point while 'master' is still >> at 2.3.0, something like this would happen: >> >> $ git branch -m maint maint-2.2 >> $ git branch maint master > > So the reason I don't notice force-updates to maint when this happens > is because of the "Sync with maint" commits that make sure the new > maint contains the old one. > >>> Also, how do you handle a down merge to maint when you have this: >>> >>> * (master) >>> * merge topic foo >>> |\ >>> | * topic foo >>> |/ >>> * c >>> * b >>> * a >>> * (tag: vX.X.X, maint) >>> * >> >> I don't, and this is done by making sure I do not get into such a >> situation in the first place. >> >> A general rule of thumb when applying a set of patches that are >> fixes eventually worth having in older maintenance tracks is to find >> the oldest maintenance branch and apply them there. > > If I were to keep a maint-lts branch somewhere I would need to cherry- > pick topics with desired fixes that fall into that situation. That's > what I expected but when you mentioned down merging the fixes I wanted > to make sure I wasn't overlooking something. <minor bikeshed> The announcement a few days ago by Adam Spiers ($gmane/264405) of a new video of his git-deps tool ($gmane/262606) may be of interest for determining the dependency charts. It looked interesting for this type of issue. His original blog is http://blog.adamspiers.org/2015/01/19/git-deps/ with repo at https://github.com/aspiers/git-deps <\minor bikeshed> > > I'll see about setting up a maint-lts in a local git repository clone > and tracking LTS fixes. If I'm able to keep that going without it > becoming a black-hole of temporal need that sucks the life right out > of me ;) then perhaps we can have a discussion at a future date > about what would be needed for you to consider pulling from it and > issuing LTS releases off it. :) > > -Kyle > -- Philip ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Any chance for a Git v2.1.5 release? 2015-02-25 0:55 ` Any chance for a Git v2.1.5 release? Kyle J. McKay 2015-02-25 5:13 ` Junio C Hamano @ 2015-03-12 1:23 ` Kyle J. McKay 1 sibling, 0 replies; 8+ messages in thread From: Kyle J. McKay @ 2015-03-12 1:23 UTC (permalink / raw) To: Git mailing list The first two messages in this thread were dropped by the vger mailing list for some unknown reason. In an attempt to make the mailing list archives of this thread complete, the original two messages in this thread are included below. -Kyle ---- BEGIN FIRST MESSAGE ---- From: Kyle J. McKay <mackyle@gmail.com> Date: February 24, 2015 09:16:05 PST To: Junio C Hamano <gitster@pobox.com> Cc: Git Mailing List <git@vger.kernel.org> Subject: Any chance for a Git v2.1.5 release? Message-Id: <C5211E53-8905-41C9-9D28-26D7BB51E76A@gmail.com> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes As you know, I help out with repo.or.cz. Recently the admins have been discussing upgrading the version of Git we use in order to support newer features such as pack bitmaps. While we do use a slightly customized gitweb, we have always stuck to an official Git release for everything else. Repo.or.cz provides fetch (git, http, https, ssh), browsing (gitweb) and push (ssh, https). Additionally, created repositories can be mirrors (no push allowed) of other repositories (including svn via git- svn). Email notification of ref changes (along with diffs) can also be requested. We are finding that in order to upgrade Git at this point we would need to build a custom Git with cherry picked fixes for various issues that have come up or they would likely be triggered by one of the services repo.or.cz provides. In addition, as there are numerous reports of an unresolved issue with git-svn starting with v2.2.0 upgrading to v2.2.0 or later presents a problem since we have several mirrors that rely on git-svn. Which brings us back to the subject of this email, is there any chance for a v2.1.5 release? After reviewing a few release dates: 2011-06-26T12:41:26-07:00 v1.7.6 2012-02-05T23:51:07-08:00 v1.7.6.6 2013-11-27T12:14:52-08:00 v1.8.5 2014-02-13T13:42:01-08:00 v1.8.5.5 2014-02-14T11:36:11-08:00 v1.9.0 2014-05-30T10:15:10-07:00 v1.9.4 2014-05-28T11:04:29-07:00 v2.0.0 2014-07-30T14:20:01-07:00 v2.0.4 2014-08-15T15:09:28-07:00 v2.1.0 2014-10-29T10:48:57-07:00 v2.1.3 2014-11-26T13:18:43-08:00 v2.2.0 2015-01-12T14:06:20-08:00 v2.2.2 2015-02-05T13:24:05-08:00 v2.3.0 (I have omitted the dates of the 5 security releases on 2014-12-17 as that seems like an extraordinary event unlikely to be repeated.) 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. 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? Meaning that they would receive maintenance updates (e.g. fixes for invalid memory accesses/crashes, regressions or security issues) for an extended period of time, say at least 6 months? Here's the analysis that led to this request: Goal 1: add support for symref=HEAD:refs/... capability Goal 2: add support for pack bitmaps Nice to have: The CVE-2014-9390 fix, but repo.or.cz does not create any working trees so it's not mandatory. Goal 1: symref=HEAD:refs/... requires at least Git 1.8.4.3. However, repo.or.cz runs git-daemon with read-only access to the repositories and since Git 1.8.4.2 shallow clones require write access. This was corrected in v2.0.0. So at least v2.0.0 would be needed for symref=HEAD:refs/.... Goal 2: Pack bitmap support was added in v2.0.0, but it's probably not a good idea to run without 21134714 (pack-objects: turn off bitmaps when we split packs) just in case which requires at least v2.1.3. Nice to have: If at least v2.1.3 is required, then we might as well use v2.1.4 since the primary change from v2.1.3 to v2.1.4 is the addition of the CVE-2014-9390 fix. What about a later release, v2.2.0 or later? git-svn is reported to suffer from occasional ".git/ Git_svn_hash_XXXXXX: Bad file descriptor" errors since v2.2.0 making that a non-starter. No fix is currently available in the Git repository. Since 660c889e (sha1_file: add for_each iterators for loose and packed objects) loose objects in alternates directories may not be found when pruning. This affects v2.2.0 and later. A fix is currently in master. This is an absolute must have for repo.or.cz as alternates are used to implement repository forks. Since d38379e (make update-server-info more robust), affecting v2.2.x, the files used by non-smart HTTP clients could have the wrong permissions. This might preclude them from being updated correctly on repo.or.cz. It would require research to see if repo.or.cz is affected. The fix for this d91175b2 (update-server-info: create info/ * with mode 0666) was released in v2.3.0. So why not v2.1.4 then? There's an XDL_FAST_HASH performance regression that affects v1.7.11 and later [1]. But that can be turned off in config.mak. New repositories have an extra +x on the config file since v2.1.0 (fixed in v2.2.2), but we can compensate with a chmod after creating a new repository. Git blame has a crashing regression since ea02ffa3 (mailmap: simplify map_user() interface) that affects v1.8.2 and later. The fix is currently in master. repo.or.cz enables blame in the gitweb interface so that would be a serious regression. There's an issue with ungetting EOF. That would seem unlikely to affect repo.or.cz, but, I wonder if any of the displays used by gitweb could trigger attempts to read a .mailmap or .gitattributes blob? I don't know. Would require research to be certain or just picking up the fix which is currently in master. There's a decimal_width overflow regression since dc801e7 (diff -- stat: use less columns for change counts) affecting v1.7.11 and later that can lead to an infinite loop in some cases. Presumably either gitweb or the diffs sent out by the ref update email notification mechanism could trigger this. A fix is currently in master. There is a regression since v1.7.1.1 where a fetch from a non-smart HTTP source could potentially fail to retrieve the correct objects. As repo.or.cz has several mirrors set up from non-smart HTTP sources a fix for this (currently in master) would be nice but is probably not mandatory since repo.or.cz is currently running a version of Git with this regression and has not received any reports of failures that could be related to this. Since fbd4a703 (list-objects: mark more commits as edges in mark_edges_uninteresting) affecting v1.8.4.2 and later combined with 200abe74 (list-objects: only look at cmdline trees with edge_hint) affecting v1.9.0 and later there is a performance regression when pushing with lots of refs to non-shallow repos. The fix 2dacf26d (pack-objects: use --objects-edge-aggressive for shallow repos) was released in v2.3.0. -Kyle [1] http://thread.gmane.org/gmane.comp.version-control.git/261638 ---- END FIRST MESSAGE ---- ---- BEGIN SECOND MESSAGE ---- From: Junio C Hamano <gitster@pobox.com> Date: February 24, 2015 11:52:03 PST To: Kyle J. McKay <mackyle@gmail.com> Cc: Git Mailing List <git@vger.kernel.org> Subject: Re: Any chance for a Git v2.1.5 release? Message-Id: <xmqqk2z7qe8s.fsf@gitster.dls.corp.google.com> Content-Type: text/plain Kyle J. McKay <mackyle@gmail.com> writes: > 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. 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. 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? > 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"? 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; - 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. 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. 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", 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? > 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. ---- END SECOND MESSAGE ---- ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-03-12 1:23 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <C5211E53-8905-41C9-9D28-26D7BB51E76A@gmail.com> [not found] ` <xmqqk2z7qe8s.fsf@gitster.dls.corp.google.com> 2015-02-25 0:55 ` Any chance for a Git v2.1.5 release? Kyle J. McKay 2015-02-25 5:13 ` Junio C Hamano 2015-02-26 7:40 ` Kyle J. McKay 2015-02-26 20:54 ` Junio C Hamano 2015-02-26 23:38 ` Kyle J. McKay 2015-02-26 23:51 ` Junio C Hamano 2015-02-27 22:49 ` Philip Oakley 2015-03-12 1:23 ` Kyle J. McKay
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 NNTP newsgroup(s).