Git svn:我如何使用“部分”分支?

时间:2011-05-23 18:12:41

标签: git branch git-svn

“部分”,我的意思是我的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。

提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

我自己并没有使用git-svn,但是markjaquith在如何使用它管理他的WordPress开发提交方面有一个很好的帖子。你可以考虑略读它,看看他是否提到了有用的东西。下次我更新我的一个WordPress插件,或者创建一个新插件(WordPress上的所有内容都在svn上)时,我已经隐藏起来。

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