公司項目用到svn,以前作版本管理用的是git。 如今對svn回顧學習了一下。 這裏有一篇很好的入門教程 http://www.rubyrobot.org/tutorial/subversion-with-mac-os-x。html
對svn的幾個簡單理解和總結git
一、 svn 建立一個代碼庫ruby
svnadmin creat svnrep
上面代碼會在用戶目錄下建立一個名叫 svnrep 的文件夾,這個文件夾就是代碼庫了。以後能夠向這個代碼庫填加你的工程和文件。svn建的是多人使用的一個代碼庫,和git不一樣,git pulldown下來以後,本地就有一個代碼庫,commit是提交到本地的代碼庫。push的時候才提交到服務器。 而svn check out下來,commit則提交到你們共用的代碼庫。服務器
二、導入你的文件 svn
1 svn import ~/svnrep/svn_test/ file:///Users/wangrui/svnrep/svn_test -m "init import"
導入一個新建的工程進入代碼庫。這時其餘人,包括你本身就能夠check out代碼庫的代碼了。 先前已導入的本地工程能夠刪了。 由於發生變化不會提示有更改(緣由時它只是原始工程,不是svn check out下來的,不包含.svn文件)。 此時,從新checkout 工程,變能夠更改工程了。post
上面的命令,第一個時你要導入工程的路徑,第二個時代碼庫的路徑。 file:// 表示代碼庫時本地的;學習
三、提交測試
1 svn commit ~/desktop/svn_test -m "command line test"
提交更改的文件便可。 ui
2014-4-29 新增編輯url
svn 分支開發:
先轉載一片比較好的文章,以下:
SVN分支和合並的簡單例子 儘管svn沒有做強制要求,可是通常svn版本庫目錄建議建立trunk、branches和tags三個目錄。 在實際操做時,trunk主幹版本要時刻保持乾淨,即隨時能夠基於這個版本進行修改並將應用部署上線。branches是分支目錄,存放並行開發的項目代碼,由於分支是主幹的廉價拷貝(至關只是提交了一次主幹版本,增長了一個版本號,並無取出版本庫做鏡像拷貝),因此你能夠放心創建不少分支版本。不過Subversion不支持跨版本庫的拷貝,當使用svn copy時你只能在同一個版本庫內操做。tags目錄存放trunk某個的快照,好比說release-1.0即trunk處於1.0版本時的快照。 使用svn來做團隊的代碼管理,那麼分支和合並將是很是經常使用的操做。下面是一個簡單的示例。 1. 建立分支。這裏假設你要負責一個叫theme的項目,分支號1.7.2。 #這裏的localhost是svn服務器地址 svn copy -m "1.7.2 - theme" svn://localhost/www/trunk svn://localhost/www/branches/branch1.7.2-theme svn co svn://localhost/www/branches/branch1.7.2-theme 2. 從trunk中merge到分支。忙了一個星期終於開發完了,可是開發期間trunk版本有過改動,部署上線前你須要合併trunk的代碼。 #branch1.7.2-theme是分支目錄,注意不能夠進到分支子目錄 cd branch1.7.2-theme #前面的12972是開分支以前trunk的版本號,後面的12991是merge時trunk的版本號 svn merge -r 12972:12991 svn://localhost/www/trunk 若是有衝突選擇p(postpone),merge完了以後使用svn st|grep ^C查看衝突文件,而後比對修改衝突文件。解決衝突後再check in ,信息寫上執行的merge操做。 svn ci -m 'svn merge -r 12972:12991 svn://localhost/www/trunk' 3. 從分支merge到trunk。上線測試完畢,你很幸運,一切都如預期正常,這時就要將分支迴歸trunk,將trunk更新到最新。 #先從trunk checkout一份新鮮的代碼,而後cd到該版本目錄下 svn co svn://localhost/www/trunk cd trunk #12973是分支開始的版本號,13006是分支結束的版本號 svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme 如步驟2同樣解決衝突,解決衝突後再check in,信息寫上執行的merge操做。 svn ci -m "svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme" 相關的手冊能夠參閱svn文檔
我本身在這個合併過程當中總是出現
svn: E170000: 'file://localhost/Users/wangrui/Desktop/svntemprepo/branches/branchone' isn't in the same repository as 'file:///Users/wangrui/Desktop/svntemprepo'
這種錯誤,緣由是svn merge時,使用的url地址不對。 用 svn info 查出repo的url,再用這個url做爲merge時要用的url。