【发布时间】:2011-05-22 17:09:31
【问题描述】:
我有一个名为 master 的存储库,用于保存产品版本。它有几个标签(例如 1.0、2.0、3.0)作为基线。当我想为一个版本创建热修复时,例如 1.0。我使用如下命令:
hg clone master#1.0 hotfix_1.0.1
cd hotfix_1.0.1
hg tip
changeset: 14:b2492c2611a1
tag: tip
user: codingboy <codingboy@gmail.com>
date: Thu Dec 09 14:03:23 2010 +0800
summary: fix bug4
我发现提示版本是我需要的,但没有标记为 1.0。这将导致我在 hotfix_1.0.1 中的更改无法推送到 master。错误是
(abort) unknown 1.0 revision.
我检查主存储库。日志显示如下
changeset: 15:3497c46cbc7f
tag: tip
user: codingboy <codingboy@gmail.com>
date: Thu Dec 09 14:03:27 2010 +0800
summary: Added tag 1.0 for changeset b2492c2611a1
changeset: 14:b2492c2611a1
tag: 1.0
user: codingboy <codingboy@gmail.com>
date: Thu Dec 09 14:03:23 2010 +0800
summary: fix bug4
所以看起来克隆的存储库丢失了 changset#15。我的理解是 hg clone src#tag dest 应该克隆我需要的标签。但是这个操作不能克隆做标记的 changeset#14 的子节点。所以我所做的就是使用命令
hg clone master hotfix_1.0.1 -u 1.0
我不喜欢这个命令。如果主存储库很大,而我只想修复旧版本,那么克隆和推送更改会浪费时间。
我是否有任何其他方法可以从一个基线或标签正确克隆一个存储库?
谢谢...
【问题讨论】:
-
可能与我的question 重复。我在我的一个 cmets 中说过,一个预克隆和预拉钩子来更改 rev 参数以包含标签变更集(如果它是唯一的孩子)将是最好的解决方案,但我从来没有机会真正做到这一点.
标签: mercurial