TortoiseHg:有没有办法从批处理文件中更新图标?
我发现我一直在更新 TortoiseHg 菜单中的图标,我想从批处理文件中触发图标更新,在此先感谢
有点。您需要打开特定的命名管道,然后发送命令。据我所知,您将不得不编写一个(诚然非常小的)脚本或应用程序来做到这一点,但是该脚本可以包装在一个批处理文件中。
管道名称是:
TortoiseHgRpcServer-bc0c27107423-[用户名]
(对于我正在写这个的计算机是 TortoiseHgRpcServer-bc0c27107423-nholley)
命令是:
update|[path-to-update]
(所以我的测试使用 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 似乎调用了 remove|[path] 跟在 update|[path] 但我不知道删除步骤实际上是必要的,当我在上面的程序中尝试这样做时,我会得到一个在第二个命令之后出现“管道损坏”异常,尽管该命令实际上已通过覆盖服务器。对命名管道有更多了解的人可能很容易解决这个问题。
如果您想深入了解它,请查看https://bitbucket.org/tortoisehg/thg/src/bcf0eaf6db6a/TortoiseHgOverlayServer.py
哇,那很有趣!
编辑:使用正确的语言关键字并添加更多错误检查。