我有一個包含從停留在非SVN目錄SVN倉庫檢出開發目錄。我想更新所有svns中的dirs。SVN更新
迪爾結構類似於一個如下:
你將如何解決這一問題?
我想出了「蠻力」解決方案,但它是不是很聰明:
for i in `find . -mindepth 1 -maxdepth 3 -type d | grep -v .svn`; do svn up $i; done
這將是很好,也有東西想有:
svn --recursive update development_dir.
我有一個包含從停留在非SVN目錄SVN倉庫檢出開發目錄。我想更新所有svns中的dirs。SVN更新
迪爾結構類似於一個如下:
你將如何解決這一問題?
我想出了「蠻力」解決方案,但它是不是很聰明:
for i in `find . -mindepth 1 -maxdepth 3 -type d | grep -v .svn`; do svn up $i; done
這將是很好,也有東西想有:
svn --recursive update development_dir.
不幸的是,SVN不支持此功能。然而,你可以做的是通過消除循環和管道到grep來優化你的命令。該命令應該是這樣的:
find . -mindepth 1 -maxdepth 3 -name "*.svn" -type d -exec svn up {}/.. \;
爲了使生活更輕鬆,你可以設置一個猛砸別名,例如:
alias svn_up_recursive='find . -mindepth 1 \
-maxdepth 3 -name "*.svn" -type d -exec svn up {}/.. \;'
...與svn_up_recursive
命令調用整個腳本。或者創建一個shell腳本並將其放入您的bin
目錄。我個人更喜歡shell腳本,因爲它更容易支持,擴展它們,處理命令行參數等。
如何創建一個虛擬分支/存儲庫和外部組件設置爲所需的分支。這樣,頂層svn更新將在所有子文件夾中進行更新。也許你可以跳過非svn目錄/文件。
您也可以騙由具有的.svn SVN /文件的入口在非SVN的文件夾,這會騙,非SVN文件夾版本的顛覆。只要您不更改文件夾名稱,您在此方法中的提交也不會有任何問題。
我沒有看到你的解決方案有什麼問題。它的工作原理,既然你沒有開發一個全面的svn客戶端爲什麼要麻煩? – akonsu 2010-10-07 13:30:47
使用具有不同源存儲庫的目錄列出列表會不會更容易?這不是他們常常改變的嗎?然後你可以簡單地執行'cat file_with_repositories | xargs svn up' – mhitza 2010-10-07 13:33:29