Mercurial命令行客户端,从文件中读取命令,选项和参数?
有没有办法让Mercurial读取我想从响应文件中提供的大部分/所有命令,选项和参数,而不是在命令行上传递它们?Mercurial命令行客户端,从文件中读取命令,选项和参数?
例如,而不是这样的:
hg commit -m "commit message" --INCLUDE file1 --INCLUDE file2 ...
我会创建一个包含
-m "commit message" --INCLUDE file1 --INCLUDE file2 ...
一个文本文件,然后问水银与这个(hyphotetical)语法来阅读:
hg commit @responses.txt
我问的原因是我为Mercurial co创建了一个.NET包装库命令行客户端,这个问题让我担心命令行的长度在某些时候对我来说可能是个问题:“Resulting command line for hg.exe too long” error in Mercurial。
就我所知,没有内置的方法可以做到这一点,但我认为有一种方法可以构建您所需的内容。使用Mercurial internal API并编写自己的包装脚本。而不是试图让它读取任何和所有的命令和选项,坚持你的特定目标(即“提交”和你需要的选项)会更容易。 (注意API页面上的警告如果你正在构建的这个包装将被分发给其他人,请查看许可问题并制定如何处理未来Mercurial升级的计划,这可能会破坏你的)
这里有一个缺憾解决办法...
创建一个虚拟,在回购的.hg目录空响应文件,例如.hg \响应。
-
在回购的.hg \ hgrc,添加行
%include response
-
做任何存储库操作之前,写命令行选项来此响应文件。使用
[defaults]
部分(我知道已弃用)指定您的选项。[defaults]
commit = -m "This is a commit message" -I file1 -I file2 ...
(据Microsoft's support,最大的命令行是XP 8,191个字符及更高版本。如果你甚至需要用这一招可能是需要了解的。)
因为我正在为Mercurial编写一个包装库,所以我会避免修改不属于我的存储库的hgrc文件,并且包括其他人可能拥有并使用我的库的任何存储库。我已经开始了一个游说活动,以获得内置在Mercurial中的正确响应文件。 – 2011-01-02 00:05:08
这意味着我将不得不使用Mercurial的python版本。由于我正在编写自己的包装库,因此我认为我会坚持使用完全不需要Python的纯二进制版本,它随附了自己的Python库。 – 2011-01-02 00:04:20