tim*_*fin 9 mercurial branch dvcs
我喜欢在Mercurial中创建命名分支来处理可能需要一段时间来编写代码的功能,所以当我推送时我会hg push -r default确保我只是将更改推送到默认分支.但是,-r default每次执行推送或传出命令时都必须记住这一点.
所以我尝试通过将此配置添加到我的〜/ .hgrc来解决此问题:
[defaults]
push = push -r default
outgoing = outgoing -r default
Run Code Online (Sandbox Code Playgroud)
问题是,那些配置行不是真正的默认值,它们是别名.他们按照预期工作,直到我尝试做hg push -r <some revision>.我设置的"默认"只是删除了我传入的修订版.(我看到默认值已弃用,但别名有同样的问题).
我试着环顾四周,但我找不到任何可以让我设置默认分支的东西,并允许我在必要时覆盖它.谁知道我能做的其他事情?
ps:我确实意识到每个分支都可以有单独的克隆,但我宁愿不这样做.必须切换目录很烦人,特别是当您有共享配置或编辑器工作区时.
我不认为你可以用纯粹的mercurial做到这一点,没有一个只有那个分支的克隆(我原本即将建议,直到你说它不是你的一杯茶).如果它真的杀了你,你可以创建一个小的包装脚本,如:
#!/bin/sh
HG=/full/path/to/hg # executable
if echo $* | grep -P -q -- 'push.*\s-r($|\s)' ; then
$HG $*
else
$HG $* -r default
fi
Run Code Online (Sandbox Code Playgroud)
将它命名为'hg'并将其放在路径的前面.