Eva*_*nor 5 svn git repository
我们正在测试使用git作为存储库系统而不是我们的普通svn.我们总是需要一个svn存储库.在svn中,我们将此存储库与svn propset链接为svn:externals.这确保了该特定的,使用频繁的存储库实际上只有一个全局副本.
既然我们有git存储库,我想将SVN存储库链接到它,其方式与svn:externals基本相同.我有点成功地做到了这一点.我是git的新手,请原谅任何无知.
在纯git repo(我通过克隆git clone gitmaster@address.org:mygitrepo
)我用过:
git svn clone svn+ssh://svnowner@hostname.org/path/to/mysvnrepo mysvnrepo
Run Code Online (Sandbox Code Playgroud)
获取其他svn存储库的副本.这很好用,我可以通过git svn rebase
mysvnrepo目录获取SVN repo的新版本并通过提交更改git svn dcommit
.
要将它与我使用的主git存储库结合起来:
git add mysvnrepo
git commit mysvnrepo
git push
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,如果我现在克隆其他地方的git repo(再次使用git clone gitmaster@address.org:mygitrepo
),当我得到包含所有文件的mysvnrepo目录时,我无法与SVN repo交互.我得到错误:"无法在git svn rebase之后确定工作树历史记录中的上游SVN信息".可能相关,当我在其他地方克隆它时,mysvnrepo目录中没有.git文件夹(这是svn信息存储在原始repo中的地方).
我已经搜索了一下这个问题,但所有对它的引用似乎都让svn repo首先出现问题,而我的问题是让它为另一个用户工作.
也许我的问题是如何成功添加/提交/推送svn repo到git repo?即是:git add mysvnrepo; git commit mysvnrepot; git push
; 这样做的正确方法?
编辑:改进以提供更多上下文
看起来您想要做的是将一个 git 存储库包含在另一个存储库中,就像您使用svn:externals
. 恰好包含的存储库是用git svn
;创建的 这不会真正影响您将该存储库包含在另一个存储库中的方式。
您需要将要包含在其他公开可用的 git 存储库中。然后,您可以使用git submodule或git subtree包含它。两者的工作方式都不完全相同svn:externals
;git subtree
然而,对于 git 存储库的其他用户来说可能对初学者更友好。
根据您使用的语言和软件是什么,您还可以考虑简单地为频繁使用的存储库创建一个单独的 git 存储库,并将其构建为自己的独立库、jar 文件或您拥有的其他内容。
仅当您打算完全切换到 git 时,上述方法才有效。如果您的团队中的某些人打算继续在 SVN 中工作一段时间,git substree
或者git submodule
不会为您工作。
相反,看看这个问题来模拟 svn:externals with git svn
.
要设置每个人都可以使用 git,请按照git svn手册页中“基本示例”下的最后一个示例进行操作。每个人都可以git clone
在本地运行一些命令,而不是执行完整的git svn clone
.