question: connecting to multiple remote svn projects
Hi,
Given a layout in a single subversion repository like this:
module1/branches/1.0/work
module2/branches/1.0/work
I would like achieve the following layout locally, in git:
module1/work
module2/work
Obviously I can create multiple git repositories in separate directories, but I would like them to be in a single repository. I can also get the same layout as subversion, but this breaks various bits of build infrastructure. I've fiddled with --branches, etc on git svn init but can't figure out how to achieve this.
I don't care about tracking the subversion branches in git, or being able to switch between subversion branches.
Is this possible? How can I do this?
many thanks
Dave
Quoted 7 lines · Dave Rodgman
Given a layout in a single subversion repository like this:
module1/branches/1.0/work
module2/branches/1.0/workI would like achieve the following layout locally, in git:
Quoted 7 lines
module1/work
module2/workObviously I can create multiple git repositories in separate directories, but I would like them to be in a single repository. I can also get the same layout as subversion, but this breaks various bits of build infrastructure.
Can you just create the file structure you want using symlinks? That would be the easiest way.
Quoted 2 lines
I don't care about tracking the subversion branches in git, or being able to switch between subversion branches.
Don't care about tracking *any* subversion history, or just the history of branches other than the 1.0 branch you've listed above? I assume the latter, because otherwise the problem is easy (just copy the latest revision of the files into a git repo and commit).
Other options that might work for you: create a "superproject" branch and import the two modules using git-submodule, or else import them using git-subtree (http://github.com/apenwarr/git-subtree). Or import the svn history and then use git-filter-branch to move stuff around.
Good luck.
Avery
Quoted 10 lines
Quoted 10 lines
Given a layout in a single subversion repository like this:
module1/branches/1.0/work
module2/branches/1.0/workI would like achieve the following layout locally, in git:
module1/work
module2/work
Quoted 7 lines
Quoted 4 lines
Obviously I can create multiple git repositories in separate directories, but I would like them to be in a single repository. I can also get the same layout as subversion, but this breaks various bits of build infrastructure.
Can you just create the file structure you want using symlinks? That would be the easiest way.
It would, and this is what I do on Linux. On Windows, obviously, this doesn't work.
Quoted 7 lines
Quoted 2 lines
I don't care about tracking the subversion branches in git, or being able to switch between subversion branches.
Don't care about tracking *any* subversion history, or just the history of branches other than the 1.0 branch you've listed above? I assume the latter, because otherwise the problem is easy (just copy the latest revision of the files into a git repo and commit).
Indeed. I want history, but only for a given branch.
Quoted 4 lines
Other options that might work for you: create a "superproject" branch and import the two modules using git-submodule, or else import them using git-subtree (http://github.com/apenwarr/git-subtree). Or import the svn history and then use git-filter-branch to move stuff around.
As far as I can understand, git-submodule pulls in a specific commit, as does git subtree? I've experimented a little but with not much success.
I want "git svn rebase" (or some equivalent command, or series of commands) to update the contents of module1/work to the latest commit into this branch, and similarly "git svn dcommit" should also commit into module1, module2, etc. Basically, I want my working copy to have the same functionality as if moduleX/work was the actual layout in subversion. I'm using git as a client for a svn repository, rather than doing a one-time import. Is this possible?
thanks for your help
Dave
Quoted 2 lines · Dave Rodgman
As far as I can understand, git-submodule pulls in a specific commit, as does git subtree? I've experimented a little but with not much success.
Well, they both pull in a specific commit *and* all the history leading up to it, although the two of them do it in slightly different ways.
Quoted 7 lines
I want "git svn rebase" (or some equivalent command, or series of commands) to update the contents of module1/work to the latest commit into this branch, and similarly "git svn dcommit" should also commit into module1, module2, etc. Basically, I want my working copy to have the same functionality as if moduleX/work was the actual layout in subversion. I'm using git as a client for a svn repository, rather than doing a one-time import. Is this possible?
Yes. Both tools will work for two-way svn import/export, although submodules will probably be a bit more convenient.
Essentially, you create one branch (and one git-svn remote entry) for each svn subproject, and one branch for the combined project. In the combined project, your .gitmodules should use '.' as the submodule repository path (since all your submodule objects are in the same local repo).
Then you 'git svn fetch' to retrieve the latest from each svn project.
Then, in each submodule, you can 'git pull .. git-svn-branchname' to get the latest stuff from git-svn for that branch.
Then, in the combined project, you 'git commit' to lock in those commits.
It's a little screwy, but it works :)
Avery