linux svn 客戶端安裝配置

一、首先須要安裝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
=====================================================================



二、檢出文件(checkout)。

        使用命令:svn co http://{svn repository url} /destination
        如:svn co http://svn.shiwan.com/svn/shiwan/branches/program/

        而後系統會用當前的用戶名登陸,提示輸入密碼,若是第一次密碼輸入錯誤,會提示你輸入用戶名;

        輸入正確後,就能夠檢出文件了。

三、提交文件(commit)。

          進入須要更新的目錄,輸入命令:

          svn commit -m path-to-commit,其中path-to-commit能夠爲空,成功後會提示更新後的版本號。

四、更新文件(update)。

        svn update,在要更新的目錄運行這個命令就能夠了。

五、查看日誌(log)。

        svn log path



SVN客戶端簡明使用教程




0、查看幫助

命令:   svn help



一、同步(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>
...



二、提交(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 "" 便可。



三、更新(update)服務器數據到本地

命令:   svn update [directory|file]
        svn up [directory|file]

例:把 https://svn.test.cn/book/network/ 目錄中的內容更新到本地

# cd /usr/local/svn/book/network
# cd update



四、查看日誌

命令:   svn log [directory|file]

例:查看 /usr/local/svn/book/network 目錄的修改日誌

方法一:

# cd /usr/local/svn/book/network
# svn log

方法二:

# svn log /usr/local/svn/book/network



五、增長(add)本地數據到服務器

命令:   svn add <directory|file>





SVN簡明課程

 
 

1. 版本控制介紹

 
 

1.1. 什麼是版本控制

 
版本控制系統用於保存編寫開發應用程序時的文檔的各個修訂版(revision)。
版本控制也稱做Revision Control System(RCS)。
名詞解釋:
  • 修訂版(revision):能夠認爲是某個文件在其生命週期內各個保存的快照,每一個快照和一個時間區間對應。
  • 版本庫(Repository):存放修訂版的數據庫
  • 本地工做拷貝(Local working copy):修訂版在本地的副本
  • 版本的檢入(Check in):本地副本提交到服務器的版本庫
  • 檢出(Check out):從服務器的版本庫中取出修訂版成爲本地副本
  • 版本號的來源:有兩種策略,基於文件的計數和基於倉庫的計數,subversion使用後者
  • 標籤(Tags):爲版本加一個名字,便於檢出
  • 分支(Branches):修訂版打分支,之後能夠平行修改,互不干擾
  • 合併(Merging):將分支的修訂版合併爲一個新的修訂版
  • 鎖(Locking):爲修訂版枷鎖
  • 衝突(Conflict):併發版本控制時防止修訂版混亂的錯誤機制
 

1.2. 使用版本控制的好處

 
對團隊和我的都有好處:
  • 爲團隊提供了全部項目文檔的回退按鈕;
  • 支持多個開發人員在可控的方式下爲相同的代碼工做;
  • 版本控制系統保存了文檔在過去的各個改動,便於查找是誰,在什麼時候,由於什麼修改了文檔;
  • 支持在文檔的主線上同時有多個版本;
  • 支持查詢在某個時點上項目各個文檔的狀態,可用於研究生產效率等,也可用於對之前的軟件發行版的再發行。
 

1.3. 常見的版本控制系統

 
 

2. Subversion介紹

 
Subversion是新一代的版本控制工具,正逐步替代CVS。
資源:
 

3. Subversion基本使用

 
 

3.1. Subversion安裝

 
Subversion是典型的C/S模式應用程序。
安裝過程很簡單,圖形界面,默認選擇便可。
輸入svn命令查看安裝是否成功:
 
svn --version
 
svn命令是subversion程序的客戶端
svnserver命令能夠啓動svn服務器,用於搭建簡易的svn服務器環境
 

3.2. 服務器端

 
如下是搭建簡易的服務器端環境的作法,正式通常配合apache經過http訪問。
 

3.2.1. 建立版本庫

 
建立服務器端版本庫,至關於DBMS建立數據庫示例。
命令行:
 
svnadmin create file_path/repo_name
 
 

3.2.2. 啓動服務器

 
 
svnserve.exe -d -r file_path
 
  • -d 後臺執行
  • -r 版本庫的根目錄
訪問該版本庫的url:svn//localhost/repo_name
 

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
 
或者:經過第三方圖形工具的檢出,好比tortoiseSVN( http://tortoisesvn.tigris.org/)
將svn服務器的最新修訂版下載到本地成爲本地工做拷貝。
 

3.3.3. 保持更新(update)

 
命令行:
 
svn update
 
或者
 
svn up
 
或者經過tortoiseSVN
用svn服務器的最新修訂版更新本地工做拷貝。
多人合做時:
  • 更新要常常頻繁的作,儘可能讓問題及早暴露,便於處理。
  • 提交代碼前要更新,不然容易產生版本衝突。
 

3.3.4. 添加(add)

 
命令行:
 
svn add file_path
 
或者經過tortoiseSVN,eclipse插件。
告知svn服務器,添加目錄和/或文件到服務器上,這個操做相似SQL的insert,可是並無真的操做,直到commit。
 

3.3.5. 提交改動

 
至關於通用概念:檢入(checkin)。
命令行:
 
svn commit
 
或者:
 
svn ci
 
或者經過tortoiseSVN,eclipse插件。
提交本地工做拷貝的全部改動,並且是原子性的。
要求:通常要註明修改的緣由
 
svn ci -m "修改bug #224"
 
要求:提交以前要作更新
 
svn up svn ci -m "修改bug #224"
 
 

3.3.6. 還原改動

 
對應提交(commit),要有相似回滾(rollback)的操做。
 
svn revert
 
或者經過tortoiseSVN,eclipse插件。
這個操做對開發人員十分有用,在改動被人不少代碼後能夠「一鍵恢復」。
 

3.3.7. 「還原」已提交的改動

 
revert只適合未提交的狀況。
若是已經提交,發現問題,要回退到以前的修訂版。
首先須要:
 
svn up
 
讓本地工做拷貝更新到最新狀態。
而後:
 
svn log your_file_path
 
查看文件日誌,這時候提交時填寫的說明信息就派上用場了。
查看兩個修訂版之間的不一樣:
 
svn diff -r 舊修訂版序號:新修訂版序號 your_file_path
 
或者經過tortoiseSVN,eclipse插件。
決定用哪一個舊的修訂版號後,用舊的修訂版號文件覆蓋新的修訂版號文件。
 
svn merge -r 新修訂版序號:舊修訂版序號 your_file_path
 
還須要:
 
svn commit -m "恢復到某修訂版(某修訂版做廢)"
 
或者經過tortoiseSVN,eclipse插件。
這個還原是所謂的,不是用舊的版本號替代,而是將舊文件覆蓋新文件。
 

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"
 
或者:利用windows的資源管理器/unix的cp命令
或者經過tortoiseSVN,eclipse插件。
svn的copy,是很重要的工具,版本分支和標籤等概念都經過它實現。
svn的copy,是廉價的拷貝。
 

3.3.9. 重命名目錄/文件

 
命令行:
 
svn move file_name new_file_name
 
或者:
 
svn mv file_name new_file_name
 
 

3.3.10. 處理合並衝突

 
svn默認不對文件加鎖。
若是不一樣人編輯了同一個文件的不一樣部分,提交時會自動合併。
若是不一樣人編輯了同一個文件的同一部分,後提交者會報告合併衝突。
解決方法(人工仲裁):
  • 放棄改動;
  • 堅持你的改動,找到.mine的文件名,恢復爲原文件名,而後執行:
    svn resolved file_name
 

3.3.11. 刪除文件

 
將本地工做拷貝刪除。
命令行:
 
svn delete file_path
 
或者:
 
svn del file_path
 
 

4. Subversion高級內容

 
 

4.1. 文件鎖

 
通常用於二進制內容,由於沒法合併。
若是某個文件加鎖,其餘用戶的本地工做拷貝(更新後)將是隻讀的。
當該用戶提交後,其餘用戶的本地工做拷貝(更新後)才能夠寫操做。
其餘用戶能夠「撬鎖」,而後進行寫操做。
高級配置能夠配置「撬鎖」權限,使不是什麼人均可以「撬鎖」。
 

4.2. 版本庫建立策略

 
單一的版本庫保存一個項目。
單一的版本庫保存多個項目。
多個版本庫。
 

4.3. 使用標籤和分支

 
在svn中標籤和分支都源於copy命令。
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
 
提交。
相關文章
相關標籤/搜索