当前位置:  开发笔记 > 开发工具 > 正文

SVN:外部相当于Git?

如何解决《SVN:外部相当于Git?》经验,为你挑选了2个好方法。

我使用svn:externals从另一个SVN存储库中使用了两个SVN项目.

我怎样才能在Git中拥有相同的存储库布局结构?



1> Paul..:

Git有两种类似的方法,但不完全等同于svn:externals:

Subtree merges insert the external project's code into a separate sub-directory within your repo. This has a detailed process to set up and then is very easy for other users, because it is automatically included when the repository is checked out or cloned. This can be a convenient way to include a dependency in your project.
It is easy to pull changes from the other project, but complicated to submit changes back. And if the other project have to merge from your code, the project histories get merged and the two projects effectively become one.

Git子模块(手动)链接到另一个项目的存储库中的特定提交,就像带有-r参数的svn:externals一样.子模块易于设置,但所有用户都必须管理子模块,子模块不会自动包含在结帐(或克隆)中.
尽管将更改提交回其他项目很容易,但如果更改了回购,这样做可能会导致问题.因此,将更改提交回正在开发的项目通常是不合适的.


仅供参考,现在可以用svn:externals指定具体的修订版本(我相信1.5或1.6)?
仅供参考,git子模块可以自动管理和提交.git创建一个.gitmodules文件,可以/应该像.gitignore文件一样提交.有关详细信息,请参阅[http://git-scm.com/book/en/Git-Tools-Submodules].
@NateParsons始终可以使用`svn:externals`指定确切的修订号.对于修订版1.5,语法已更改为更灵活的格式.添加的是相对URL寻址.

2> VonC..:

正如我在" Git子模块新版本更新 "中提到的,您可以使用Git 1.8.2子模块实现相同的SVN外部功能:

git config -f .gitmodules submodule..branch 

这足以使子模块跟随分支(如子模块上游repo的远程分支的LATEST提交).你需要做的就是:

git submodule update --remote

这将更新子模块.

更多细节在" git submodule追踪最新 ".

要将现有子模块转换为跟踪分支的一个子模块:请参阅" Git子模块:指定分支/标记 "中的所有步骤.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有