【发布时间】:2019-09-11 19:37:43
【问题描述】:
是否可以使用同级路径创建子存储库?
Subversion 是我们在这里“选择”的 VCS,但我已经遇到了很多关于过时提交的问题。在 Hg 和 SVN 下对我的文件进行双重版本对我来说更加方便,并且我已经取得了巨大的成功。但是,我还有其他几个同事在使用 Hg,除了一个他们可能没有注意到的问题之外,我们在那里没有遇到任何问题。
我们的 SVN 布局是这样的
Area/
trunk/
Program1/
Program2/
...
Services/
Program1ServiceA/
Program1ServiceB/
branches/
Program/
Program/
...
Services/
Program1ServiceA/
Program1ServiceB/
tags/
Program1/
Program2/
...
Services/
Program1ServiceA/
Program1ServiceB/
当你在一个项目上工作时,这有点愚蠢,因为如果你的主要项目由 Program1 和 Program2 以及其他一些服务组成......我无法获得所有一次更改集,因为我们有一个与目录匹配的存储库。所以我必须确保 4 或 5 个 repos 是同步的,尤其是一些服务引用。
我在使用单个目录下的 subrepos 时运气不错:
MainRepo/
Subrepo1/
Subrepo2/
但是我想做的是指定一个相对路径,这样我就可以使用同级目录到子存储库,所以我可以有这样的东西:
Area/
Project1/
Program1/ (points to ../trunk/Program1)
Program2/ (points to ../trunk/Program2)
Service1/ (... You get the idea)
Service2/
trunk/
Program1/
Program2/
Services/
Service1/
Service2/
但到目前为止,它并没有像我预期的那样奏效。 trunk/Program1 是 Hg 仓库,我的 Project1/.hgsub 文件包含
Program1 = ../trunk/Program1
我也试过../../trunk/Program1
但是其中任何一个的结果都是创建了一个新目录:Area/Program1/Project1,它是空的。
到目前为止,我能找到的唯一搜索结果使用基于 http 的子存储库,所以我不确定从这里去哪里。我们的开发环境是 Windows 7,所以“简单”的答案是创建联结,但我主要关心的是让这样的事情容易做,所以进入门槛尽可能低,甚至像管理员 cmd 窗口中的 mklink /J Program1 ..\trunk\Program1 这样简单的操作也会阻止人们迁移到更好的工作流程。
是否可以添加我想要的子存储库,或者有更好的方法来做我们正在做的事情?
【问题讨论】:
标签: mercurial mercurial-subrepos