TortoiseHg:有没有办法从批处理文件更新图标?

时间:2010-05-24 13:32:25

标签: tortoisehg

TortoiseHg:有没有办法从批处理文件中更新图标?

我发现我一直在更新TortoiseHg菜单中的图标,我想从批处理文件中触发图标更新,提前感谢

1 个答案:

答案 0 :(得分:2)

排序。您需要打开特定的命名管道,然后发送命令。据我所知,你将不得不写一个(不可否认的非常小)的脚本或应用程序来做这件事,但那个脚本可以包装在一个批处理文件中。

管道名称是:
TortoiseHgRpcServer-bc0c27107423- [用户名]
(对于我正在写它的电脑是TortoiseHgRpcServer-bc0c27107423-nholley)

命令是:
更新| [路径到更新]
(所以我的测试使用update | c:\ projects \ scripts)

执行此操作的简短C#命令行应用

using System;
using System.IO;
using System.IO.Pipes;

namespace NamedPipeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var username = Environment.UserName;
            using (var pipe = new NamedPipeClientStream("TortoiseHgRpcServer-bc0c27107423-" + username))
            {
                try
                {
                    pipe.Connect(1000);

                    using (var sw = new StreamWriter(pipe))
                    {
                        sw.Write("update|" + args[0]);
                    }
                }
                catch (TimeoutException ex)
                {
                    Console.WriteLine("Named pipe could not be found. Please restart TortoiseHgOverlayServer");
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
            }
        }
    }
}

这至少应该让你开始。值得注意的是,探测器shell似乎调用了删除| [路径]后续更新| [路径],但我不能说删除步骤实际上是必要的,当我在上面的程序中尝试这样做时,我会得到一个第二个命令后“管道已损坏”异常,但该命令实际上已通过覆盖服务器。知道更多关于命名管道的人可能很容易解决这个问题。

如果您想深入研究,请查看https://bitbucket.org/tortoisehg/thg/src/bcf0eaf6db6a/TortoiseHgOverlayServer.py

哇,这很有趣!

编辑:为语言使用正确的关键字,并添加了更多错误检查。