
On 3/27/2012 4:08 PM, Stephan Menzel wrote:
Joel,
I was following this discussion for quite some time now and didn't want to get involved. Just one point here.
On Tue, Mar 27, 2012 at 5:57 AM, Joel de Guzman <joel@boost-consulting.com> wrote:
All I want to do is to extract a modular Spirit repo from the monolithic Boost repo, with the ability to easily do upstream/ downstream merges. But I can't do it *easily* with any of the DVCS mentioned.
This can be done with git submodules really well. I was actually doing this in a major project (the size of which outmatches boost) quite recently. There was a massive code base hosted in svn and I transitioned to bgit and at least partially I broke it down into submodules (using subtree by the way, which works like a charm) and assembled a new "main tree" out of those submodules while maintaining a build system that enables build, dependency management and testing of either seperate submodules (that pull in their dependencies) or the whole tree. Essentially assuming identity of "entity you can depend on" and "submodule". Boost strikes me as a textbook use case of this procedure. Especially since modularity is already inherent in the code base and only needs to be cast into physical form.
All in all, this was incredibly cool and I enjoy working with the resulting system every day. The only small downside that is left is the fact that I haven't gotten around to automatically generating the main tree by parsing a dependency graph in a little python script that puts the right submodules in the right refs at the right places. Which would work nice with the git python bindings.
With all this being said, the reason why I didn't bring all this up in this discussion is the unfortunate fact that all this is fruitless in large project as long as there are sentiments against it.
I guess it's back to SVN. The amount of hair pulling is the same whatever D/VCS I try. Oh well...
[snip anti-git rant]
Plus, as many have pointed out during this discussion, there are ways of using the power of git without going the whole nine yards. git-svn and friends. Even though this is just a shadow of what could be done, it's still a great way of actually getting folks to try it and therefore lose their sentiment.
Cheers, and excuse my wandering slightly off topic...
Believe me, I tried git-svn as suggested in this thread. And believe me, I want to make it work, but failed to do so, and in the process lost a weekend which could have been better allocated for C++ coding. Ok, I open my challenge to you and any Git/Hg fans. Again, all I want is to: 1) Extract this modular repo structure from Boost: spirit boost spirit libs spirit 2) that can merge both ways (upstream and downstream to and from the boost SVN trunk); needless to say, with all the histories intact. If anyone can do this and offer a way that's **actually tested**, I'm all ears. Emphasis: I don't want to waste any more time following dead ends! I want a procedure that's actually tested with the Boost repo and the Spirit library in particular (using git-svn or whatnot). Better yet, if someone can actually put the modular repo somewhere (github, gitorious), with specific and sane usage instructions, then I'd immediately use that. Regards, -- Joel de Guzman http://www.boostpro.com http://boost-spirit.com