首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置要从Windows和Linux克隆的mercurial subrepos

如何设置要从Windows和Linux克隆的mercurial subrepos
EN

Stack Overflow用户
提问于 2013-01-29 22:42:02
回答 1查看 161关注 0票数 1

我在Linux机器上有以下存储库结构:

代码语言:javascript
复制
-- source_control
    -- projects
        project1
        project2
        ...
    -- repositories
        repo1
        repo2
        repo3
        ...

这意味着我有一个包含两个嵌套目录projectsrepositoriessource_control目录。repositories目录包含“简单的”repos (即没有subrepos的repos ),而projects包含的repos只是薄层,并且包含来自repositories目录的subrepos。

现在,我在不同项目中的.hgsub文件看起来像这样:

代码语言:javascript
复制
repo1 = /mnt/network/drive/source_control/repositories/repo1
repo2 = /mnt/network/drive/source_control/repositories/repo2

诸若此类。现在,由于所有的开发人员都是在安装了相同网络驱动器的linux机器上工作,所以这种方法工作得很好。然而,我们现在也需要在Windows上工作。这会导致一些问题,因为Windows机器无法访问subrepos路径(网络驱动器可以从Windows机器访问,它们只是使用不同的路径)。

我尝试将.hgsub文件更改为:

代码语言:javascript
复制
repo1 = ../../repositories/repo1
repo2 = ../../repositories/repo2

但是这不起作用(当我提交.hgsub文件时,subrepos是空的)。

我也尝试过用HTTP为存储库提供服务,但它大大减慢了速度,我想找到一种更好的方法(所有的机器都在本地网络中)。在我的.hgsub中使用相对路径的正确方法是什么,这样我就可以在Windows和Linux机器上工作了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-30 00:46:45

根据Mercurial维基的说法,让它与一个全新的存储库一起工作的方法是:

代码语言:javascript
复制
$ echo repo1 = ../../repositories/repo1 > .hgsub
$ hg clone ../../repositories/repo1
; here you could update to whichever version you wanted
$ hg add .hgsub
$ hg commit -m "New relative subrepo added"

然后,克隆主存储库也会克隆子存储库,因为路径是相对的。它在我的Windows机器上运行,所以你的想法基本上是正确的。

在您的实例中,我认为提交修改后的.hgsub就是清除目录,因为您已经重新定义子存储库所指向的内容(我不知道这种行为是否是故意的)。因此,也许在提交之前,您可以自己删除整个子目录并重新克隆:

代码语言:javascript
复制
; modify .hgsub as above
$ rm -rf repo1
$ hg clone ../../repositories/repo1
$ hg commit -m "Made repo1 relative"

这样做可能意味着更新人员将需要再次删除整个子代码库,或者他们甚至可能需要重新克隆整个项目,但在此之后它应该“只是工作”。

当然,首先在测试项目上尝试它,只是为了确保:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14585491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档