(tortoise)svn:将不同的分支重定位到不同的存储库(=不同的URL和UUID)

时间:2012-03-15 10:34:52

标签: git svn tortoisesvn

我正在研究一个项目,让我们说两个不同的公司A和B; A是一个很大的而B是一个小的(我的)。两家公司都在同一个项目上工作,但我的工作只是在一个小模块上工作。因此,我们有一个用于A洞项目的存储库,另一个存储库仅用于B正在处理的少数文件。

我想要的是从A的存储库(分支主要)查看主项目,开发一小部分文件(分支开发)并将它们提交到B的存储库。但是现在我面临以下问题:我想将两个分支分离到具有不同URL和UUID的不同存储库位置/存储库。 (怎么样)我可以管理它吗?

(如果这不适用于svn / tortoise-svn,git-svn会不会这样做?)

3 个答案:

答案 0 :(得分:1)

供应商分支和svn:externals

回购A的“分支主”在回购B树中添加为“some-branch”。 “分支开发”在清洁回购B树内开发,完成分支与svn:exnernals再次从回购A

答案 1 :(得分:0)

SVN中的分支和合并仅适用于同一存储库。所以没有办法达到你想要的目的。

但是,如果您要陈述您想要达到的目标,也许可以找到解决方案:

  • 解除公司A和B的开发,以便没有重叠?
  • 处理你的小项目(在大项目中不会注意到这一点),但共享文件?
  • ...

如果第二个有趣,以下可能有效:

  1. 使用SVN在本地查看大项目。
  2. 在那里创建一个新的Git存储库。
  3. 将Git存储库本地克隆到一个单独的位置。
  4. 在该单独的存储库中工作,并在您认为应该将更改传递给大项目时推送您的更改。
  5. 然后将Subversion工作副本(同时是Git存储库的工作副本)中的更改提交给大项目。

答案 2 :(得分:0)

最简单的方法是有两个工作副本A和B,并手动将文件从A复制到B.

如果公司A允许它,您可以在存储库A中分支项目并将该分支作为外部存储库导入到项目B.缺点是公司A将在其存储库中包含您的源代码。

编辑:一个存储库可能包含来自另一个存储库的文件夹,通过svn:external属性。您基本上在存储库中声明某个文件夹实际上是某个其他存储库的完整工作副本。在您的情况下,“其他存储库”实际上是您感兴趣的项目的一个分支。当您添加属性(文件夹名称和分支的URL在另一个存储库中)时,只需更新工作副本,Tortoise将全部下载来自另一个存储库的文件。一个小缺点是你必须单独提交另一个项目和你的工作副本(两个单独的提交操作)。