2012-01-06 68 views
1

我有一個SVN存儲庫在我的Windows 2008服務器上運行。它現在有2個應用程序,讓我們稱他們爲App1和App2。我想將應用程序的提交文件複製到服務器上的另一個地方,每個應用程序一個。我想在提交後這麼做,所以我認爲post-commit鉤子是可以使用的鉤子。SVN鉤子複製提交的文件和文件夾?

如何知道哪個應用程序獲得了新文件以及複製命令將如何顯示?例如,App1的文件必須轉到c:\ app1,App2的文件轉到c:\ app2。

感謝您的幫助:)。

回答

2

最好的辦法是在服務器上檢查一下您的存儲庫的工作副本,並在post-commit中正確提及,只需在檢出的工作副本上執行svn update即可。

+0

嗯,聽起來像它可以工作。你可以發佈post-commit.bat文件的內容嗎? – EOB 2012-01-06 08:18:39

+0

@EOB只需cd路徑和svn更新。 – manojlds 2012-01-06 08:23:14

+0

到什麼路徑?例如,簽出的app1的路徑?我如何知道路徑?那是1美元嗎? – EOB 2012-01-06 08:26:46

1

後提交確實是一個使用。

如果我們看一下對svnnotify的例子..

#!/bin/sh 

REPOS="$1" 
REV="$2" 

/usr/local/bin/svnnotify     \ 
    --repos-path "$REPOS"    \ 
    --revision  "$REV"     \ 
    --subject-cx       \ 
    --with-diff        \ 
    --handler  HTML::ColorDiff   \ 
    --to   <your e-mail address> \ 
    --from   <from e-mail address> 

貌似$ 1是回購路徑和$ 2是轉..所以,你應該能夠只是做一個正則表達式對$ 1測試如果它在你感興趣的兩個路徑之一,並採取相應的行動(或沒有)

從撲殺:Subversion Post-Commit Hooks 101

+0

你能告訴我正則表達式的東西看起來像iyo嗎? – EOB 2012-01-06 11:33:24

0
#!/bin/bash 

dir='/path/to/something/special' 
dir='/path/to/other/thing' 


if [[ $dir =~ "something" ]]; then 
    echo "something dir" 
fi 

if [[ $dir =~ "other" ]]; then 
    echo "other dir" 
fi 
+0

我需要Windows版本,它適用於Windows嗎? – EOB 2012-01-06 11:39:16

+0

cygwin?否則 - 抓住PowerShell手冊並開始讀入。 :p – synthesizerpatel 2012-01-06 11:40:08