Wow, I really have been away for a long time. I found this thread while cleaning things out now that my 578493578943 projects at work are finally finishing. Also, I'm trying to see if we can incorporate winpthreads in one project :)
I have to say, this is kind of sad, mostly because of 1) misinformation and 2) negative treatment toward a user with a different opinion. I'll address a little of (1) down below. For (2)... Jon, why so angry? If you have good technical reasons for proposing a switch to git, you should be able to present them cogently, ideally from the standpoint of "We need to solve problem X; here's my solution.", and they should easily stand on their own merit. Users are allowed to be dicks.. they're users. Be nice in return. Kai taught me that a looooong time ago. Some German idiom about not plucking chickens before they hatch or something.... I dunno. On Wed, Apr 30, 2014 at 2:05 PM, JonY <jo...@users.sourceforge.net> wrote: > On 4/30/2014 21:34, Rodny Spillig wrote: >>> >>> Because it was a pain to track down patches applied to other branches >>> and reapply it again and again, cherry-pick is god sent. Not to mention >>> merging is quick and simple. It is also far far easier to do a long term >>> private branch in git than in SVN, not to mention, multi-part commit >>> patches are nice. >> >> SVN does all of that easily. Are you sure you aren't just using it wrong? >> The notion that it does not branch and merge is very outdated. There is >> even a whole section in the manual called "Cherry Picking". > > Does SVN allow you to manage a local-only branch that allow merging from > multiple remotes? >> As far as long term branches, how is "svn merge ^/trunk" any different than >> "git pull" ? >> > > Will SVN allow change tracking of said branch if it is never committed > to the server? The big problem here that git might actually fix is that nobody ever used svn correctly, despite my requests. I posted a very long email to the developer list back in 2011 that basically said "don't manually patch files, use svn merge before making edits." Search the list for subject "Proper merging of patches", 8/7/11. I was aggressively shot down by both Ozkan and Kai, who vehemently defended the notion that we should never use the merge capabilities of the version control software. That's the primary reason why patches between branches are impossible to tie together. Fixing this would be great. If switching to git makes people finally keep accurate merge metadata, then that is a pretty good thing. But to be clear, the current difficulty in tracking down patches and applying them elsewhere is a facet of how we chose to misuse svn, not the tool itself. We use svn where I work, and we branch and merge all day long. It's wonderfully easy to do. It does require a net connection, but for our purposes, that's fine. Besides, I'd rather push my work to a server, given how many laptops I broke this past year :) >>>> How will you handle all the various things that you currently distribute? >>>> You have a lot of stuff in your repository, and it all works nicely because >>>> of how svn treats each directory as essentially a separate repo. What are >>>> you going to do about the branches, tags, and experimentals? >>>> >>> >>> Already mentioned in the original email. >> >> Not really. The entire workflow changes drastically, and you've not >> indicated at all how users should deal with that. >> > > I have already mentioned branches and tags are migrated, they're all > there. If you haven't already noticed, git-svn migration preserves > history fine. Experimentals are outdated and unused and has not seen any > changes for a long time, and unlikely to see any significant changes soon. I was about to change a few things in experimental, actually, because I got a nagging email that buildbot can't handle the binutils switch from git to cvs. Although I question whether anyone actually needs buildbot anymore. This change will equally break buildbot, so I may just shut it down. I don't really maintain it, haven't seen Mook log in in a while, and I'm not really part of this project anymore (or haven't been in a long time, and probably haven't been missed). Other than that, the buildroot makefile is in there, which though being out of date is still referenced in a lot of places. And it's used by buildbot. It should likewise be updated or removed, pending what happens to buildbot. I'll send a separate email for that. > We chose git because it is far more familiar to the bulk of our > contributors, namely the ReactOS and Wine developers. Some contributors > are already using their own git band-aid over SVN. None of our > developers have even mentioned Mercurial over the years. Bazaar is out > of the question because SF doesn't have that option. ReactOS uses SVN, not git. They even have svn posting to their IRC, like we used to have with CIA. Maybe they use both? This page says svn, tho: http://www.reactos.org/development/source-control I looked back through a month or so of IRC logs. It looks like this whole thing was a spur of the moment off the cuff thing from you, Jon, where you were complaining about your cherry picking endeavor, opined about git, and Kai asked you to post this message. I didn't find anything before that going back through March. So it doesn't seem like a "we chose git because...", more like a knee-jerk reaction that a number of people on the project seem to like after-the-fact. Sometimes good things come from a proverbial "impulse buy". Maybe this is one such thing. I certainly hope so, since it really seems to not have any forethought at all. I'm not saying that to offend you, Jon, but it really does seem like that's the case. > If you're going to work on the existing SVN WC anyway, why setup an > online git mirror in the first place? What is the benefit of setting up > a read-only DVCS that can only pull from a single source? git mirrors mainly benefit people that are maintaining their own branches, and probably won't contribute back to the project. It probably doesn't apply here. And even if it did, I would not think that we (can I still say "we"?) would want to encourage private forks :) Now... that said, there's a few things that I didn't see addressed anywhere in this thread. 1) Jon, you had asked me to setup a mailing list for svn commits. I did so. Then SF added their own thing that just sends the commit message without the patch in the body. So now we have both. What is your plan with doing that for git? Are you going to still email messages to a list? Are you going to do it per commit, or per merge? Binutils recently tackled this same question, and they settled on 1 email per commit. Also, would you only want emails on a certain branch? 2) Seeing as how it just came up on the mingw list, how does authenticity verification of changes happen when someone wants to merge in a big change? On said list, people made the claim that this project doesn't check that commits are legally safe. Under svn, every change gets checked by someone before it is committed. What will be the new procedure, if a person has a giant blob to merge in? Admittedly, the problem is still there in svn (like that time you merged in the vista headers... lol :) but it's more common under git, I think. Consider putting some thought into how you will accept large changes from a "was this copied from proprietary sources?" standpoint. 3) svn history is impossible to change. git history is purposely malleable, usually so that a user can merge a clean branch without all the false starts that come from development. How will you stop users from (possibly inadvertently) changing the history of whatever "trunk" becomes in an undesirable way? Maybe it's a non-issue? I don't expect malice, but I could easily see a user accidentally doing that. I've done it myself, actually, on two occasions, the first of which required a restore-from-backup (oops..). 4) How does the release process change as documented here: http://sourceforge.net/apps/trac/mingw-w64/wiki/VersionSpec 5) This is kind of a pie-in-the-sky thing, but is it at all possible to keep an svn mirror of the git repo, so that all those many links out there in the wild still work? Might be nice, probably not possible. Oh well. 6) Is there any way to do a partial checkout with git? Right now, someone can check out just a small piece of the whole repo, whatever is interesting. How do you do that in git? I have only ever been able to figure out how to do the whole thing. On one project that I'm on, the svn repo is a few terabytes. That's a blocker for that project switching to git -- it doesn't scale well at all. If you know how to deal with that, I'd be interested. The only answer we've ever found was "split it into many repos", which obviously isn't a viable solution or we would have done it already. Anyway, those are my questions. Obviously I'm just an outsider at this point, so feel free to ignore the whole email if you want. I mainly felt compelled to read the thread because completely coincidentally, another project I'm on is switching from a very old system to git, and doing it very poorly. Then, of course, after reading, I saw that the primary reason has to do with a concern I raised 3 years ago...... But anyway, take it all for what it's worth -- just another email in the inbox. Have fun, happy hacking. ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available. Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public