git svn部分颠覆树

时间:2011-09-18 08:15:33

标签: git svn git-svn

我正在使用git在我的本地机器上开发当前项目。 有一个subversion服务器,我必须根据我当前的主分支不时更新。

假设我在svn中的目录是:

project/module/

在这个目录中有一个通用目录和我的svn结构

project/module/aDirectory
project/module/myGitDirectory/trunk
project/module/myGitDirectory/branches
project/module/myGitDirectory/tags

关注git-svn我设置我的git以将目录用作上游:

[svn-remote "svn"]
        url = https://mygit.test.com/project
        fetch = module/myGitDirectory/trunk:refs/remotes/trunk
        branches = module/myGitDirectory/branches/*:refs/remotes/*
        tags = module/myGitDirectory/tags/*:refs/remotes/tags/*

我在git中正常工作并使用

提交了我的更改
git svn dcommit

到部分svn树

这很好,直到其他人犯了

project/module/aDirectory

不在我当地的git repo。

git svn dcommit的失败是:

Unable to determine upstream SVN information from HEAD history.

我用Google搜索了这个问题并在此处找到了一些解决方案,但解决方案并没有真正帮助我。要么根本不起作用,要么我必须手工处理数十个文件,这是我不想要的。 我目前的解决方法是检查完整的svn,将更改从git复制到svn repo并提交它们。

所以我的问题是,是否可以在git-svn中使用这样的部分svn树,就像我一样? 我是否通过为git-svn指定错误的目录而犯了错误? 或者git-svn不适合我的场景。

如果我可以按照我开始的方式执行此操作,那么svn会对未在我的本地git中跟踪的文件提交什么?

我在其他一些项目中使用了svn和git的组合,从来没有遇到任何麻烦,但是整个svn树也在git中管理。所以每个svn的提交在我的git repo中都有一个合适的位置:)

1 个答案:

答案 0 :(得分:0)

这很奇怪。但你也可以将aDirectory克隆到git。只需将其添加到配置

即可
[svn-remote "svn-extra"]
        url = https://mygit.test.com/project
        fetch = aGitDirectory:refs/remotes/aDirectory

从svn

克隆aDirectory之后
git svn fetch svn-extra

尝试在你的回购中使用新版本来获取前一个

git svn fetch --fetch-all

这可能有助于git-svn理解这种非典型提交。