Mercurial命令行客户端,从文件中读取命令,选项和参数?

时间:2010-12-23 09:57:06

标签: command-line mercurial

有没有办法让Mercurial读取我想从响应文件中提供的大部分/全部命令,选项和参数,而不是在命令行上传递它们?

例如,而不是:

hg commit -m "commit message" --INCLUDE file1 --INCLUDE file2 ...

我会创建一个包含

的文本文件
-m "commit message" --INCLUDE file1 --INCLUDE file2 ...

然后让Mercurial用这个(hyphotetical)语法来读它:

hg commit @responses.txt

我问的原因是我正在为Mercurial命令行客户端创建一个.NET包装器库,这个问题让我担心命令行的长度对我来说可能是一个问题。某点:“Resulting command line for hg.exe too long” error in Mercurial

2 个答案:

答案 0 :(得分:2)

据我所知,没有一种内置的方法可以做到这一点,但我认为有一种方法可以构建你需要的东西。

使用Mercurial internal API并编写自己的包装脚本。而不是试图让它读取任何和所有命令和选项,坚持你的特定目标(即“提交”和你需要的选项)会更容易。

(请注意API页面上的警告。如果您正在构建的这个包装器将分发给其他人,请查看许可问题,并制定一个如何处理未来Mercurial升级的计划,这可能会破坏您的包装器。)

答案 1 :(得分:0)

这是一个愚蠢的解决方法......

  1. 在repo的.hg目录中创建一个虚拟的空响应文件,例如.hg \ response。

  2. 在repo的.hg \ hgrc中,添加一行

    %include response

  3. 在执行任何存储库操作之前,请将命令行选项写入此响应文件。使用[defaults]部分(我知道它已被弃用)来指定您的选项。

    [defaults]
    commit = -m "This is a commit message" -I file1 -I file2 ...

  4. (根据Microsoft's support,XP和更高版本的最大命令行是8,191个字符。如果你甚至需要使用这个技巧,可能会有用。)