我正在嘗試撰寫一個 powershell 腳本,使用 Subgit 自動執行 svn 到 git 遷移。我是PowerShell的新手。我已經想出了如何使用單個命令來完成它,但是當我嘗試將這些命令放在一個腳本中時會出現問題。
具體來說,
subgit configure --layout auto $SVN_PROJECT_URL $GIT_REPO_PATH
subgit import $GIT_REPO_PATH
這 2 個命令觸發了一個外部行程,因此 powershell 在繼續執行下一部分之前不會等待這 2 個完成執行,這會導致錯誤。我試圖將這兩行放在它們單獨的行程中并等待這些行程完成,但是powershell 中的命令Wait-Process和Wait-Job命令都不起作用,而不是等待行完成執行,它沒有完成執行并立即轉到下一行。我嘗試了以下方法,但沒有結果,
$job1 = Start-Job { subgit import $GIT_REPO_PATH }
Wait-Job $job1
Receive-Job $job1
和
$sb = Start-Job -ScriptBlock {
subgit configure --layout auto $SVN_PROJECT_URL $GIT_REPO_PATH
}
Wait-Job $sb.Name
我認為這個問題可能是由我使用 subgit 的方式引起的,但我不確定。
uj5u.com熱心網友回復:
我也不是 PowerShell 專家,但對 SubGit 有一些經驗。除了'subgit configure'和'layout auto'需要一些互動性之外,我沒有看到您使用SubGit的方式有任何問題,因為'auto'布局意味著SubGit將連接到SVN服務器,閱讀它的歷史和嘗試根據歷史創建合適的映射配置;并且對于那個 SubGit 總是要求 SVN 憑據,也許這可能會導致錯誤和后續任務切換?
避免互動性(至少要檢查)的一種可能方法是省略“布局”選項——在這種情況下,SubGit 只會創建一個“標準”布局映射,因此不需要連接到 SVN 服務器,也不需要任何互動性。
我嘗試像使用 PS 腳本那樣做同樣的事情,它在我的機器上或多或少地作業正常:它啟動了第一個命令,停止詢問憑據,一旦我提供了用戶名和密碼,它就會繼續配置和完成后,切換到“匯入”。在運行腳本之前我唯一需要更改的是執行策略,我必須將其從默認的 Restricted 更改為 Unrestricted 才能運行腳本。所以對我來說,你遇到的問題看起來更像是一個 PS 問題,可能與 PS 設定有關(可能是執行策略?)。
uj5u.com熱心網友回復:
我發現解決方案是通過argumentlist傳遞引數以下列方式使用進動
$procConfigure = Start-Process subgit -ArgumentList "configure
--layout auto $SVN_PROJECT_URL $GIT_REPO_PATH" -PassThru
$procConfigure.WaitForExit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/443893.html
上一篇:如何在標準的openjdkdocker鏡像上安裝Git?
下一篇:goget:當前分支沒有跟蹤資訊
