簡體   English   中英

svn 提交后掛鈎:“錯誤解決案例”和“跳過 \\ip-address\users\myDir”消息

[英]svn post-commit hook : “error resolving case” & “skipped \\ip-address\users\myDir”" messages

我在 windows 上安裝了 Collabnet SVN 服務器。 此外,我已經實現了一個提交后掛鈎,當我從工作副本“A”提交到存儲庫時,它應該更新項目的工作副本“B”。 工作副本“B”位於網絡驅動器 [H -> \\ip-address\users\myDirB]:

  • 現在,當我在我的 post-commit 鈎子中指定下面的代碼行並從工作副本“A”提交更改集時:

SET WORKING_COPY=H:/myDirB

我收到錯誤: svn 提交后掛鈎:“錯誤解決案例”

  • 或者,如果我指定: SET WORKING_COPY=//ip-address/users/myDirB

我得到錯誤:

“跳過\ip-address\users\myDirB””

我究竟做錯了什么? 干杯。

請注意:* Collabnet Subversion 服務器安裝在我的 C 上:驅動器

  • 它作為對網絡目錄具有完全權限的服務帳戶運行我想通過提交后掛鈎自動更新,即 - \\ip-address\users\myDirB*

  • 我也將路徑 \\ip-address\users\myDirB 映射到 H: 驅動器

SET WORKING_COPY=//ip-address/users/myDirB

無法工作,因為 cmd.exe 需要一個普通路徑(驅動器號、冒號、相對路徑)。 它不能處理其他路徑,如 UNC 或 ip 地址。 它必須有一個驅動器號。

SET WORKING_COPY=H:/myDirB

但是這不起作用,因為您將 H: 映射到您登錄的用戶。 但是鈎子腳本是以你的 svn 服務器正在運行的用戶身份運行的,即作為服務帳戶。 並且服務帳戶沒有映射H:驅動器。

我建議不要使用提交后掛鈎來執行此操作。 正如你所發現的那樣,它將永遠脆弱而復雜。

您應該設置一個持續集成構建來監控 svn 存儲庫,然后在需要時部署代碼。 將這些問題分開將使您在將來免去麻煩,提供通知團隊(IM、email 或儀表板)的簡便方法,並在何時/如果希望進行任何自動化測試時為您提供幫助。

我遇到的兩個問題是(1)路徑和(2)權限。 我們的舊設置包括 Windows 2008 R2 上的 collabnet subversion server 1.5.6 和 apache 2.2(現在是 wandisco 1.7.2 / Z974318ED5C2350408R2.2B)。

最初,我將路徑作為映射驅動器,subversion 和 apache 服務作為本地系統帳戶運行。 所以,我們有類似的東西:

SET WORKING_COPY=X:\the\path\to\theworkingcopy

通過 CLI 運行它很好,但是通過后續鈎子提交和執行會導致日志消息如

Error resolving case of 'X:\the\path\to\theworkingcopy'

因此,我將 WORKING_COPY 更改為使用 UNC 路徑,例如:

\\servername\DRIVELETTER$\the\path\to\theworkingcopy

仍然是同樣的問題,但我認為服務(兩者)需要以網絡權限運行,所以我將服務“登錄為”更改為 svn 服務器和 apache 的域帳戶。

我遇到的另一個問題是為服務的“登錄身份”用戶設置域。 我使用了域用戶,但對域使用了通配符,例如“.\theuser”

然后它就起作用了。

至於這是一個脆弱的解決方案,我同意 CI 是 go 的更好方法。 盡管我們在 UNC 上的 svn 更新已 (1) 記錄在案並且 (2) 現在可以工作並且 (3) 它在不久的將來不太可能改變 - 正如 kbb 所指出的 - 它並沒有分離關注點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM