我可以克隆Mercurial存储库的一部分吗?
是否可以克隆Mercurial存储库的一部分? 比方说,该存储库非常大,或者包含多个项目或多个分支。 我可以只克隆部分存储库吗?
例如在Subversion中,你可能有trunk
和branches
。 如果我只想获得主干(或其中一个分支),我只需要[project]/trunk
。 如果我克隆hg回购,我会得到树干和所有分支机构。 这可能是我不想要的很多信息。 我可以避免这样做吗?
或者,如果我想在一个hg仓库中有多个项目,我该如何做? 也就是说,我可能只是得到一个项目而忽视其他项目。
是的你可以。 我相信你已经开始了,但为了那些稍后会在这里漫步的人,我遵循了ConvertExtension中的文档,并编写了一个简单的批处理脚本:
@echo off
echo Converting %1
REM Create the file map
echo include %1 > ~myfilemap
echo rename %1 . >> ~myfilemap
REM Run the convert process
hg convert --filemap ~myfilemap . ..%1
REM Delete the file map
del ~myfilemap
cd ..%1
REM update the new repo--to create the files
hg update
将其命名为split.cmd
,并将其放入要分割的回购目录中。 比如说你有C:reposReallyBigProject
,子文件夹是C:reposReallyBigProjectsmall-project
。 在命令提示符处,运行:
cdreposReallyBigProject
split.cmd small-project
这将创建C:repossmall-project
其中包含大型项目相关修订历史的一部分。
该convert
未默认启用。 您需要确保.hghgrc
文件中存在以下行(在我的示例中为c:reposReallyBigProject.hghgrc
):
[extensions]
hgext.convert=
@缺口
“例如在Subversion中,你可能有树干和分支,如果我只想得到树干(或其中一个分支),我可以申请[project] / trunk。如果我克隆了hg repo,我会得到树干和所有这可能是很多我不想要的信息,我可以避免这样做吗?“
绝对。 只需使用hg clone -r <branch>
并只获得你想要的分支。 如果你有很多分支,你需要为每个-r <branch>
一个-r <branch>
。 <branch>
不一定是一个命名分支:你可以简单地拥有多个未命名的头(或者使用书签命名的头),尽管这些头还不完美,因为目前他们没有显示推/拉/克隆) 。
请记住,在DVCSes中,其中的Mercurial分支往往是短命的,并且经常合并回彼此。 如果你拉一个分支,你仍然会得到它与任何其他分支的共同历史。
据我所知,这是不可能的。 但与Subversrion相比,克隆整个回购可能不会比SVN的分支慢。
从UnderstandingMercurial引用:
许多SVN / CVS用户希望将一个相关项目放在一个存储库中。 这实际上并不是什么汞制造的,所以你应该尝试一种不同的工作方式。 这尤其意味着,你不能只检出一个存储库的一个目录。
但是,如果您绝对需要在一个元存储库中托管多个项目,则可以尝试使用Mercurial 1.3或更早版本的ForestExtension引入的Subrepositories功能。
链接地址: http://www.djcxy.com/p/37535.html上一篇: Can I clone part of a Mercurial repository?
下一篇: Compare and Contrast