如果我在DOS提示符下運行以下命令:如何在PowerShell中獲取最新的水銀標籤
汞柱父母--template {} latesttag
然後我將最新的標記值返回預期。
汞柱父母:但是如果我從PowerShell控制檯我得到以下誤差範圍內運行相同的命令-i選項無法識別
我需要的命令在PowerShell中運行,所以我可以得到它的結果作爲變量使用。任何想法我需要做什麼才能讓命令運行?
如果我在DOS提示符下運行以下命令:如何在PowerShell中獲取最新的水銀標籤
汞柱父母--template {} latesttag
然後我將最新的標記值返回預期。
汞柱父母:但是如果我從PowerShell控制檯我得到以下誤差範圍內運行相同的命令-i選項無法識別
我需要的命令在PowerShell中運行,所以我可以得到它的結果作爲變量使用。任何想法我需要做什麼才能讓命令運行?
你應該只需要環繞參數--template
引號,這樣Powershell知道這是一個字符串:
hg parents --template '{latesttag}'
然而,有時候,同程Powershell的分析的東西,你必須做出加倍確保雙報價生存(如傳遞一個包含空格,但應該有很多的參數1,而不是一個參數,比如路徑或更長的模板):
hg parents --template '"{latesttag}"'
這個答案配備了一個巨大免責聲明:
- There might be better/different ways than this one, harnessing only PowerShell code, but I'm no PowerShell expert
- I am the author of the following class library
我已經做了.NET類庫,Mercurial.Net允許.NET程序環繞hg
命令行客戶端,而不必應付做這一切的一切複雜性,等待程序完成等。注意:您需要安裝Mercurial,並且可以通過PATH使類庫可以工作。
因爲我不是PowerShell專家,所以我將展示如何使用C#代碼和我的庫進行此操作。
考慮到庫沒有實現所有選項(可惜),遺憾的是,我的庫不能使用父命令,但log命令可以,儘管它可能會有更多的開銷。你將不得不作爲判斷這是否可以接受。
父母命令無法使用的原因是,我現在已決定不在Mercurial中實現對模板語法的支持,因爲那時我知道預期的輸出類型,並且可以將其解析爲適當的。 NET實例。
這裏的.NET代碼,會發現tipmost標籤:
var repo = new Repository(".");
var tags = repo.Log(new LogCommand().WithRevision("tag()")).First().Tags.ToArray();
這將填充tags
與標籤名稱的數組。日誌命令以相反的順序返回日誌,最先更新的變更集,因此.First()
將找到最新的變更集。
如果需要,這也是當前的工作文件夾的祖先最接近的標籤,這裏的改變的代碼:
repo.Log(new LogCommand().WithRevision("tag() and ancestors(.)")).First().Tags...
^---------------^
,這包括工作文件夾的版本,如果有一個標籤。如果您需要祖先,不包括修改工作文件夾:
repo.Log(new LogCommand().WithRevision("tag() and ancestors(.) and not .")).First().Tags...
^--------^
有趣。至少有幾件事情,這個庫應該適合我。 – 2011-05-30 21:49:51
完美的謝謝。在這種情況下,只有一組引用的第一個例子起作用。 – 2011-05-30 21:37:15
不給我最新的標籤..但一個較舊的標籤,它是否檢查所有分支作爲標籤是全球? – OZZIE 2017-11-17 08:40:36