1、首先需要安裝SVN。Ubuntu下的SVN安裝十分簡單,sudo apt-get install subversion,然后根據提示一步一步,就完成了SVN的安裝;
sudo apt-get install subversion subversion-tools
上面的這種安裝方式,可能會對已安裝好的mysql產生影響,使mysql無法啟動。(出現pid錯誤)
下面這種方式安裝不會影響mysql。
===================================================================
=====================>源碼安裝svn
1>下載 subversion-1.6.3.tar.bz2 (下載地址:http://subversion.tigris.org/)(本地/home/chenyi/myTools/svn/subversion-1.6.3.tar.gz)
2>先解壓,解壓后
要裝一個支持checkout 從 http://這樣地址的獲取的功能。
cd subversion-1.6.3
(wget http://www.webdav.org/neon/neon-0.25.5.tar.gz去下載[下載以后放在當前目錄],或者把已有的/home/chenyi/myTools/svn/neon-0.25.5.tar.gz 放入 subversion-1.6.3目錄 )
tar xzf neon-0.25.5.tar.gz
mv neon-0.25.5 neon
./configure --prefix=/usr/local/stow/subversion && make && make install
=====================>錯誤解決
[ 在configure的時候可能會出錯:configure: error: Subversion requires SQLite ]
可以http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz 可以下載到最新的Sqlite (本地/home/chenyi/myTools/svn/sqlite-amalgamation-3.6.13.tar.gz)
=>tar zxvf sqlite-amalgamation-3.6.13.tar.gz
=>cd subversion-1.6.3
=>mkdir sqlite-amalgamation (在解壓后的subversion目錄下新建一目錄)
=>cp ../sqlite-3.6.13/sqlite3.c sqlite-amalgamation
=> 再執行subversion 的 configure和make,make install
=====================================================================
2、檢出文件(checkout)。
使用命令:svn co http://{svn repository url} /destination
如:svn co http://svn.shiwan.com/svn/shiwan/branches/program/
然后系統會用當前的用戶名登錄,提示輸入密碼,如果第一次密碼輸入錯誤,會提示你輸入用戶名;
輸入正確后,就可以檢出文件了。
3、提交文件(commit)。
進入需要更新的目錄,輸入命令:
svn commit -m path-to-commit,其中path-to-commit可以為空,成功后會提示更新后的版本號。
4、更新文件(update)。
svn update,在要更新的目錄運行這個命令就可以了。
5、查看日志(log)。
svn log path
SVN客戶端簡明使用教程
0、查看幫助
命令: svn help
1、同步(checkout)服務器數據到本地
命令: svn checkout <url> [directory]
svn co <url> [directory]
例:把 http://svn.shiwan.com/svn/shiwan/branches/program/ 目錄同步到本地的 /usr/local/svn/book/network 目錄
# cd /usr/local/svn/book
# svn checkout http://svn.shiwan.com/svn/shiwan/branches/program/
...
(R)eject, accept (t)emporarily or accept (p)ermanently? t
...
Password for 'wandering': <回車> # wandering是我當前登錄系統的帳號
Authentication realm: <https://svn.test.cn:443> book Subversion Repository
Username: jack
Password for 'jack': <password>
...
2、提交(commit)本地文檔到服務器
命令: svn commit -m "" [directory|file]
svn ci -m "" [directory|file]
例:把 /usr/local/svn/book/network/tcpip.txt 提交到服務器,前提是服務器上已經有此文件。
# cd /usr/local/svn/book/network/
# svn commit -m "" # -m是記錄的log信息,可以為空
一般情況下,只要在需要更新的數據文件所在的目錄執行 svn ci -m "" 即可。
3、更新(update)服務器數據到本地
命令: svn update [directory|file]
svn up [directory|file]
例:把 https://svn.test.cn/book/network/ 目錄中的內容更新到本地
# cd /usr/local/svn/book/network
# cd update
4、查看日志
命令: svn log [directory|file]
例:查看 /usr/local/svn/book/network 目錄的修改日志
方法一:
# cd /usr/local/svn/book/network
# svn log
方法二:
# svn log /usr/local/svn/book/network
5、增加(add)本地數據到服務器
命令: svn add <directory|file>
SVN簡明課程
1. 版本控制介紹
1.1. 什么是版本控制
- 修訂版(revision):可以認為是某個文件在其生命周期內各個保存的快照,每個快照和一個時間區間對應。
- 版本庫(Repository):存放修訂版的數據庫
- 本地工作拷貝(Local working copy):修訂版在本地的副本
- 版本的檢入(Check in):本地副本提交到服務器的版本庫
- 檢出(Check out):從服務器的版本庫中取出修訂版成為本地副本
- 版本號的來源:有兩種策略,基於文件的計數和基於倉庫的計數,subversion使用后者
- 標簽(Tags):為版本加一個名字,便於檢出
- 分支(Branches):修訂版打分支,以后可以平行修改,互不干擾
- 合並(Merging):將分支的修訂版合並為一個新的修訂版
- 鎖(Locking):為修訂版枷鎖
- 沖突(Conflict):並發版本控制時防止修訂版混亂的錯誤機制
1.2. 使用版本控制的好處
- 為團隊提供了所有項目文檔的回退按鈕;
- 支持多個開發人員在可控的方式下為相同的代碼工作;
- 版本控制系統保存了文檔在過去的各個改動,便於查找是誰,在何時,因為什么修改了文檔;
- 支持在文檔的主線上同時有多個版本;
- 支持查詢在某個時點上項目各個文檔的狀態,可用於研究生產效率等,也可用於對以前的軟件發行版的再發行。
1.3. 常見的版本控制系統
-
VSS:Visual Source Save,微軟公司的版本控制器軟件, http://msdn2.microsoft.com/zh-cn/vstudio/aa718670.aspx
-
CVS:Concurrent Versions System,開源免費, http://www.nongnu.org/cvs/
-
Subversion,開源免費, http://subversion.tigris.org/
2. Subversion介紹
-
subversion中文站: http://www.subversion.org.cn/
-
subversion與cvs的對比: http://www.uml.org.cn/pzgl/200705251.asp
3. Subversion基本使用
3.1. Subversion安裝
svn --version
3.2. 服務器端
3.2.1. 創建版本庫
svnadmin create file_path/repo_name
3.2.2. 啟動服務器
svnserve.exe -d -r file_path
- -d 后台執行
- -r 版本庫的根目錄
3.3. 客戶端
3.3.1. 初始導入(import)
svn import -m "init import" http://10.0.0.6/svn/teaching/
3.3.2. 檢出(checkout)
svn co http://hibernate3demo.googlecode.com/svn/tags/helloworld_r1
svn checkout http://hibernate3demo.googlecode.com/svn/tags/helloworld_r1
3.3.3. 保持更新(update)
svn update
svn up
- 更新要經常頻繁的做,盡量讓問題及早暴露,便於處理。
- 提交代碼前要更新,否則容易產生版本沖突。
3.3.4. 添加(add)
svn add file_path
3.3.5. 提交改動
svn commit
svn ci
svn ci -m "修改bug #224"
svn up svn ci -m "修改bug #224"
3.3.6. 還原改動
svn revert
3.3.7. “還原”已提交的改動
svn up
svn log your_file_path
svn diff -r 舊修訂版序號:新修訂版序號 your_file_path
svn merge -r 新修訂版序號:舊修訂版序號 your_file_path
svn commit -m "恢復到某修訂版(某修訂版作廢)"
3.3.8. 拷貝文件和目錄
svn copy path/file_name newpath/new_file_name svn commit -m "xxxx"
svn cp path/file_name newpath/new_file_name svn commit -m "xxxx"
3.3.9. 重命名目錄/文件
svn move file_name new_file_name
svn mv file_name new_file_name
3.3.10. 處理合並沖突
- 放棄改動;
- 堅持你的改動,找到.mine的文件名,恢復為原文件名,然后執行:
svn resolved file_name
3.3.11. 刪除文件
svn delete file_path
svn del file_path
4. Subversion高級內容
4.1. 文件鎖
4.2. 版本庫創建策略
4.3. 使用標簽和分支
- trunk:主干
- branches:分支
- tags:標簽
svn cp -m "創建用於實現radio標簽的分支" https://easymorse-simpletag.googlecode.com/svn/branches/simpletag_select_1 https://easymorse-simpletag.googlecode.com/svn/branches/simpletag_select_2
svn switch https://easymorse-simpletag.googlecode.com/svn/branches/simpletag_select_2
svn merge -r 33:HEAD https://easymorse-simpletag.googlecode.com/svn/branches/simpletag_select_2
svn merge https://easymorse-simpletag.googlecode.com/svn/trunk/simpletag@HEAD https://easymorse-simpletag.googlecode.com/svn/branches/simpletag_select_1@HEAD
