Git svn: how do I work with "partial" branches?

By "partial" I mean that the branches in my SVN repository were not copied from trunk /, but from the trunk / subdirectory. Here's the svn repo layout:

trunk/ core projectA projectB ... branches/ core_new_feature (branched from "core" on trunk) another_branch ... 

I turned on my local repository and got:

 mkdir git-svn-repo cd git-svn-repo git svn init -s svn+ssh:// me@svn-server /path/to/repository git fetch <wait four days> 

Now I am trying to work with the "core_new_feature" branch. git branch -a shows:

 * master remotes/core_new_feature ... (a bunch of other branches) 

So I'm trying:

 git checkout --track -b git_new_feature remotes/core_new_feature 

Git checks files and works. However, when I try to view my fresh branch (ls local-git -root / core /), I get weirdness. In particular, I do not see my source code or any existing changes in the SVN branches core_new_feature. All I see under the / kernel is a few empty directories, seeming to be the random span of my original source tree under the kernel.

However, the original source is "core_new_feature" available under local git -root / src / - it is located directly in the root directory of my git repository. ProjectA and projectB have disappeared.

I need the changes in the svn branch "core_new_feature" to move to the right place (namely local-git -root / core /), and other projects not to disappear

It’s clear that I missed some important step here, but I looked through all the examples that I could find, and no one seems to cope with this problem. Maybe I need to configure my local repository differently?

For reference, here is my .git / config file:

 [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true hideDotFiles = dotGitOnly [svn-remote "svn"] url = svn+ssh:// me@svn-server /path/to/repository fetch = repository/trunk:refs/remotes/trunk branches = repository/branches/*:refs/remotes/* tags = repository/tags/*:refs/remotes/tags/* [branch "core_new_feature"] remote = . merge = refs/remotes/core_new_feature 

My repository uses standard branches / tags / connecting line / layout. I executed the commands using the git - bash shell that msysgit provides. Version 1.7.4.

Thanks in advance for any help.

+4
source share
1 answer

I have not used git-svn myself, but markjaquith has a good article on how it uses it to manage its commits for WordPress development. You might consider hiding it if it mentions anything useful. I removed it the next time I update one of my WordPress plugins or create a new one (all WordPress on svn).

http://markjaquith.wordpress.com/2011/05/26/developing-on-wordpress-using-git/

0
source

All Articles