もしそうなら:git describe --long
あなたは得る:0.3.1-15-g3b885c5
上記の文字列の意味は次のとおりです。
Tag-CommitDistance-CommitId( http://git-scm.com/docs/git-describe )
文字列をどのように分割して、最初の(Tag)要素と最後の(CommitId)要素を取得しますか?
String.split()
をcountパラメータと共に使用して、commitid内のダッシュを管理します。
$x = "0.3.1-15-g3b885c5"
$tag = $x.split("-",3)[0]
$commitid = $x.split("-",3)[-1]
Note:この回答はsplit-into-tokens-by --
approachから Ocaso Protalの役立つ回答 の改善に焦点を当てています。
ただし、そのアプローチ完全に堅牢ではない、git
タグ名自体に-
文字が含まれている可能性があるため、最初の-
インスタンスが完全に終了することを盲目的に想定できないタグ名。
それを説明するには、使用 Richardの堅牢なソリューション 代わりに
PowerShellの慣用句のバリエーションを提供するだけです。
$tag, $commitId = ('0.3.1-15-g3b885c5' -split '-')[0, -1]
PowerShellの -split
operator は、セパレーター-
によって入力文字列をトークンの配列に分割するために使用されます[string]
タイプの.Split()
メソッドで十分ですが、 -split
は一般に多くの利点を提供します 。
[0, -1]
は、0
によって返された配列から最初の(-1
)要素と最後の(-split
)要素を抽出し、2要素の配列として返します。
$tag, $commitId =
は、結果として得られる2要素の配列の要素をそれぞれ変数に割り当てる、破壊的な割り当てです。
タグでダッシュを使用できるかどうか思い出せないので、ダッシュを使用できると思いますが、最後の2つのフィールドには表示されません。
したがって:
if ("0.3.1-15-g3b885c5" -match '(.*)-\d+-([^-]+)') {
$tag = $Matches[1];
$commitId = $Matches[2]
}