linux svn使用

 SVN是一種版本管理系統,前身是CVS,是開源軟件的基石。即便在溝通充分的狀況下,多人維護同一份源代碼的必定也會出現混亂的狀況,版本管理系統就是爲了解決這些問題。php


SVN中的一些概念 : 
a. repository(源代碼庫) 
   源代碼統一存放的地方。 
b. Checkout (提取) 
   當你手上沒有源代碼的時候,你須要從repository checkout一份。 
c. Commit (提交) 
   當你已經修改了代碼,你就須要Commit到repository。 
d. Update (更新) 
    當你已經Checkout了一份源代碼, Update一下你就能夠和Repository上的源代碼同步,你手上的代碼就會有最新的變動。   緩存

 

Centos 搭建SVN服務,有效的管理代碼,如下三步能夠快速搞定。bash

 

一、安裝          服務器

[root@www ~]# yum install subversion 

[root@www ~]# svnserve --version   判斷是否安裝成功 
  svnserve, version 1.6.11 (r934486) 出現類型提示,說明安裝成功。 

有了SVN軟件後還須要創建SVN庫。 
[root@www ~]# mkdir /opt/svn/repos 
[root@www ~]# svnadmin create /opt/svn/repos 
執行上面的命令後,自動在repos下創建多個文件, 分別是conf, db,format,hooks, locks, README.txt。 

 

   

二、配置網絡

     上面的操做很簡單,幾個命令就搞定, 下面的操做也不難。dom

     進入上面生成的文件夾conf下,進行配置,   有如下幾個文件authz, passwd, svnserve.conftcp

     其中authz 是權限控制,能夠設置哪些用戶能夠訪問哪些目錄,   passwd是設置用戶和密碼的,    svnserve是設置svn相關的操做。svn

 

 2 .1先設置passwd 
  [root@www ~]# vi passwd 
[users]
# harry = harryssecret
# sally = sallyssecret
hello=123
用戶名=密碼

這樣咱們就創建了hello用戶, 123密碼  

   2.2 再設置權限authz 
[root@www ~]# vi authz post

[/]
hello= rw

意思是hello用戶對全部的目錄有讀寫權限,固然也能夠限定。
若是是本身用,就直接是讀寫吧。 


2.3最後設定snvserv.conf 
[root@www ~]# vi snsvserv.conf 網站

anon-access = none # 使非受權用戶沒法訪問 
auth-access = write # 使受權用戶有寫權限 
password-db = password
#authz-db = authz   # 訪問控制文件 
realm = /opt/svn/repos # 認證命名空間,subversion會在認證提示裏顯示,而且做爲憑證緩存的關鍵字。
採用默認配置. 以上語句都必須頂格寫, 左側不能留空格, 不然會出錯.

 

好了,經過以上配置,你的svn就能夠了。

 

三、鏈接

 

  [root@www ~]# svnserve -d -r /opt/svn/repos 啓動svn:


若是已經有svn在運行,能夠換一個端口運行 
[root@www ~]# svnserve -d -r /opt/svn/repos --listen-port 3391 

這樣同一臺服務器能夠運行多個svnserver

好了,啓動成功後,就可使用了。
建議採用TortoiseSVN, 鏈接地址爲: svn://your server address (若是指定端口須要添加端口  :端口號)

鏈接後能夠上傳本地的文件,有效的管理你的代碼。 

 

 

開放svn端口

修改
iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
保存
/etc/rc.d/init.d/iptables save
重啓
service iptables restart
查看
/etc/init.d/iptables status

svn 命令詳解

 

一、將文件checkout到本地目錄

svn checkout path(path是服務器上的目錄)

例如:svn checkout svn://192.168.1.1/pro/domain

簡寫:svn co

二、往版本庫中添加新的文件

svn add file

例如:svn add test.php(添加test.php)

svn add *.php(添加當前目錄下全部的php文件)

三、將改動的文件提交到版本庫

svn commit -m 「LogMessage「 [-N] [--no-unlock] PATH(若是選擇了保持鎖,就使用–no-unlock開關)

例如:svn commit -m 「add test file for my test「 test.php

簡寫:svn ci

四、加鎖/解鎖

svn lock -m 「LockMessage「 [--force] PATH

例如:svn lock -m 「lock test file「 test.php

svn unlock PATH

五、更新到某個版本

svn update -r m path

例如:

svn update若是後面沒有目錄,默認將當前目錄以及子目錄下的全部文件都更新到最新版本。

svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)

svn update test.php(更新,於版本庫同步。若是在提交的時候提示過時的話,是由於衝突,須要先update,修改文件,而後清除svn resolved,最後再提交commit)

簡寫:svn up

六、查看文件或者目錄狀態

1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)

【?:不在svn的控制中;M:內容被修改;C:發生衝突;A:預約加入到版本庫;K:被鎖定】

2)svn status -v path(顯示文件和子目錄狀態)

第一列保持相同,第二列顯示工做版本號,第三和第四列顯示最後一次修改的版本號和修改人。

注:svn status、svn diff和 svn revert這三條命令在沒有網絡的狀況下也能夠執行的,緣由是svn在本地的.svn中保留了本地版本的原始拷貝。

簡寫:svn st

七、刪除文件

svn delete path -m 「delete test fle「

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m 「delete test file」

或者直接svn delete test.php 而後再svn ci -m ‘delete test file‘,推薦使用這種

簡寫:svn (del, remove, rm)

八、查看日誌

svn log path

例如:svn log test.php 顯示這個文件的全部修改記錄,及其版本號的變化

九、查看文件詳細信息

svn info path

例如:svn info test.php

十、比較差別

svn diff path(將修改的文件與基礎版本比較)

例如:svn diff test.php

svn diff -r m:n path(對版本m和版本n比較差別)

例如:svn diff -r 200:201 test.php

簡寫:svn di

十一、將兩個版本之間的差別合併到當前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(將版本200與205之間的差別合併到當前文件,可是通常都會產生衝突,須要處理一下)

十二、SVN 幫助

svn help

svn help ci

1三、版本庫下的文件和目錄列表

svn list path

顯示path目錄下的全部屬於版本庫的文件和目錄

簡寫:svn ls

 

 

建立版本庫:
終端輸入:svnadmin create [路徑]
該路徑能夠是相對路徑,例如,當前在home/user/svn/目錄下,輸入svnadmin create myproject,則該版本庫會被建立在home/user/svn/目錄下,新建一個文件夾名爲myproject,其中即是版本庫的文件了。


將文件導入版本庫:
終端輸入:svn import [源路徑] [目標版本庫路徑] -m [日誌信息]
源路徑能夠是相對路徑,導入時會遞歸導入源路徑下的全部文件和文件夾,目標版本庫路徑須要絕對目錄(反正我試驗是這樣的),例如版本庫的目錄是:home/user/svn/myproject/。則應該這樣寫:file:///home/user/svn/myproject/
例如將當前目錄導入版本庫myproject:
svn import . file:///home/user/svn/myproject -m "導入文件"

svn import /alidata/www/weijdan/ file:///alidata/server/svn/weiqiye/ -m 'create weiqiye'


從版本庫導出:
導入後原文件並未被歸入版本管理,若想得到受版本控制的文件,就須要從版本庫導出
終端輸入:svn co [版本庫路徑] [導出目標路徑]
例如將myproject庫中的文件導出到當前目錄:svn co file:///home/user/svn/myproject .

 svn co file:///alidata/server/svn/weiqiye/ /alidata/www/weijdan

svn提交文件後自動同步更新到網站目錄

 


#!/bin/bash
REPOS="$1"
REV="$2"

export LANG=zh_CN.UTF-8
svn update /alidata/www/weijdan_test
echo `date`,`whoami`,$REPOS,$REV >> /alidata/server/svn/weiqiye/svn.log

 

chmod +x /alidata/server/svn/weiqiye/hooks/post-commit

 

 

svn開機啓動

1.建立執行腳本svn.sh(/root路徑下),其內容很簡單,以下:

#!/bin/bash 
svnserve -d -r /var/www/svn/test

     2.添加可執行權限

命令行運行

#chmod ug+x /root/svn.sh

     3.添加自動運行

     打開(vi或gedit) /etc/rc.d/rc.local ,在最後添加一行內容以下:

/root/svn.sh

     保存退出。

     4.檢查

     重啓服務器,使用 ps -ef 看看svn進程是否啓動了。

相關文章
相關標籤/搜索