svn過濾
㈠ visualSVN如何通過hook對提交文件進行過濾
打開控制台,在Repository屬性中,找到hooks,添加 pre-commit 的 hook 處理示例:下面內容,對用戶提交的內容進行檢查,如果提交列表中有 pom.xml ,.project等文件,取消操作,顯示提示信息。如果當前提交者是 admin ,則允許。這是 windows batch 批處理腳本。相關語句說明: 1、@echo off echo off是關閉回顯,不顯示命令內容。舉例:如果你有一個test.bat,內容只有一行:dir,那執行後,輸出的內容可能是:如果你在最前面加上echo off,那輸出的內容可能是: 兩者對比,你可以發現,dir這個命令在下面的示例中不再顯示。 然而,由於加了一條語句 echo off,而這條語句在生效前,還是會回顯的,所以你看到輸出中有 c:\>echo off,是否有辦法讓這條語句也不顯示呢?可以,我們只要在 echo off 前加上 @ 就可以了。那這樣,我們的 test.bat 內容如下:這回執行的結果可能是: 2、setlocal 加上這條命令,避免批處理中對環境的改變影響到系統環境。如PATH 3、for 循環上面這句,要分解一下 for /f %%k in (『command』) do stat /f 是指定循環類型,這是迭代,用得最多的循環。 %%k 是變數,每次取出的值都會保存在裡面。 'command' 用單引號指明要執行的命令,命令處理後,在控制台輸出的內容會被 for 命令一行行取出處理。 stat 要執行的處理,如果有多條,可以用()包含多行命令。再來看一下命令 svnlook author %REPOS% -t %REV% svnlook 是 visual svn 安裝後,在其 bin 目錄下的管理工具,可以查看Repository 的相關信息,如目錄,日誌等。具體可使用 svnlook help 查看幫助。 author 是查看用戶名。 %REPOS% 是hook 傳過來的Repository 路徑,如 C:\myRepository\projectA -t%REV% %REV%是 hook 傳過來的事務ID號,如果不加參數 -t 則可以指定版本號。使用這條命令,我們可以提取出當前提交者的用戶名。 4、if "%user%" == "admin" goto admin 這是條件判斷,如果用戶名是 admin,使用 goto 語句,跳轉到標簽為 :admin 的地方,這在批處理的最後定義了。 5、for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i "pom.xml"') do @set /a count=%% k 這條語句與前面的 for 語句差不多,主要是 'command' 不同。 svnlook changed,這里可以列出所有提交的更新文件列表。 find /c /i "pom.xml 這是搜索語句,查找 pom.xml,/c 表示只顯示搜索結果的條數, /i 表示不區分大小寫在這兩條語句的中間,是管道符 |,表示將前者輸出的內容,作為後者處理的輸入內容,也就是將所有提交的文件列表,交給 find 去搜索,並統計有多少個 pom.xml 在管道符的前面,有個轉義符 ^,其作用是將這特殊的字元當前普通字元串,而不是命令。如果沒加這個轉義符,那這個 'command' 就不是一個整體了,以至語法出錯。這里是將其作為字元串,而 for 命令則將這個字元串再作為命令來處理,避免語法嵌套,解析錯誤。(這一點,之前不知道,總是提示語法錯誤,花了我不少時間才找出問題所在。) 5、取消 commit 要取消commit ,只要返回非0的結果代碼即可。如:exit 1 6、echo 請不要提交 "target" >& 2 前面沒問題,是普通的 echo,後面是一個重定向。將輸出的內容發送到錯誤輸出的 stderr。 0 標准輸入 stdin,鍵盤輸入 1 標准信息輸出 stdout,輸出到控制台 2 標准錯誤輸出 stderr,輸出到控制台如果不加 >& 2,那svn客戶端是看不到提示信息的,必須要輸出到 2 另外,如果提示說:Failed to start 'xxx/pre-commit.cmd' hook,可能需要有控制面板,高級,服務里,將 visual svn的用戶改為本地用戶。 [plain] 1. @echo off 2. setlocal 3. set REPOS=%1 4. set REV=%2 5. set path="C:\Program Files\VisualSVN Server\bin\";%path% 6. 7. for /f %%k in ('svnlook author %REPOS% -t %REV%') do set user=%%k 8. if "%user%" == "admin" goto admin 9. 10. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i "pom.xml"') do @set /a count=%%k 11. if NOT %count% == 0 ( 12. echo 請不要提交 "pom.xml" >& 2 13. exit 1 14. ) 15. 16. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i ".project"') do @set /a count=%% k 17. if NOT %count% == 0 ( 18. echo 請不要提交 ".project" >& 2 19. exit 2 20. ) 21. 22. 23. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i ".classpath"') do @set /a count=%% k 24. if NOT %count% == 0 ( 25. echo 請不要提交 ".classpath" >& 2 26. exit 3 27. ) 28. 29. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i "target"') do @set /a count=%%k 30. if NOT %count% == 0 ( 31. echo 請不要提交 "target" >& 2 32. exit 4 33. ) 34. 35. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i ".settings"') do @set /a count=%% k 36. if NOT %count% == 0 ( 37. echo 請不要提交 ".settings" >& 2 38. exit 4 39. ) 40. 41. :admin 42. exit 0 [plain] 1. C:\>test 2. 3. C:\>dir 4. 驅動器 C 中的卷是 WINXP 5. 卷的序列號是 8C4E-88D3 6. 7. C:\ 的目錄 8. 9. 2011-04-28 08:55 Documents and Settings 10. 2011-12-14 09:32 Intel 11. 2012-03-03 10:26 Oracle 12. 2012-03-19 13:22 Program Files 13. 2011-12-14 09:34 2,122 RHDSetup.log 14. 2012-03-24 15:26 6 test.bat 15. 2012-03-09 16:44 WINDOWS 16. 2 個文件 2,128 位元組 17. 5 個目錄 41,156,255,744 可用位元組 [plain] 1. C:\>test 2. 3. C:\>echo off 4. 驅動器 C 中的卷是 WINXP 5. 卷的序列號是 8C4E-88D3 6. 7. C:\ 的目錄 8. 9. 2011-04-28 08:55 Documents and Settings 10. 2011-12-14 09:32 Intel 11. 2012-03-03 10:26 Oracle 12. 2012-03-19 13:22 Program Files 13. 2011-12-14 09:34 2,122 RHDSetup.log 14. 2012-03-24 15:28 17 test.bat 15. 2012-03-09 16:44 WINDOWS 16. 2 個文件 2,139 位元組 17. 5 個目錄 41,156,255,744 可用位元組 [plain] 1. @echo off 2. dir [plain] 1. C:\>test 2. 3. 驅動器 C 中的卷是 WINXP 4. 卷的序列號是 8C4E-88D3 5. 6. C:\ 的目錄 7. 8. 2011-04-28 08:55 Documents and Settings 9. 2011-12-14 09:32 Intel 10. 2012-03-03 10:26 Oracle 11. 2012-03-19 13:22 Program Files 12. 2011-12-14 09:34 2,122 RHDSetup.log 13. 2012-03-24 15:31 18 test.bat 14. 2012-03-09 16:44 WINDOWS 15. 2 個文件 2,140 位元組 16. 5 個目錄 41,156,255,744 可用位元組 [plain] 1. for /f %%k in ('svnlook author %REPOS% -t %REV%') do set user=%%k
㈡ 如何實現TortoiseSVN日誌過濾字元串的功能
Add命令只是告訴本地的「Working Copy」將該文件納入版本管理, 並沒有將刪除文件時,選中要刪除的文件或目錄, 單擊右鍵,TortoiseSVN-
㈢ c#在svn怎麼過濾debug
1、在您使用SVN版本控抄制的根目襲錄,右鍵,選擇TortoiseSVN-->Settings
2、在彈出的對話框中,選擇第一大項(此項是默認選擇的),找到右邊的Subversion-->Global ignore pattern , 在後面加入需要禁止的文件夾「debug」
3、設置完成之後,新建一個obj.txt , 測試通過,至此,使用 svn 過濾策略成功過濾掉文件夾,同樣 過濾文件一樣的,前提是需要您對正則表達式有一定的了解、
㈣ 怎麼設置TortoiseSVN,實現文件夾過濾
方法/步驟
1,在您使用SVN版本控制的根目錄,右鍵,選擇TortoiseSVN-->Settings
2,在彈出的對話框中,選擇第一大項(此項是默認選擇的),找到右邊的Subversion-->Global ignore pattern , 在後面加入需要禁止的文件夾,比如 bin ,就加入 *bin
obj 就加入 *obj ,注意,多個之間用單個空格(鍵盤上最長的個按鍵)分開。
3,設置完成之後,新建一個obj.txt , 測試通過,至此,使用 svn 過濾策略成功過濾掉文件夾,同樣 過濾文件一樣的,前提是需要您對正則表達式有一定的了解。
㈤ 如何在myeclipse編譯時過濾掉svn目錄
使抄用編譯時過濾襲選項可以使編譯時.svn不移到classess目錄中,設置方法:
1、依次點擊 "Project->Properties->Java Build Path";
2、右側的面板中的"Source"選項卡,展開"source folder "後會看到"Included"、"Excluded"和"Native library location:";
3、在Excluded中加入"**/.svn/**",就可以將所有的svn文件排除在編譯路徑中了。
備註:有可能導致打jar包不好用。
㈥ eclipse 怎麼取消svn過濾
第一步:建立一個名字叫做remove-svn-folders.reg的文本(先建立txt文件,然後粘貼內容後再修改文件名字),記得後綴要叫.reg。文本的內容為:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\com
mand] @="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
第二步:保存後,雙擊這個文件,此時再右鍵任何文件夾時都會出現一個「Delete SVN Folders」,點擊這項,將會把此文件夾下包括子文件夾的.svn都給刪除。如果項目想去掉svn,直接對此項目進行上面操作,一下子就將項目所有的.svn刪除,即項目去除了svn。
第三步:也比較重要哦!如果項目已經去掉了svn,此時我們應該將右鍵的這項功能去掉預防以後不小心點擊將不想去svn的項目去除了,這將會非常令人蛋疼。去除右鍵這項功能的方法為:打開注冊
表(就是在命令行輸入:regedit命令),然後在注冊表裡找到:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN],將DeleteSVN刪除就可以了。
㈦ 如何設置eclipse svn對比過濾target
具體的做法就是在新建項目的時候,在第一次commit 到 SVN 之前,先在項目的根目錄設置一個 SVN 屬性(我在eclipse 3.3 中,SVN插件是subclipse 1.4.0):
在eclipse中,右鍵點擊項目根目錄 Team -> Set Property ... 然後在彈出的對話框中,Property name 選 「svn:ignore」,Property Content 輸入:
target
.project
.classpath
.settings就ok了。
完了進入你的 SVN 的repository 里把已經commit進去的target目錄和這兩個文件(.classpath .project) 刪除就可以了。
㈧ svn checkout 的時候怎麼設置 只檢出自己需要的文件忽略不需要的文件
這個問題解決了嗎?最近也遇到了同樣的問題
㈨ 怎麼解決linux下svn過濾掉了.a等類型文件的問題
設置svn:ignore屬性: 例如: svn propset svn:ignore *.class 過濾掉所有.class文件。
㈩ 怎麼設置TortoiseSVN,實現文件夾過濾
在您使用SVN版本控制的根目錄,右鍵,選擇TortoiseSVN-->Settings
在彈出的對話框中,選擇第一大項(此專項是默認屬選擇的),找到右邊的Subversion-->Global ignore pattern , 在後面加入需要禁止的文件夾,比如 bin ,就加入 *bin
obj 就加入 *obj ,注意,多個之間用單個空格(鍵盤上最長的個按鍵)分開、
設置完成之後,新建一個obj.txt , 測試通過,至此,使用 svn 過濾策略成功過濾掉文件夾,同樣 過濾文件一樣的,前提是需要您對正則表達式有一定的了解、