以下是問題:我想查詢subversion版本庫的版本號,然後創建一個新名稱(其名稱中帶有版本號)(例如,「Build763 「)。使用powershell從命令行輸出中提取特定值
命令「svn info」輸出一系列由冒號分隔的標籤\值對。例如
Path: c#
URL: file:///%5Copdy-doo/Archive%20(H)/Development/CodeRepositories/datmedia/Development/c%23
Repository UUID: b1d03fca-1949-a747-a1a0-046c2429f46a
Revision: 58
Last Changed Rev: 58
Last Changed Date: 2011-01-12 11:36:12 +1000 (Wed, 12 Jan 2011)
這是我現在的代碼,它解決了這個問題。有沒有辦法用較少的代碼做到這一點?我在想,如果使用管道,你可以用一兩行來做到這一點。我當然不應該使用臨時文件。
$RepositoryRoot = "file:///%5Cdat-ftp/Archive%20(H)/Development/CodeRepositories/datmedia"
$BuildBase="/Development/c%23"
$RepositoryPath=$RepositoryRoot + $BuildBase
# Outputing the info into a file
svn info $RepositoryPath | Out-File -FilePath svn_info.txt
$regex = [regex] '^Revision: (\d{1,4})'
foreach($info_line in get-content "svn_info.txt")
{
$match = $regex.Match($info_line);
if($match.Success)
{
$revisionNumber = $match.Groups[1];
break;
}
}
"Revision number = " + $revisionNumber;
他們讓你挖那個捕獲,不是嗎? – mjolinor
那麼,你可以使用'(svn info $ RepositoryPath)-Replace'^ Revision:(\ d +)$','$ 1''來捕獲;) – Jaykul
這樣更好。我必須記住這一點。 – mjolinor