我想创建一个版本化的文件夹,因为mercurial“hg clone <repo url =”“>”</repo>

时间:2012-04-04 21:36:01

标签: mercurial dvcs

在Mercurial中克隆存储库时,有没有办法根据最新的变更集创建目标文件夹?例如:

$ hg clone http://hg.repo.com:8000/myrepo 'myrepo-$VERSION'

该文件夹应以项目版本命名,例如myrepo-1.3

2 个答案:

答案 0 :(得分:0)

您必须首先将其克隆到一些临时文件夹中,然后检查repo的提示以查看其修订版或您想在命名方案中使用的任何特征,然后将之前的(临时)位置重命名为它应该是的任何位置现在......根据我的知识,它不适用于香草汞。

答案 1 :(得分:0)

如果你可以使用变更集哈希,那么你可以从

开始
$ hg identify -i http://hg.repo.com:8000/myrepo

获取提示变更集的ID。你可以在Unix shell中将它与这样的克隆结合起来:

$ hg clone http://hg.repo.com:8000/myrepo \
           "myrepo-$(hg -i identify http://hg.repo.com:8000/myrepo)"

为了使它更方便,我会为此创建一个别名:

[alias]
vclone = !DEST=$(basename "$1")-$($HG identify -i "$1");
          echo "destination directory: $DEST";
          $HG clone "$1" "$DEST"

这样你就可以hg vclone foo获得foo-<ID>克隆。

在别名中,我负责从克隆URL计算合适的基本名称,并以与hg clone通常不提供明确目标时相同的方式打印目标。最后,我注意引用参数,以便您可以克隆名称中带有空格的目录。 (如果你的名字中也有"这样的字符,那么如果不能更好地支持Mercurial shell别名中的引用,那么你运气不好。)