views:

73

answers:

1

Without access to git and git-submodule, I need to incorporate a shared-ip repository into two separate project repositories while minimizing the overhead of branching. People on either project need the ability to easily branch off their project's mainline trunk while also branching off the shared-ip repo. If/when the user modifies the shared-ip repo and they're ready to re-incorporate their edits into their project's mainline trunk their edits will also be regressed against the other project's mainline to ensure that their edits are compatible with both projects.

I know this is relatively easy to do with git ( except for the mechanism that does the continuous integration into a project's mainline -- which is homebrew scripts ), but is there an easy way to do this in both Subversion and Bitkeeper?

EDIT: 'svn:externals' almost solves my subversion issue, but what if the external repository isn't in Subversion.

Is there an equivalent to 'svn:externals' or 'git-submodule' for bitkeeper? Can this be done with client-side post clone hooks? How?

EDIT: Ok. I think I figured out how to do this. If you need to pull the common ip-reuse repo into both Subversion and BitKeeper, you need to have the common reuse repo in Subversion so you can use 'svn:externals' like emk indicated. For BitKeeper you need to create a post-incoming trigger which knows to do a checkout command from a subversion server.

+1  A: 

In Subversion, you can either use Subversion externals, or simple copy the necessary directory around in your Subversion tree:

svn cp svn+ssh://.../libs/foo/trunk svn+ssh://.../projects/bar/trunk/libs/foo

To locally modify the code, just commit to projects/bar/trunk/libs/foo.

The fun part is merging in new changes from lib/foo/trunk. In this case, you want to go ahead and do a normal Subversion merge. (This will be easier if you're using Subversion 1.5. If you're using Subversion 1.4, you'll need to apply the patches manually.)

Unfortunately, I have no experience with BitKeeper.

emk