2010-12-23 147 views
3

有没有办法让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

回答

1

就我所知,没有内置的方法可以做到这一点,但我认为有一种方法可以构建您所需的内容。使用Mercurial internal API并编写自己的包装脚本。而不是试图让它读取任何和所有的命令和选项,坚持你的特定目标(即“提交”和你需要的选项)会更容易。 (注意API页面上的警告如果你正在构建的这个包装将被分发给其他人,请查看许可问题并制定如何处理未来Mercurial升级的计划,这可能会破坏你的)

+0

这意味着我将不得不使用Mercurial的python版本。由于我正在编写自己的包装库,因此我认为我会坚持使用完全不需要Python的纯二进制版本,它随附了自己的Python库。 – 2011-01-02 00:04:20

0

这里有一个缺憾解决办法...

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

  2. 在回购的.hg \ hgrc,添加行

    %include response

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

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

(据Microsoft's support,最大的命令行是XP 8,191个字符及更高版本。如果你甚至需要用这一招可能是需要了解的。)

+0

因为我正在为Mercurial编写一个包装库,所以我会避免修改不属于我的存储库的hgrc文件,并且包括其他人可能拥有并使用我的库的任何存储库。我已经开始了一个游说活动,以获得内置在Mercurial中的正确响应文件。 – 2011-01-02 00:05:08