當前位置:
首頁 >
svn(subversion)代码版本管理在linux下的一些常见使用命令
發布時間:2025/4/16
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
svn(subversion)代码版本管理在linux下的一些常见使用命令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下的操作都是默認你的服務器安裝有svn的大前提下進行的。
一、創建版本庫
我的版本庫存放路徑為: /var/svn ; 下面我們來創建一個名為 svntet 的版本庫? ?
注釋: svnadmin create svntet ?就是svn的創建版本庫命令;執行之后我們會發現?
/var/svn 下會出現 svntet 的文件夾
二、修改新建的版本庫的配置文件 進入 /var/svn/svntet ?;我們會發現有3個配置文件
我們先修改下 passwd ,添加 svntet 版本庫的用戶名和密碼 修改 authz ,添加??svntet 版本庫的用戶的權限 注釋:現在給 ?svntet 版本庫的用戶名為 admin的用戶添加他對該版本的讀寫權限
修改 svnserve.conf?
三、導入代碼文件到 svntet 版本庫 我的代碼文件存放在 /var/www/html/qinkaizhu/svntest ;? svn代碼版本庫的路徑 /var/svn/svntet (也就是剛剛我們創建的版本庫的位置); 執行導入命令: svn import /var/www/html/qinkaizhu/svntest file:///var/svn/svntet -m "i" ? 四、從版本庫導出代碼 導出代碼到當前目錄下;?執行導出命令: svn checkout svn://192.168.1.5/svntet? 這時候,已經從 svntet 版本庫取了最新版本的代碼
? 五、從工作的代碼拷貝提交到版本庫 如何我們沒有修改如何代碼,那么提交是沒有意義的。下面我們先來修改下1.php; cd svntet? vim 1.php ? ? ?
保存修改后,在 svntet 目錄下執行提交命令:svn commit -m ?"cxcxcxc" 注釋:-m “msg” ?其中msg:為本次提交版本的一些描述(例如修改了什么之類的)
六、從版本庫更新工作的代碼拷貝假如有n個人在進行同一項工作,大家都是公用同一版本庫,那么可能你現在的版本庫就不是最新的了。所以,我們需要從版本庫里更新下工作的代碼拷貝。執行代碼:cd svntet?svn update?七、在工作的代碼拷貝新建文件或者文件夾,然后提交到版本庫1、先新建 3.php ?4.php?2、執行加入版本控制命令:svn add 3.php 4.php
小插曲 【start】在這里注意了,經常我們在開發的時候,可能會加人很多的新文件,難道我們要一個一個地加嗎?當然,你也可以實現的。。但是,如果我們加的文件特別多,而且目錄結構也特別復雜。怎么辦?svn status — 打印工作拷貝文件和目錄的狀態。我們可以借助svn status 或者 svn st快速找到新添加并沒有納入版本控制的文件。?第一列代表狀態改變的文件的狀態:'?' ??項目不在版本控制之下;'M' ?項目已經修改了;'!' ? ?項目已經丟失;'~' ??項目作為一種對象(文件、目錄或鏈接)納入版本控制,但是已經被另一種對象替代。更多的狀態信息,可以在這里看見:傳送門我們利用grep篩選出不在版本控制之下的文件或者文件夾svn st | grep ?svn st | grep ? | awk '{print $2}'我們可以利用awk逐一獲取到他們的信息,現在我們就只需要他們的路徑就好了,然后有svn將他們加入版本控制前面是和大家一起慢慢來,順便回顧下shell的一些命令使用。其實就工作備份的最外層執行下面的代碼就可以將沒有加入版本控制的文件或者文件名加入版本控制svn status | grep ? | awk '{print $2}' | xargs svn add然后,下次執行提交的時候,就會將新加文件提交加入到版本庫了。。。小插曲 【end】
3、再執行提交到版本庫的命令:svn commit -m "addnewfile"注釋:執行加入版本控制命令:svn add 3.php 4.php 后,版本庫的并沒有更新版本。直到下一次執行?commit 才會提交更新
?八、刪除工作拷貝和版本庫的文件情況一:先在工作的拷貝刪除,在下次執行commit命令時候,自動從版本庫里刪除1、先執行刪除命令:svn del 1.php 2.php2、再執行提交命令:svn commit -m "delfile"?情況二:直接從版本庫里刪除,然后在工作拷貝下更新(update)執行刪除命令:svn del -m "del 4.php" file:///var/svn/svntet/4.php
以上是我經常用到的一下svn在linux的命令操作。大家在操作的時候應該注意命令操作時候所在的當前目錄。 例如 svn update ;svn commite,不然會導致一些錯誤。
在工作拷貝中在每個目錄下都會存在.svn文件;在項目完成要上線的時候,我們怎么樣快速都將所有的.svn文件都刪除呢。。我們可以寫個shell腳本來進行刪除。 find -type d -name ".svn" | xargs rm -rf
其他常用的命令: 更新到某個版本?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?
加鎖/解鎖?svn lock -m “LockMessage“ [--force] PATH?例如:svn lock -m “lock test file“ test.php?svn unlock PATH?
查看日志?svn log path?例如:svn log 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 list path?顯示path目錄下的所有屬于版本庫的文件和目錄?簡寫:svn ls?
創建納入版本控制下的新目錄?svn mkdir: 創建納入版本控制下的新目錄。?用法:?1、mkdir PATH…?2、mkdir URL…?創建版本控制的目錄。? 1、每一個以工作副本 PATH 指定的目錄,都會創建在本地端,并且加入新增?調度,以待下一次的提交。?2、每個以URL指定的目錄,都會透過立即提交于倉庫中創建。?在這兩個情況下,所有的中間目錄都必須事先存在。
二、修改新建的版本庫的配置文件 進入 /var/svn/svntet ?;我們會發現有3個配置文件
我們先修改下 passwd ,添加 svntet 版本庫的用戶名和密碼 修改 authz ,添加??svntet 版本庫的用戶的權限 注釋:現在給 ?svntet 版本庫的用戶名為 admin的用戶添加他對該版本的讀寫權限
修改 svnserve.conf?
三、導入代碼文件到 svntet 版本庫 我的代碼文件存放在 /var/www/html/qinkaizhu/svntest ;? svn代碼版本庫的路徑 /var/svn/svntet (也就是剛剛我們創建的版本庫的位置); 執行導入命令: svn import /var/www/html/qinkaizhu/svntest file:///var/svn/svntet -m "i" ? 四、從版本庫導出代碼 導出代碼到當前目錄下;?執行導出命令: svn checkout svn://192.168.1.5/svntet? 這時候,已經從 svntet 版本庫取了最新版本的代碼
? 五、從工作的代碼拷貝提交到版本庫 如何我們沒有修改如何代碼,那么提交是沒有意義的。下面我們先來修改下1.php; cd svntet? vim 1.php ? ? ?
保存修改后,在 svntet 目錄下執行提交命令:svn commit -m ?"cxcxcxc" 注釋:-m “msg” ?其中msg:為本次提交版本的一些描述(例如修改了什么之類的)
六、從版本庫更新工作的代碼拷貝假如有n個人在進行同一項工作,大家都是公用同一版本庫,那么可能你現在的版本庫就不是最新的了。所以,我們需要從版本庫里更新下工作的代碼拷貝。執行代碼:cd svntet?svn update?七、在工作的代碼拷貝新建文件或者文件夾,然后提交到版本庫1、先新建 3.php ?4.php?2、執行加入版本控制命令:svn add 3.php 4.php
小插曲 【start】在這里注意了,經常我們在開發的時候,可能會加人很多的新文件,難道我們要一個一個地加嗎?當然,你也可以實現的。。但是,如果我們加的文件特別多,而且目錄結構也特別復雜。怎么辦?svn status — 打印工作拷貝文件和目錄的狀態。我們可以借助svn status 或者 svn st快速找到新添加并沒有納入版本控制的文件。?第一列代表狀態改變的文件的狀態:'?' ??項目不在版本控制之下;'M' ?項目已經修改了;'!' ? ?項目已經丟失;'~' ??項目作為一種對象(文件、目錄或鏈接)納入版本控制,但是已經被另一種對象替代。更多的狀態信息,可以在這里看見:傳送門我們利用grep篩選出不在版本控制之下的文件或者文件夾svn st | grep ?svn st | grep ? | awk '{print $2}'我們可以利用awk逐一獲取到他們的信息,現在我們就只需要他們的路徑就好了,然后有svn將他們加入版本控制前面是和大家一起慢慢來,順便回顧下shell的一些命令使用。其實就工作備份的最外層執行下面的代碼就可以將沒有加入版本控制的文件或者文件名加入版本控制svn status | grep ? | awk '{print $2}' | xargs svn add然后,下次執行提交的時候,就會將新加文件提交加入到版本庫了。。。小插曲 【end】
3、再執行提交到版本庫的命令:svn commit -m "addnewfile"注釋:執行加入版本控制命令:svn add 3.php 4.php 后,版本庫的并沒有更新版本。直到下一次執行?commit 才會提交更新
?八、刪除工作拷貝和版本庫的文件情況一:先在工作的拷貝刪除,在下次執行commit命令時候,自動從版本庫里刪除1、先執行刪除命令:svn del 1.php 2.php2、再執行提交命令:svn commit -m "delfile"?情況二:直接從版本庫里刪除,然后在工作拷貝下更新(update)執行刪除命令:svn del -m "del 4.php" file:///var/svn/svntet/4.php
以上是我經常用到的一下svn在linux的命令操作。大家在操作的時候應該注意命令操作時候所在的當前目錄。 例如 svn update ;svn commite,不然會導致一些錯誤。
在工作拷貝中在每個目錄下都會存在.svn文件;在項目完成要上線的時候,我們怎么樣快速都將所有的.svn文件都刪除呢。。我們可以寫個shell腳本來進行刪除。 find -type d -name ".svn" | xargs rm -rf
其他常用的命令: 更新到某個版本?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?
加鎖/解鎖?svn lock -m “LockMessage“ [--force] PATH?例如:svn lock -m “lock test file“ test.php?svn unlock PATH?
查看日志?svn log path?例如:svn log 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 list path?顯示path目錄下的所有屬于版本庫的文件和目錄?簡寫:svn ls?
創建納入版本控制下的新目錄?svn mkdir: 創建納入版本控制下的新目錄。?用法:?1、mkdir PATH…?2、mkdir URL…?創建版本控制的目錄。? 1、每一個以工作副本 PATH 指定的目錄,都會創建在本地端,并且加入新增?調度,以待下一次的提交。?2、每個以URL指定的目錄,都會透過立即提交于倉庫中創建。?在這兩個情況下,所有的中間目錄都必須事先存在。
總結
以上是生活随笔為你收集整理的svn(subversion)代码版本管理在linux下的一些常见使用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将dtb反编译成dts
- 下一篇: linuxsvn源代码版本库建立