有几个类似的问题,但我找不到任何足够接近的问题,不能提出新问题。
我们拥有一个由20多个项目组成的受到控制的vs2010解决方案 我们还有一个承包商在其中一个项目的一部分上远程工作,一个Labview FPGA + RT + DotNetAssembly。
我希望将他的代码放入我们Mercurial仓库的“ContractorsSVNRepo”(见下文)中,当我想要更新时,我会下载他的svn仓库,如果我对它感到满意,那么就可以使用我们的mercurial repo。
我可以访问他的svn repo以获得他的部分项目,但是出于安全/ IP原因,他无法访问我们的Mercurial仓库。因为我不熟悉mercurial我甚至不知道是否可以让他只访问一个回购的文件夹,所以这就是我想出的。
这会有用吗?能做到吗?我只是在目标文件夹中创建一个svn repo,下载它然后只将我想要的文件添加到我们的仓库?两个scc系统会在一起扭转/发挥得很好吗?我会尝试一下,看看会发生什么,但我不熟悉mercurial但不想冒险破坏我们的mercurial repo并且无法快速恢复。
OurAppsMercurialRepo
Proj1
Proj2
Proj3
Proj3Folder1
Proj3Folder2
Proj3Folder3
ContractorsSVNRepo
...
Proj40
编辑1:
我不认为我已经做到了这一点,因为拉动来自另一台机器的更改只会拉动.hgsub文件,它不会拉动svn repo(或者我可以告诉,甚至尝试我没有被要求或添加任何登录详细信息)。
但是,当我拉动另一台机器时,它会拉动.hgsub文件。 链接的文档表明,对主要回购进行拉动将拉回两个回购,但它只会拉动多头回购?我错过了这些步骤吗?
Edit2:
在OurAppsMercurialRepo内部:
svn co http://svn.contractor.com/svn/proj4other/trunk Proj3 / ContractorsSVNRepo将以下内容直接放在OurAppsMercurialRepo内的.hgsub文件中:
Proj3 / ContractorsSVNRepo = [svn] http://svn.contractor.com/svn/proj4other/trunk从现在开始,当您提交OurAppsMercurialRepo时,提交时对subversion结帐的修订将存储在mercurial中
感谢您的回复,但是这并没有改变任何事情,但是它仍然没有下载/更新svn源拉动主回购,我现在得到一个错误的路径名称
“中止:路径包含非法组件:”
我怀疑这是因为我们的路径名称中包含“。”所以我要放弃并创建一个单独的svn repo并手动将我想要的文件复制到mercurial中。它不会失败,它不会让其他开发人员头疼,我不会再浪费时间了。
答案 0 :(得分:6)
是的可能。见mercurial Subrepos - > https://www.mercurial-scm.org/wiki/Subrepository
答案 1 :(得分:2)
内部OurAppsMercurialRepo
:
svn co http://svn.contractor.com/svn/proj4other/trunk Proj3/ContractorsSVNRepo
将以下.hgsub
文件直接放在OurAppsMercurialRepo
:
Proj3/ContractorsSVNRepo = [svn]http://svn.contractor.com/svn/proj4other/trunk
从现在开始,当您提交OurAppsMercurialRepo
时,提交时的subversion checkout修订版存储在mercurial中。例如。您当地使用的ContractorsSVNRepo
不被迫成为最新的。
如果您担心他们会在一段时间后删除subversion存储库,您可以先制作一个cron / schedule任务,每晚/每小时/ 5分钟拉出>转换svn repo。这里的神奇之处是HgSubversion,它可以在一个多变的中转换Subversion存储库,并且保持两者之间的映射。然后使用mercurial存储库作为上面的子参数:
安装HgSubversion后,将subversion存储库转换为mercurial存储库:
hg clone -U http://svn.contractor.com/svn/proj4other proj4otherconverted
(我最后删除了trunk
部分,因为HgSubversion也可以转换分支和标签)
然后在proj4otherconverted
目录中安排此命令:
hg pull
在OurAppsMercurialRepo
内部制作目录Proj3
,然后:
hg clone http://hg.yourcompany.com/hg/proj4otherconverted Proj3/ContractorsSVNRepo
将以下.hgsub
文件直接放在OurAppsMercurialRepo
:
Proj3/ContractorsSVNRepo = http://hg.yourcompany.com/hg/proj4otherconverted