我正在使用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中都有一个合适的位置:)
答案 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理解这种非典型提交。