有没有办法让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。
答案 0 :(得分:2)
据我所知,没有一种内置的方法可以做到这一点,但我认为有一种方法可以构建你需要的东西。
使用Mercurial internal API并编写自己的包装脚本。而不是试图让它读取任何和所有命令和选项,坚持你的特定目标(即“提交”和你需要的选项)会更容易。
(请注意API页面上的警告。如果您正在构建的这个包装器将分发给其他人,请查看许可问题,并制定一个如何处理未来Mercurial升级的计划,这可能会破坏您的包装器。)
答案 1 :(得分:0)
这是一个愚蠢的解决方法......
在repo的.hg目录中创建一个虚拟的空响应文件,例如.hg \ response。
在repo的.hg \ hgrc中,添加一行
%include response
在执行任何存储库操作之前,请将命令行选项写入此响应文件。使用[defaults]
部分(我知道它已被弃用)来指定您的选项。
[defaults]
commit = -m "This is a commit message" -I file1 -I file2 ...
(根据Microsoft's support,XP和更高版本的最大命令行是8,191个字符。如果你甚至需要使用这个技巧,可能会有用。)