繁体   English   中英

将git仓库克隆到Subversion仓库的子目录中

[英]Clone a git repository into subdirectory of a subversion repository

我有一个现有的SVN存储库,该存储库具有一个“公共”目录,其中包含不同项目共享的模块。 布局是这样的:

http://example.com/svn/trunk/common/module_1
http://example.com/svn/trunk/common/module_2
...
http://example.com/svn/trunk/common/module_X

由于各种原因,我正在使用git管理其他项目。 我需要在SVN和git项目中都使用module_X ,因此我打算使用git-svn。 但是,出现以下问题:

user@host:/repos$ git svn clone http://example.com/svn/trunk/common/module_X destination

此命令将在/ repos / destination中创建一个新的git存储库,并将module_X内容提取到其中。 我需要完成的是将module_X放在/ repos / destination / module_X中 ,而不是直接将其内容提取到/ repos / destination /中

一开始似乎是一种选择

user@host:/repos$ git svn clone =--ignore-paths='^((?!module_X).*)$' http://example.com/svn/trunk/common/ destination

它将在/ repos / destination和一个子目录/ repos / destination / module_X中建立一个存储库。 但是问题是我的SVN信息库具有相当大的修订历史,并且在整个common /路径上的运算速度很慢。

有谁知道如何做到这一点?

简短答案:您不能,也可以。 Git尚未设计为承载多个项目,因此无法克隆独立的子目录,一个git ==一个项目。 即使可以做到这一点(请看以下非常有见地的答案: 如何仅克隆Git存储库的子目录? ),您将失去所有使更新保持最新的能力。

尽管您可以尝试使用一种方法,但还是要告诉git-svn为您拥有的每个模块创建一个分支,这里有一个很好的例子: 使用Git-Svn克隆非标准Svn存储库 ,应该看起来像:

% git svn clone https://svn.myrepos.com/myproject myproject --ignore-paths='^((?!common).*)$' --trunk=trunk/ --branches=trunk/common/* --prefix=svn/

(未试)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM