On Feb 26, 2010, at 12:38 PM, Mathieu Marache wrote:

Speaking of which, here's my 2c. Git is designed to address the exact problems discussed in this thread - it allows contributors to safely develop parallel branches and 'grown-ups' to merge selected branches with the main branch, and it has great support for tags and full releases, *but* it's way harder for the dabbler to work on some features but try to keep up to date with an ongoing flow of many changes. For instance, if I were working on ImageStreams, and had occasional small fixes, but also wanted to keep up to date with the 'head' branch, I'd expect to have a lot of merge problems when I update - I do have with another project that has moved to Git.

I'm confused. DCVS tools should ease this process (or at least they all claim it loud). It would be grand if you could be more precise in your description of the process. Because it looks like this could be a show stopper...

I'm not sure it would be a show stopper. For the regular full-on updaters - who I believe we're trying to reduce the strain on right now - there's great tools for merging branches and making new ones etc. For the beginner or straightforward user, getting a full checkout of a tagged release is easy enough.

It's just the in between users - those who tend to make a few tweaks, and/or would like to stay current that will have to work a bit harder.

In essence, the problem seems to be that Git always regards your local work - which is a real repo, as sacrosanct, and you can't tell it to ignore your noodlings and overwrite it with the lovely fresh code from the master branch. If you try, by accident, then auto-merges tend to fail (in my experience) and you end up with a hung repo that's between one state and another. You then, in theory would go by hand and merge things and execute some magic to tell Git that. In the particular project I dealt with it, this included a huge amalgamated C++ file that would be suicidal to try to merge by hand.

I also find that the failed merges fills files with <<<<<<< mine type stuff, and double copies of things (mine/theirs in one file) that make diffs very hard. The solution seems to be to make branches very often, so you can revert them or switch away from them. I think they're enforcing what they believe to be the correct behaviour. It was Linus that made it, after all. They actually removed an old merge strategy of 'prefer theirs', god bless 'em.

I sometimes solve it with a forced update/switch trick, but it always feels like a bodge.

I still think making the change will help - it's obvious the load on one developer is unfair, and I'd prefer it be Git, but I wanted to warn people it's not as seamless a change as it might seem from the ease of importing svn.

Bruce


_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to