标签: subrepos

Mercurial:自动添加子存储库的Windows脚本

RyanWilcox这里发布了一个脚本,可以使用以下命令自动添加子库:

$ cd $TOP_OF_HG_PROJECT
$ addsubrepo.sh $URL_TO_HG_PROJECT relative_path/you/want_to/put_the_subrepo
Run Code Online (Sandbox Code Playgroud)

如何将其翻译成Windows批处理或PowerShell脚本?

powershell mercurial batch-file subrepos mercurial-subrepos

6
推荐指数
1
解决办法
343
查看次数

使用Mercurial递归标记所有子存储库

是否可以标记主父存储库并将标记添加到所有子存储库中?

如果没有这个,如果我曾经将项目作为子存储库删除并自行访问它,它将丢失所有标签信息,因为这只属于父存储库.

tags mercurial dvcs subrepos mercurial-subrepos

6
推荐指数
1
解决办法
782
查看次数

Mercurial 远程子库

我正在尝试设置我的 Mercurial 存储库系统以使用多个子存储库。我基本上按照这些说明使用 Mercurial 客户端 v1.5 设置客户端存储库,并且我正在使用HgWebDir来托管我的多个项目。

我有一个具有以下结构的 HgWebDir:

http://myserver/hg
|-- fooproj
|-- mylib
Run Code Online (Sandbox Code Playgroud)

. .mylib使用的公共模板库的一些集合在哪里fooproj?的结构fooproj看起来像这样:

 fooproj
 |-- doc/
 |   `-- readme
 |-- src/
 |   `-- main.cpp
 |-- .hgignore
 |-- .hgsub
 `-- .hgsubstate
Run Code Online (Sandbox Code Playgroud)

.hgsub看起来像:

src/mylib = http://myserver/hg/mylib
Run Code Online (Sandbox Code Playgroud)

根据我对文档的解释,这应该有效:

第一个“嵌套”是我们工作目录中的路径,第二个是要从中提取的 URL 或路径。

此外,mylib项目目录结构如下所示:

mylib
|-- .hg
|   |-- 00changelog.i
|   |-- dirstate
|   |-- requires
|   |-- store
|   |   |-- 00changelog.i
|   |   |-- 00manifest.i
| …
Run Code Online (Sandbox Code Playgroud)

mercurial subrepos

5
推荐指数
1
解决办法
4128
查看次数

回购中的Mercurial回购

是否可以在现有的mercurial存储库中创建mercurial存储库?

我们的想法是将存储库的子目录作为不同的存储库来处理,你是如何做到的?

我不是在谈论subrepos(至少,如果我理解了subrepos的目的......),但如果这是subrepos确实存在的方式,那我就错了,我会试着把它弄好:)

谢谢~Aki

编辑:更清楚的是,我想知道在没有指定modules/subrepos的情况下,将存储库放在另一个存储库中会发生什么,实践和含义.换句话说:如果我这样做会发生什么:

hg init globalRepo
hg init globalRepo/subRepo
Run Code Online (Sandbox Code Playgroud)

并按原样使用这两个存储库?

mercurial subrepos

5
推荐指数
1
解决办法
1927
查看次数

我可以将多个mercurial子目录的更改提交到新的命名分支吗?

我有一个mercurial存储库,里面有多个子存储库.存储库有一个visual studio解决方案,其中包含存储库和子存储库中的项目.

假设我想要实现一个新功能,该功能需要更改存储库中的主项目,并更改解决方案中的一个依赖项目(比方说,在依赖项中添加新的共享接口,以及接口的实现)主要项目).

然后我想提交更改,但是要提交给新的命名分支,因为它尚未完成,稍后将合并.使用tortoiseHg我在存储库中提交更改,指定要创建的新分支.提交依次提交子仓库的更改,但在我的测试中,它不会在其存储库中创建新分支,而只是将更改集添加到当前分支.

我可以显式地执行对子仓库的提交并在那时指定分支名称,但我希望有一种方法可以将存储库中的整个更改集一次性提交到每个存储库中的新分支,这样我的工作流程就更清晰了.这可能吗?

mercurial subrepos branching-and-merging

5
推荐指数
1
解决办法
1691
查看次数

Mercurial子存储库 - 管理更复杂的依赖关系层次结构

我有一个使用相当标准的源树方法+ mercurial子存储库的主项目.

Master
\lib - compiled binaries - things like log4net, AutoFac, etc
\source - VS solution, one folder per project, etc
\tools - stuff used during the build process

\source\contrib - contains any subrepos like so:

\source\contrib\Sub1
\source\contrib\Sub2

Master\.hgsub contains something like
source\contrib\Sub1 = https://myserver.com/Sub1
Run Code Online (Sandbox Code Playgroud)

现在,最近确定Sub2需要来自Sub1的一些代码,因此我必须调整这个新的依赖结构.

问题当然是如果我按照与上面相同的方法并将Sub1作为Sub2的子目录添加,我最终会遇到这种丑陋的情况.

\source\contrib\Sub2\source\contrib\Sub1
Run Code Online (Sandbox Code Playgroud)

Master现在有2个独立的Sub1副本!

所以我知道在引用subrepos(=的RHS)时我应该使用相对路径 - 但是这在我理解的情况下对我的场景没有帮助.我认为没有办法让LHS 在Master存储库之外生存,我认为这是我真正需要的.

关于如何解决这个问题,我有几个想法,但没有一个与我坐在一起,我认为必须有更好的方法.我理想的解决方案允许我在多个项目中共享相同的子仓库,而不会支付多个副本的罚款.在我的场景中,这似乎是浪费和低效的(另外,我希望所有依赖于Sub1的项目使用相同的hg修订版,而不是单独修改)

  1. 删除Sub1作为Master的子库,并更改Master解决方案中的任何相对路径以引用双重嵌套的Sub1.这个路径结构不仅可怕,而且如果将Sub3添加到具有Sub1依赖性的master,我仍然有2个Sub1副本.

  2. 编译Sub1的副本,然后将其放入\ lib目录中.Sub1仍在进行一些流失,我宁愿建立源版本.我不想在新的二进制文件中不断地复制到源树的税(并且在树上膨胀).

  3. 以某种方式打破了Sub2对Sub1的依赖性.基于存储库的体系结构,这可能不会发生.Sub1包含一些非常通用的共享库代码.Sub2包含两个非常独立的项目中需要的WCF服务契约/接口/类型 - 客户端SDK和服务器实现.此时,将这些存储库分开是有意义的.

也许我正在考虑这个错误...或者我可能没有意识到某些技巧.

任何帮助表示赞赏.

mercurial subrepos

5
推荐指数
1
解决办法
1416
查看次数

使用在mercurial存储库中有另一个git subrepo的git subrepo,这可能吗?

我有一个mercurial存储库,并添加了没有问题的git subrepo(hg 1.8).

问题是:这个混帐subrepo内部有它自己的其它混帐subrepository并没有被拉(它在Git的subrepo .gitmodules文件),除非我做了git clone --recursive我的git subrepo:这样做它的工作方式.

问题是:我hg pull在另一台机器的存储库中执行了一次,它会拉动它git subrepo,但它不会拉动它.gitmodules.当我做了一个.gitmodules只被拉到另一台机器上git clone --recursive.

有没有人有任何建议来处理这种情况?该丑陋的解决办法是做一个git clone和简单的所有文件(包括git的元数据)添加到我的Mercurial库,不像个subrepo.

git version-control mercurial subrepos

5
推荐指数
1
解决办法
3415
查看次数

如何显示子存储库更新进度?

我有一个Mercurial存储库,其中包含SVN子存储库。在hg updateMercurial冻结.hgsubstate文件期间。我知道这是因为Mercurial svn在后台执行命令以拉出SVN的正确修订版。

对于我的用户来说,这是非常不直观的,因为SVN子存储库很大,整个外观看起来像挂了一样。

有没有办法在这样的操作中转储svn输出?

svn mercurial tortoisehg subrepos mercurial-subrepos

5
推荐指数
1
解决办法
854
查看次数

如何在不再提取subrepos的情况下制作本地克隆?

我经常与Mercurial合作,保留我的上游克隆的本地商店,然后在本地再次克隆我的实际工作环境:

$ cd /clones
$ hg clone ssh://external-repo.example.com/some/repo/path/foo
$ cd ~/Development
$ hg clone /clones/foo
Run Code Online (Sandbox Code Playgroud)

这对我来说特别有用,因为我经常想在飞机等上制作新的克隆,我无法访问互联网.但是,当原始克隆包含子目录时,这不起作用 - .hgsubstate文件的存在意味着hg将始终发送到互联网而不是获取本地克隆版本(即使它们是相同的).有没有办法让本地克隆复制文件而无需上网?

这个问题有一个可能有效的答案,但对于长期管理来说似乎非常不幸(删除.hgsubstate克隆中的文件/clones/,然后从中制作本地克隆).

mercurial clone dvcs subrepos

5
推荐指数
1
解决办法
1030
查看次数

使用带有bitbucket和ToritoiseHg的子存储库

我在TortoiseHg中有以下子库结构:

/MainFolder/
/MainFolder/SubFolder1
/MainFolder/SubFolder2
Run Code Online (Sandbox Code Playgroud)

MainFolder是bitbucket上的私有存储库SubFolder1是bitbucket上的私有存储库SubFolder2是bitbucket上的私有存储库

MainFolder中的.hgsub文件如下所示:

SubFolder1 = SubFolder1
SubFolder2 = SubFolder2
Run Code Online (Sandbox Code Playgroud)

MainFolder中的文件.hgsubstat也有有效的guid和子存储库名称.

问题是每当我尝试向MainFolder推送bitbucket时,首先它会推送MainFolder,然后是SubFolder1,但是当它到达SubFolder2时,TortoiseHg会抛出错误"abort:repository is unrelated".

当我在bitbucket上检查我的MainFolder存储库时,它实际上有SubFolder1的内容(它应该作为子存储库列在那里).

我如何解决这个问题,以便将MainFolder正确上传为父存储库,并将SubFolder1和SubFolder2列为bitbucket上的子存储库?

mercurial tortoisehg bitbucket subrepos mercurial-subrepos

5
推荐指数
1
解决办法
1256
查看次数