2013-03-23 57 views
1

我創建了一個powershell腳本作爲提交鉤子來將用戶名寫入文件。我在PowerShell中用於提取用戶名的命令是:來自tortoisehg的powershell鉤子中的hg命令

$repodir = "C:\Users\Administrator\Documents\Visual Studio 2012\Projects\testRepo" 
cd $repodir 
$hguser = hg --cwd $repodir tip | grep user 

其中$ repodir是存儲庫的目錄。當我從powershell命令行提交時,鉤子執行一個提取所需的用戶名。當我在tortoisehg工作臺中提交時,鉤子會執行(我可以在輸出文件中看到更改),但$ hguser中沒有任何信息,其他hg命令也沒有任何影響。在tortoisehg中執行hg是否需要特殊的語法,是否在正確的路徑中執行?

+0

'$ repodir'在哪裏設置? – manojlds 2013-03-23 18:39:20

+0

我編輯了原始問題以顯示它的設置 – kieferm 2013-03-23 18:41:16

回答

1

它似乎爲我工作。

.hg/hgrc

[hooks] 
commit = powershell.exe -File "C:\users\andy\desktop\test\test.ps1" 

test.ps1

$repodir = "C:\Users\andy\Desktop\Test" 
cd $repodir 
$hguser = (hg tip) | ? {$_ -match '^user:\s+([\w\s]+\w)'} | % {$matches[1]} 
$hguser | Out-File user.txt -Encoding ASCII 

user.txt經由TortoiseHg填充/ hg.exe提交。使用TortoiseHg 2.7。

+0

工作正常。我會研究爲什麼它在PowerShell中工作,而不是tortoisehg。謝謝! – kieferm 2013-03-24 13:26:14

+0

grep是PowerShell的別名還是外部程序?它不是一個內置的別名,所以如果它是一個自定義別名,可能意味着你的powershell配置文件不能通過TortoiseHg加載,或者如果它是一個外部程序,它可能意味着它不在TortoiseHg的路徑中。 – 2013-03-24 16:24:22

+0

是的,就是這樣,TortoiseHg加載的配置文件沒有grep。如果它稱爲缺失函數,我預計它會有一個不好的退出值。 – kieferm 2013-03-25 12:19:01