我对mercurial很新,我在这个主题上已经阅读了很多,但我一直无法找到明确的答案.
mercurial指南说:"为了提高效率,只要源和目标位于同一文件系统上,就会使用硬链接进行克隆(请注意,这仅适用于存储库数据,而不适用于工作目录)."
该库wiki页面说:"所有的文件和与存储库中的根目录.hg共存目录被认为生活在工作目录".
现在,要在主回购中"链接"subrepo我做:
hg init main
cd main
echo subrepo = ../subrepo > .hgsub
hg clone ../subrepo subrepo # (1)
hg add
hg ci -m "initial rev of the main repo"
Run Code Online (Sandbox Code Playgroud)
难道上述定义意味着我真正创建一个副本的subrepo时候进行(1)?? 或者我只创建一个符号链接../subrepo?根据输出ls,它是一个实际的副本.但这对我来说听起来很奇怪......如果有人能对这个问题有所了解,我会很感激.
我对mercurial很新,我已经阅读了很多关于这个主题的主题,但我仍然无法理解我是否能够实现我想要做的事情.
基本上我有兴趣在一个主存储库中克隆一个分支的当前版本,并在一个命令中对其子版本进行克隆(作用于主存储库).我会尝试在一瞬间更好地解释它.
假设我将代码分成模块(下例中只有一个模块).我希望将每个模块放在自己的存储库中,并将一个主存储库(具有.hgsub的存储库)作为粘合剂来保留所有子存储库.主仓库只包含.hgsub和一个脚本,该脚本(1)hg archive预定义目录中的每个子目录,以及(2)执行代码的源外构建.所有开发,提交,推送,拉取,合并都在单个子库中完成.
# create a module (subrepo of the master)
hg init subrepo
cd subrepo/
echo "a file" > aFile.c
echo "another file" > anotherFile.txt
hg add
hg ci -m "initial rev of subrepo"
# create the main (master) repo & add the reference to subrepo
cd ../
hg init main
cd main
hg clone ../subrepo subrepo
echo subrepo = ../subrepo > .hgsub
echo hg archive and out-of-source build > build.script
hg add
hg ci -m …Run Code Online (Sandbox Code Playgroud)