【发布时间】:2016-02-04 16:01:52
【问题描述】:
我正在尝试编写 hg diff 脚本并希望接受将传递给 -r 选项的参数,如果没有给出参数,则默认为工作目录。但是,似乎没有可以传递给-r 以指示“工作目录”的值,而是必须完全省略该选项,这导致我的脚本中出现以下逻辑:
if [ -z "${to_rev}" ]; then
to_rev_args=""
else
to_rev_args="-r ${to_rev}"
fi
hg diff ... ${to_rev_args}
我认为这是唯一的方法是正确的吗?我们可以假设让脚本接受 -r 参数并将整个事情传递给 Mercurial 不是一种选择;参数必须符合一套工具使用的风格。
【问题讨论】:
-
嗯,不带选项的
hg diff等价于hg diff -r .,而.表示工作目录的parent。使用一个版本参数,Mercurial 会将工作目录与指定的版本进行比较(如果省略,则与.)进行比较。您能否更具体一点,即您试图将工作目录(或任何其他修订版)与什么进行比较? -
我想找到两个状态之间的差异。默认情况下,“之前”状态是当前父级的最后一个公共祖先,“之后”状态是工作目录,但脚本可以接受任一状态的参数并将它们传递给 hg diff。无条件地将参数传递给 hg diff 比根据脚本参数的值有条件地传递它们更容易,因此,我想知道脚本的默认“after”参数的值,它在传递时相当于“工作目录”到 hg 差异。
标签: mercurial mercurial-revsets