1. 程式人生 > >linux下svn使用小結 建立 新增倉庫 版本管理

linux下svn使用小結 建立 新增倉庫 版本管理

(1): 建立svn倉庫路徑
mkdir  -p  /opt/svn/project1
svnadmin  create  /data/svn/project1
注意:為了規範:一般在專案目錄下再建立:
//先建立好目錄 dev 和pub可以放連個目錄下,匯入同一個源也可以 源就是原始程式碼 (svn import /home/game/park_dev/)
mkdir  -p   /opt/svn/projec1/xxx_dev  開發
mkdir  -p   /opt/svn/projec1/xxx_pub 釋出

接下來 我用xxx_server 代表專案project1的名字

(2):匯入專案原始碼

# svn import [源路徑][目標版本庫路徑] -m [日誌資訊]
//例如:
    ps:原始碼要是別的專案拷貝過來的,請刪除原來的.svn檔案,,不然你會悲劇的 

    svn import /home/game/xxx_dev/    file:///data/svn/xxx_server/xxx_dev  -m "Initial import"

(3):修改配置檔案:這就是給指定的倉庫新增使用者許可權了,多人開發的時候很需要的,防止策劃亂傳檔案,哈哈哈,都是策劃的錯


    a   /opt/svn/project1/conf/svnserve.conf
          [general]
          anon-access = none
          auth-access=write
          password-db=passwd
          auth-db=authz


    b  /opt/svn/project1/conf/passwd

            xxx=****             //  使用者名稱=密碼

    c  anon-access = read
auth-access = write

authz-db = authzpassword-db = passwd

realm = xxx_server

(4):啟動svn服務

    svnserve   -d   -r    /opt/svn/     
    注意:如果在一臺伺服器上同時啟動多個版本管理,那麼啟動路徑必須是所有專案倉庫的根路徑:比如
   /opt/svn/project1    /opt/svn/project2   ---------->   /opt/svn/ 








//安裝指令碼----帶建立倉庫的,不懂的可以留言給我我幫你解決


#!/bin/bash

if
        rpm -qa | grep subversion


then
        echo "1 svn已經安裝了"
        exit
else
        echo "1 未檢測到svn安裝, 下載subversion"
        yum install subversion -y
fi


if [[ -d "/data/svn" ]]; then
        echo "2.1 /data/svn/已經建立"
else
        mkdir /data/svn/
        echo "2.1 /data/svn/建立成功"
fi


echo "2.2:配置:svnserver新增資料倉庫地址"
svnserve -d -r /data/svn/


echo "3.建立版本庫"
svnadmin create /data/svn/tech_manage/


echo "4.加入到開機啟動項"  這樣就方便使用了,開機的時候就直接啟動了
echo svnserve -d -r /data/svn/ >> /etc/rc.local

//基礎的操作一大堆,我就不一一舉例了用別人寫好的吧

svn 命令共同的選項

--targets list 讀取list並將其解釋為一個將要操作的引數列表

--non-recurisive, –N 只操作單個目錄,不處理子目錄

--verbose, –v 列印額外的資訊

--quiet, –q 列印的資訊儘可能少

--username,  name 指定在連線授權時使用的使用者名稱

--password, pawd 指定要使用的密碼

--no-auth-cache 不要快取身份令牌

--non-interactive 不要提示輸入額外的資訊

--config-dir  dir  從dir讀取使用者配置

--editor-cm cmd 使用cmd作為日誌訊息的編輯器

svn add

把檔案及目錄的名稱新增給版本控制系統。他們會在下次提交時被新增到專案倉庫

svn add path

--auto-props 在新增他們的時候自動設定檔案的屬性

--no-auto-props 禁用自動屬性設定

svn blame

顯示檔案每行的版本及作者資訊

--revision, –r rev 如果指定的rev是單個版本,顯示該版本作者資訊。如果是範圍rev1:rev2, 顯示rev2版本作者的資訊,但只檢查版本到rev1.

svn cat

輸出指定檔案或者URL的內容

svn cat target…

--revision, –r rev

svn checkout

從專案倉庫牽出一個工作拷貝

svn checkout url…path

如果沒有指定path,簽出的本地目錄名使用URL的base name.

svn cleanup

清理工作拷貝,移除鎖,完成未完成的操作,等等。

svn cleanup path…

svn commit path

把改動從你的工作拷貝傳送到專案倉庫

--message, –m msg 使用msg作為提交日誌訊息。

--file, –F file 使用file的內容作為提交日誌訊息。

--no-unlock 不要在提交的時候釋放鎖。

svn copy

在工作拷貝或者專案倉庫中製造包括歷史在內的複本

svn copy src dest

src和dest可以是工作拷貝(WC)的路徑或者URL.

src dest 效果……

WC WC 拷貝並新增

WC URL 立即提交WC的拷貝到URL

URL WC 簽出URL到WC, 新增

URL URL 完全伺服器端拷貝;用於製作分支和打標籤

--revision, –r rev要拷貝的src的版本。只在src是專案倉庫的URL時才有意義。

svn delete target

從專案倉庫刪除檔案或者目錄。如果target是工作拷貝中的檔案或者目錄,它被從工作拷貝中移除並且預計在下次提交時刪除掉。如果target是專案倉庫URL,通過一次立即的提交從專案倉庫中刪除。

--message, –m msg

--file, –F file

svn diff

顯示兩個路徑之間的差異

svn diff –r rev1:rev2 target…

svn diff oldurl newurl

svn export

建立一個無版本記錄的拷貝.

svn export –r rev URL path

從專案倉庫的指定URL匯出一個乾淨的目錄樹到path中,如果指定了rev引數,匯出rev版本的,否則到處最新版本。

svn import

提交一個無版本的檔案或者樹到專案倉庫

svn import path URL

svn info

顯示檔案或者目錄的資訊。

svn list

列出專案倉庫中的目錄條數。

svn lock

鎖住檔案讓其它使用者不能提交改動。

svn lock target

--message, –m msg 使用msg作為鎖資訊訊息

--force 強制加鎖成功,通過從其他使用者或者工作拷貝把鎖給偷過來。

svn log

顯示一些版本或者檔案的日誌訊息.

--stop-on-copy 在遍歷歷史的時候不要穿越拷貝(對於查詢分支的起點很有用)

svn merge

把兩個來源的差異應用給工作拷貝路徑。

svn merge –r rev1:rev2  source wcpath

svn mkdir

建立版本控制下的新目錄

svn mkdir target

svn move src dest

移動或者重新命名工作拷貝或者專案倉庫中檔案或者目錄。

--revision, –r rev使用版本rev作為源來執行這次移動。

svn propdel

刪除檔案或者目錄的屬性

svn propdel propname path…

svn propedit

編輯檔案或者目錄的屬性

svn propedit propname path…

svn propget

列印檔案或者目錄的屬性值

svn propget propname path…

--strict 禁用額外的換行和其它的美化措施(在把二進位制屬性重定向到檔案時會有用處)

svn proplist

列出檔案或者目錄的所有屬性

--verbose

--recursive

--revision, –r rev 列出path在版本rev定義的屬性

svn propset(pset, ps)

svn propset propname propval path…

--file, –F file 讀取file的內容,使用它作為屬性值.

--recursive

--encoding  enc 把值作為用enc編碼的字符集

svn resolved

移除工作拷貝檔案或者目錄的衝突狀態

--recursive

svn revert

恢復工作拷貝的檔案(撤銷最新的本地修改)

svn revert path 這個命令不需要網路連線

--recursive

svn status

列印工作拷貝中檔案或者目錄的狀態

svn status path…

--show-updates, –u 聯絡伺服器顯示更新資訊

--no-ignore 忽視預設設定和svn:ignore屬性設定的忽略項

--non-recursive, –N

--verbose, –v

svn switch

把工作拷貝轉向到其他的URL

svn switch URL path

更新工作拷貝讓其使用專案倉庫的新URL.這個行為類似svn update 而且是一種把工作拷貝轉向到同一專案倉庫中的分支或者標籤的辦法。

--revision, –r rev 轉向到版本rev

--non-recursive, –N

--diff3-cm 使用cmd作為合併命令

svn unlock

解開工作拷貝檔案或者專案倉庫URL的鎖。

svn unlock target…

--force 砸壞現有對target的鎖,甚至它不是被當前工作拷貝所擁有的。

svn update

把改動從專案倉庫帶到工作拷貝來。

svn update path…

--revision, –r rev 更新到版本rev

--non-recrusive, –N

--diff3-cmd