Вроде. Вам нужно открыть определенный именованный канал и затем отправить команду. Насколько я знаю, для этого вам понадобится написать (предположительно, очень маленький) скрипт или приложение, но затем этот скрипт можно будет поместить в пакетный файл.
Название трубы:
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();
}
}
}
}
}
Это должно, по крайней мере, начать вас. Стоит отметить, что оболочка проводника, кажется, вызывает remove | [path] followed update | [path], но я не могу сказать, что шаг удаления действительно необходим, и когда я попытался сделать это в вышеуказанной программе, я получил бы Исключение «труба разорвана» после второй команды, хотя команда фактически перешла на сервер оверлеев. Кто-то, кто знает больше о именованных каналах, может легко это исправить.
Если вы хотите углубиться в это, взгляните на https://bitbucket.org/tortoisehg/thg/src/bcf0eaf6db6a/TortoiseHgOverlayServer.py
Ух, это было весело!
edit: используйте правильные ключевые слова для языка и добавили еще немного проверки ошибок.