2017-04-18 58 views
1

我想在我的PowerShell腳本中使用SVN命令。如何在PowerShell中使用SVN-commit

我知道我需要將SVN可執行文件聲明爲一個變量,但是之後我想提交一個我已經聲明爲變量的文件,並且我希望在文件中指定提交消息。

$svnExe = "C:\Program Files\TortoiseSVN\bin\svn.exe" 
$myFile = "C:\xx\file.txt" 
$commitMsg = "C:\xx\msg.txt" 

$myFile已經是一個版本的文件,$commitMsg不是,也不會是一個版本的文件。

從命令行工作的:

svn commit -F C:\xx\msg.txt C:\xx\file.txt 

但我會怎麼做這使用PowerShell?

回答

5

Svn在PowerShell中的工作方式與在命令提示符中的工作方式相同。但是,如果使用可執行文件的完整路徑定義一個變量,則需要通過call operator&)運行該變量,否則PowerShell會簡單地回顯該字符串並對命令行的其餘部分產生混淆。

$svn = 'C:\Program Files\TortoiseSVN\bin\svn.exe' 
$myFile = 'C:\xx\file.txt' 
$commitMsg = 'C:\xx\msg.txt' 

& $svn commit -F $commitMsg $myFile 

如果添加SVN目錄到PATH環境變量你可以直接調用可執行文件:

$env:PATH += ';C:\Program Files\TortoiseSVN\bin' 

... 

svn.exe commit -F $commitMsg $myFile 

另一種選擇是定義爲可執行文件的別名:

New-Alias -Name svn -Value 'C:\Program Files\TortoiseSVN\bin\svn.exe' 

... 

svn commit -F $commitMsg $myFile 
+0

我嘗試了你提出的第一個建議。並發現它需要: $ svnExe ='C:\ Program Files \ TortoiseSVN \ bin \ svn.exe' $ myFile ='C:\ xx \ file.txt' $ commitMsg ='C:\ XX \ msg.txt」 &$ svnExe承諾-F $ commitMsg $ MYFILE 但後來我得到了以下問題: 的svn:E205008:登錄消息中包含零字節 在行:6字符:2 + &<<<< $ svnExe commit -F $ commitMsg $ myFile + CategoryInfo:NotSpecified:(svn:E205008:L ... ins a zero byte:String)[],RemoteException + FullyQualifiedErrorId:NativeCommandError – tommy2479

+0

這是一個副本/粘貼錯誤在我的部分。抱歉。 –

+0

任何想法如何解決問題? – tommy2479