版本控制-svn伺服器搭建和常用命令(centos 6.3)

来源:http://www.cnblogs.com/lxmhhy/archive/2016/11/08/6044054.html
-Advertisement-
Play Games

Svn是比較優秀的版本控制工具,雖然功能和性能上無法和Git媲美,但由於其容易搭建和使用的特性,所以在各個小公司還是很受歡迎的。使用Git可參考《版本控制-Git伺服器搭建和常用命令使用》本文介紹svn伺服器搭建和常用命令介紹。 伺服器搭建 本地伺服器 http伺服器 命令 常用命令 不常用命令 一 ...


  Svn是比較優秀的版本控制工具,雖然功能和性能上無法和Git媲美,但由於其容易搭建和使用的特性,所以在各個小公司還是很受歡迎的。使用Git可參考《版本控制-Git伺服器搭建和常用命令使用》本文介紹svn伺服器搭建和常用命令介紹。

伺服器搭建

  本地伺服器

  http伺服器

命令

  常用命令

  不常用命令

 


 


[root@master data1]# cat /etc/issue CentOS release 6.3 (Final) Kernel \r on an \m [root@master data1]# getconf LONG_BIT 64

一、搭建svn本地伺服器

1、安裝svn伺服器

[root@master data1]# yum install subversion -y

2、新建svn伺服器目錄並初始化第一個倉庫project

mkdir /data1/svn
svnadmin create /data1/svn/project

3、新建文件夾並導入伺服器作為Svn倉庫project的第一個文件夾

cd /data1
mkdir -p test/client test/server
svn import test file:///data1/svn/project/ -m 'init svn project'
rm -rf test

這樣就將test目錄下的client和server文件夾導入到倉庫project下,然後刪掉test文件夾

4、新增用戶並設置密碼

  修改文件 /data1/svn/project/conf/passwd 新增用戶 lx、u1、u2、u3,對應的明文密碼在 "=" 右邊

[users]
# harry = harryssecret
# sally = sallyssecret
lx = lx_passwd
u1 = u1_passwd
u2 = u2_passwd
u3 = u3_passwd

5、添加群組並增加訪問控制

  修改文件 /data1/svn/project/conf/authz,增加g_lx和g_user兩個群組,並對project倉庫設置訪問控制許可權,不同目錄允許不同群組的不同操作

[groups]
g_lx = lx
g_user = u1, u2, u3

[project:/]
@g_lx = rw
* =

[project:/server]
@g_lx = rw
@g_user = r
* =

[project:/client]
@g_lx = rw
@g_user = rw
* =

r 表示對該目錄有讀許可權,w 表示對該目錄有寫許可權,rw 表示對該目錄有讀寫許可權。最後一行的* =表示,除了上面設置了許可權的用戶組之外,其他任何人都被禁止訪問本目錄,這點比較重要。

6、修改配置文件

  修改文件 /data1/svn/project/conf/svnserve.conf 讀取正確的配置

[general]
anon-access = None
auth-access = write
password-db = /data1/svn/project/conf/passwd
authz-db = /data1/svn/project/conf/authz

anon-access   控制沒註冊用戶訪問版本庫的許可權。取值範圍為write、read和none,預設是read
auth-access   控制已註冊用戶訪問版本庫的許可權。取值範圍為write、read和none,預設是write              
password-db  指定用戶名口令文件名。沒有絕對路徑則文件位置為conf目錄的相對路徑。
authz-db       指定許可權配置文件名,通過該文件可以實現以路徑為基礎的訪問控制。  沒有絕對路徑則文件位置為conf目錄的相對路徑。     
realm           指定版本庫的認證域,即在登錄時提示的認證功能變數名稱稱。

7、啟動Svn本地伺服器

svnserve -d -r /data1/svn/
ps -ef | grep svn
netstat -anp | grep svn

8、在其他機器上check out

svn co svn://master/project

Username: lx
Password for 'lx':

master為功能變數名稱,建議直接使用ip地址即可。

遇到Store password unencrypted (yes/no)? 輸入yes

遇到Password for 'root': 直接按回車然後輸入用戶名 lx和密碼

測試提交命令

cd project/
cd client/
touch client.sh
svn add client.sh
svn ci -m 'add client.sh'

二、升級成http認證伺服器

一般公司的Svn伺服器會搭建成https認證的伺服器,密碼則是使用ldap認證,所以搭建起來比較麻煩,除了httpd之外還要open-ssl等插件支持,但足夠安全和實用。本文只介紹普通的http認證,並且採用本地密碼驗證。

1、升級http需要安裝相關軟體

yum install subversion mysql-server httpd mod_dav_svn sendmail wget gcc-c++ make unzip -y

2、http之支持加密的密碼,所以需要將svn的明文密碼轉換

touch webpasswd
htpasswd -b webpasswd  lx lx_passwd

一步一步轉換或者在 /data1/svn/project/conf 目錄下新建下麵perl腳本 pd.pl

#!/usr/bin/perl

use warnings;
use strict;

open (FILE, "passwd") or die ("Cannot open the passwd file!\n");

open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!\n");
close (OUT_FILE);

foreach (<FILE>) {
    if($_ =~ m/^[^#].*=/) {
        $_ =~ s/=//;
        `htpasswd -b webpasswd $_`;
    }
}
運行 perl pd.pl

輸出:
Adding password for user lx
Adding password for user u1
Adding password for user u2
Adding password for user u3

3、修改 httpd.conf 文件

 vim /etc/httpd/conf/httpd.conf 

在文件最後添加

<Location /project>
     DAV svn
    SVNPath /data1/svn/project/
    AuthType Basic
    AuthName "svn for project"
    AuthUserFile /data1/svn/project/conf/webpasswd
    AuthzSVNAccessFile /data1/svn/project/conf/authz
    Satisfy all
    Require valid-user
</Location>

4、修改文件夾屬主為apache

chown -R apache.apache /data1/svn/project/
ps aux | grep httpd   可以看出用戶apache

apache   26834  0.0  0.0 281608  3788 ?        S    18:29   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26835  0.0  0.0 281840  5072 ?        S    18:29   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26836  0.0  0.0 298372  6644 ?        S    18:29   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26837  0.0  0.0 298372  6644 ?        S    18:29   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26838  0.0  0.0 281680  4816 ?        S    18:29   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26839  0.0  0.0 298360  6512 ?        S    18:29   0:00 /usr/sbin/httpd -DFOREGROUND
apache   26854  0.0  0.0 281680  4812 ?        S    18:30   0:00 /usr/sbin/httpd -DFOREGROUND

5、重啟httpd

service restart httpd

6、打開web頁面 http://master/project/ 

建議更換成ip地址。輸入賬戶密碼如下:

 

三、svn常用命令

1、checkout到本地目錄

svn -–username=*** --password=*** checkout path

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

svn add file

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

svn commit -m "LogMessage" [-N] [--no-unlock] PATH  
# 如果選擇了保持鎖,就使用–no-unlock開關 # -m 後面是提交的日誌信息,一般情況是必填的。

簡寫:svn ci

4、加鎖/解鎖

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

5、本地更新到某個版本

svn update -r * path   # *為版本號
svn update   # 整個文件夾
svn update file   # 單獨一個文件

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

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

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

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

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

註:svn status、svn diff和svn revert這三條命令在沒有網路的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。

簡寫:svn st

7、刪除文件

svn delete path -m "delete test fle"

例如:svn delete svn://master/project/test.php -m “delete test file”

或者分步驟(推薦使用這種)
svn delete test.php
svn ci -m ‘delete test file‘

簡寫:svn  [del, remove, rm]

8、查看日誌

svn log file

顯示這個文件的所有修改記錄,及其版本號的變化

9、查看文件詳細信息

svn info file

10、比較差異

svn diff path  # 將修改的文件與基礎版本比較
例如:svn diff test.php

svn diff -r m:n path  # 對版本m和版本n比較差異
例如:svn diff -r 200:201 test.php

簡寫:svn di

11、將兩個版本之間的差異合併到當前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php   # 將版本200與205之間的差異合併到當前文件,但是一般都會產生衝突,需要手動修改文件

12、Svn 幫助

svn help

svn help ci

 

 


以上是常用命令,下麵寫幾個不經常用的

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

svn list path   # 顯示path目錄下的所有屬於版本庫的文件和目錄

簡寫:svn ls

14、創建納入版本控制下的新目錄

svn  mkdir *    #  創建納入版本控制下的新目錄。

用法: (1)、mkdir PATH…
(2)、mkdir URL…

創建版本控制的目錄。
(
1)、每一個以工作副本 PATH 指定的目錄,都會創建在本地端,並且加入新增調度,以待下一次的提交。 (2)、每個以URL指定的目錄,都會透過立即提交於倉庫中創建.在這兩個情況下,所有的中間目錄都必須事先存在。

15、恢複本地修改

svn revert: 恢複原始未改變的工作副本文件 (恢復大部份的本地修改)。

用法: revert PATH…

註意: 本子命令不會存取網路,並且會解除衝突的狀況。但是它不會恢復被刪除的目錄

16、代碼庫URL變更

svn switch (sw):   更新工作副本至不同的URL。

用法: (1)、switch URL [PATH]
(2)、switch –relocate FROM TO [PATH...]

(1)、更新你的工作副本,映射到一個新的URL,其行為跟“svn update”很像,也會將伺服器上文件與本地文件合併。這是將工作副本對應到同一倉庫中某個分支或者標記的方法。

(2)、改寫工作副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變動(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用這個命令更新工作副本與倉庫的對應關係。

 

17、解決衝突

svn resolved:  移除工作副本的目錄或文件的“衝突”狀態。
用法: resolved PATH…

註意: 本子命令不會依語法來解決衝突或是移除衝突標記;它只是移除衝突的相關文件,然後讓 PATH 可以再次提交。

18、輸出指定文件或URL的內容

svn cat 目標[@版本]…如果指定了版本,將從指定的版本開始查找。
svn cat -r PREV filename > filename    (PREV 是上一版本,也可以寫具體版本號,這樣輸出結果是可以提交的)

 

本文部分內容是參考網上資源,由博主@Lx整理。

原創文章,轉載請備註原文地址 http://www.cnblogs.com/lxmhhy/p/6044054.html

知識交流討論請加qq群:180214441。謝謝合作。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.事務的四個特點,原子性,一致性,隔離性,持久性。2.併發的危險丟失更新:兩個進程讀取同一個數據然後試圖更新會丟失一個進程的更新;臟讀:當一個進程讀取了另一個沒提交進程修改的數據時,如果另一個進程會滾第一個進程就是臟讀;不可重覆讀:在一個事務內不能保證兩次讀取一個數據的結果是一樣的就是不可重覆讀; ...
  • 查詢當前用戶:show user 查看當前用戶下的表:select *from tab; 設置行寬: show linesize;(查看行寬) set linesize 120;(設置行寬) 設置列寬:col 列名 for a8; (設置字元串) col 列名 for 9999;(設置數字的) 查看 ...
  • 本位出處:http://www.cnblogs.com/wy123/p/6041122.html 經常聽Oracle的同學說起來物化視圖,物化視圖的作用之一就是可以實現查詢重寫,聽起來有一種高大上的感覺, SQL Server也有類似於Oracle物化視圖的功能,只不過叫做索引視圖。 說實話,還是物 ...
  • 數據約束 ——對用戶操作表的數據進行約束 1、預設值 ——當用戶對使用預設值的欄位不插入值的時候,就使用預設值 1)對預設值欄位插入null是可以的。 2)對預設值欄位可以插入非null 【例如:address varchar(20) default '廣州天河' ——預設值】 2、非空 ——限制字 ...
  • 非同步編程 同步編程,請求響應模型,同步化、順序化、事務化。 非同步編程,事件驅動模型,以 Fire and Forget 方式實現。 非同步編程模式 -§- 非同步編程模型 (APM) 模式: IAsyncResult 模式,非同步操作需要 Begin 和 End 方法; -§- 基於事件的非同步模式(EAP ...
  • 內核是否能被搶占在內核編譯的時候是可選的 看了《深入理解linux內核》一書,作者認為很難對內核搶占下一個定義,我也不想強行下一個定義,始終是新手嘛,那就說一下內核搶占的現象,通過現象來理解內核搶占機制 內核搶占的一個現象:正在內核態運行的進程。可能在運行期間被另外一個進程替代。 上述現象是允許內核 ...
  • Linux /dev目錄詳解(轉http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目錄是很重要的,各種設備都在下麵。下麵簡單總結一下: dev是設備(device)的英文縮寫。/dev這個目錄對所有的用戶都十分重要。因為 ...
  • InfluxDB與傳統資料庫在概念上有許多的不同,本文就給大家介紹下InfluxDB中的一些基本概念,更多InfluxDB詳細教程請看:InfluxDB系列學習教程目錄 InfluxDB技術交流群:580487672(點擊加入) 一、與傳統資料庫中的名詞做比較 二、InfluxDB中獨有的概念 Po ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...