linux下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