“部分”,我的意思是我的SVN存储库中的分支不是从trunk /复制,而是从trunk /的子目录复制。这是svn repo布局:
trunk/
core
projectA
projectB
...
branches/
core_new_feature (branched from "core" on trunk)
another_branch
...
我已经访问了我的本地存储库并获取了:
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>
现在我正在努力研究“core_new_feature”分支。 git branch -a显示:
* master
remotes/core_new_feature
... (a bunch of other branches)
所以我试试:
git checkout --track -b git_new_feature remotes/core_new_feature
Git检出文件,似乎正在运行。然而,当我尝试浏览我刚刚检查过的分支(ls local-git-root / core /)时,我感到很奇怪。具体来说,我没有看到我的源代码或core_new_feature SVN分支上的任何现有更改。我在核心/下面看到的只是一些空目录,在核心下我现有的源代码树看似随机一些。
然而,在local-git-root / src /下可以使用“strong_new_feature”源 - 它就在我的git存储库的根目录中。上面的projectA和projectB已经消失了。
我需要的是“core_new_feature”svn分支上的更改转到正确的位置(即local-git-root / core /),以及其他项目不会消失
显然,我在这里错过了一些关键步骤,但我已经查看了我能找到的所有例子,似乎没有人处理这个问题。也许我需要以不同的方式设置我的本地存储库?
供参考,这是我的.git / config文件:
[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
我的存储库使用标准分支/标签/主干/布局。我使用msysgit提供的git-bash shell运行命令。版本是1.7.4。
提前感谢您的任何帮助。
答案 0 :(得分:0)
我自己并没有使用git-svn,但是markjaquith在如何使用它管理他的WordPress开发提交方面有一个很好的帖子。你可以考虑略读它,看看他是否提到了有用的东西。下次我更新我的一个WordPress插件,或者创建一个新插件(WordPress上的所有内容都在svn上)时,我已经隐藏起来。
http://markjaquith.wordpress.com/2011/05/26/developing-on-wordpress-using-git/