TortoiseHg:有沒有更新批處理文件圖標的方法?TortoiseHg:有沒有更新批處理文件圖標的方法?
我發現我所有的從TortoiseHg菜單圖標更新的時間,我想觸發從批處理文件,感謝圖標更新提前
TortoiseHg:有沒有更新批處理文件圖標的方法?TortoiseHg:有沒有更新批處理文件圖標的方法?
我發現我所有的從TortoiseHg菜單圖標更新的時間,我想觸發從批處理文件,感謝圖標更新提前
排序的。您需要打開特定的命名管道,然後發送命令。據我所知,你將不得不寫一個(不可否認的是非常小)的腳本或應用程序來做到這一點,但是那時腳本可以被包裝在一個批處理文件中。
管道名稱是:
TortoiseHgRpcServer-bc0c27107423- [用戶名]
(用於計算機,我就可以寫這纔是TortoiseHgRpcServer-bc0c27107423-nholley)
的命令是:
更新| [路徑到更新]
(所以我的測試使用更新| C:\項目\ 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();
}
}
}
}
}
這應該至少讓你開始。值得注意的是,瀏覽器外殼似乎調用刪除| [路徑]後續更新| [路徑],但我不能說,刪除步驟實際上是必要的,當我在上面的程序中嘗試這樣做,我會得到第二個命令後,「管道已損壞」異常,但該命令實際上已將其傳送到覆蓋服務器。知道更多關於命名管道的人可能很容易解決這個問題。
如果你想鑽研它在https://bitbucket.org/tortoisehg/thg/src/bcf0eaf6db6a/TortoiseHgOverlayServer.py
Whee多看一看,這很有趣!
編輯:使用正確的關鍵字爲語言,並添加了更多的錯誤檢查。
我改變了第一個使用的[import]語句。這使得它編譯,但它無限期地停留在黑屏 – 2011-05-09 22:09:28
由於某種原因,TortoiseHgOverlayServer失去了在命名管道上的句柄。一個簡單的超時檢查和try-catch可以解決這個問題。你當然可以擴展它來自動重啓該exe,但這超出了這個問題的範圍。 – neilh 2011-05-09 23:43:38