mac本機svn命令使用


  公司項目用到svn,之前做版本管理用的是git。 現在對svn回顧學習了一下。 這里有一篇很好的入門教程 http://www.rubyrobot.org/tutorial/subversion-with-mac-os-x

  對svn的幾個簡單理解和總結

   1、 svn 創建一個代碼庫

svnadmin creat svnrep

  上面代碼會在用戶目錄下創建一個名叫 svnrep 的文件夾,這個文件夾就是代碼庫了。之后可以向這個代碼庫填加你的工程和文件。svn建的是多人使用的一個代碼庫,和git不同,git pulldown下來之后,本地就有一個代碼庫,commit是提交到本地的代碼庫。push的時候才提交到服務器。 而svn check out下來,commit則提交到大家共用的代碼庫。

 

  2、導入你的文件 

1  svn import ~/svnrep/svn_test/ file:///Users/wangrui/svnrep/svn_test -m "init import"

  導入一個新建的工程進入代碼庫。這時其他人,包括你自己就可以check out代碼庫的代碼了。 先前已導入的本地工程可以刪了。 因為發生變化不會提示有更改(原因時它只是原始工程,不是svn check out下來的,不包含.svn文件)。  此時,重新checkout 工程,變可以更改工程了。

  上面的命令,第一個時你要導入工程的路徑,第二個時代碼庫的路徑。 file:// 表示代碼庫時本地的;

 

  3、提交

1 svn commit ~/desktop/svn_test -m "command line test"

  提交更改的文件即可。 

 

2014-4-29 新增編輯

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。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM