TortoiseHg: Есть ли способ обновить иконки из командного файла? - PullRequest
2 голосов
/ 24 мая 2010

TortoiseHg: есть ли способ обновить значки из командного файла?

Я обнаружил, что постоянно обновляю значки из меню TortoiseHg, и я хочу запустить обновление значков из командного файласпасибо заранее

1 Ответ

2 голосов
/ 09 мая 2011

Вроде. Вам нужно открыть определенный именованный канал и затем отправить команду. Насколько я знаю, для этого вам понадобится написать (предположительно, очень маленький) скрипт или приложение, но затем этот скрипт можно будет поместить в пакетный файл.

Название трубы:
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: используйте правильные ключевые слова для языка и добавили еще немного проверки ошибок.

...