SVN 集中式版本控制軟體

来源:http://www.cnblogs.com/wangxiaoqiangs/archive/2016/03/30/5336468.html
-Advertisement-
Play Games

簡介: 目前流行的版本控制軟體中,SVN ( 集中式版本控制 ) 算是使用範圍更廣、且使用時間更早的一款了,現在 git ( 分散式版本控制 ) 更火爆一點。 以前寫的 SVN 文檔丟失了,簡單整理一遍。 一、SVN 的安裝 ( CentOS ) 二、SVN 基本步驟 1、創建工作目錄、版本庫 2、 ...



簡介:

目前流行的版本控制軟體中,SVN ( 集中式版本控制 ) 算是使用範圍更廣、且使用時間更早的一款了,現在 git ( 分散式版本控制 ) 更火爆一點。

以前寫的 SVN 文檔丟失了,簡單整理一遍。

一、SVN 的安裝 ( CentOS )

shell > yum -y install subversion

shell > svn --version --quiet # 版本號
1.6.11

二、SVN 基本步驟

1、創建工作目錄、版本庫

shell > mkdir /svn # 創建一個工作目錄 ( 可以略 )
shell > svnadmin create /svn/myrepos # 新建一個版本庫,名為 myrepos ( 可以使用 svnadmin help [ 可以接子命令 ] 命令參數 )

shell > ls /svn/myrepos/ # 版本庫下的目錄、文件
conf db format hooks locks README.txt

shell > tree /svn/myrepos/conf/ # 版本庫配置文件目錄
/svn/myrepos/conf/
├── authz # 用戶授權
├── passwd # 用戶認證
└── svnserve.conf # svnserve 服務配置文件

2、修改 SVN 版本庫配置文件 ( 需要重啟 svnserve )

shell > grep -vP '^#|^$' /svn/myrepos/conf/svnserve.conf # 文件行首不能有空格
[general]

anon-access = none # 匿名用戶訪問許可權
auth-access = write # 認證用戶訪問許可權
password-db = passwd # 認證用戶密碼文件
authz-db = authz # 目錄授權文件位置
realm = My First Repository # 提示信息

[sasl]

3、添加認證用戶、密碼 ( username = password )

shell > grep -vP '^#|^$' /svn/myrepos/conf/passwd
[users]

wang = wang_pwd
guaishou = guaishou_pwd

4、添加目錄授權

shell > grep -vP '^#|^$' /svn/myrepos/conf/authz
[aliases]

[groups]

[myrepos:/] # 授權目錄

wang = rw # 授權認證用戶 ( 可讀、可寫)

* = # 非授權認證用戶 ( 無許可權 )

5、以守護進程的方式啟動 SVN

shell > svnserve -d -r /svn # -d 以守護進程的方式啟動一個 svnserve ,-r 指定版本庫

# 預設監聽 TCP 3690 埠,以守護進程模式啟動時,可以使用 --list-port 、--list-host 來指定埠、主機

shell > netstat -lnpt | grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1883/svnserve

6、授權測試 ( 一 )

shell > svn checkout --no-auth-cache --username wang --password wang_pwd svn://192.168.12.128/myrepos /home/wang/myrepos # 成功
取出版本 0。

shell > svn co --no-auth-cache --username guaishou --password guaishou_pwd svn://192.168.12.128/myrepos /home/guaishou/myrepos # 失敗 ( co = checkout )
svn: 認證失敗

# 由上可知,authz 中的授權生效 ( 用戶:guaishou 雖然也是認證用戶,但是沒有授權 )

shell > touch /home/wang/myrepos/readme # 建立測試文件
shell > svn add /home/guaishou/myrepos/readme # 添加到工作區
shell > svn --no-auth-cache --username wang --password wang_pwd commit -m 'add readme' /home/guaishou/myrepos/readme # commit 提交,-m 指定 log
增加 home/wang/myrepos/readme
傳輸文件數據.
提交後的版本為 1

# 由上可知,用戶:wang 被授權的讀、寫許可權生效

shell > grep -vP '^#|^$' /svn/myrepos/conf/authz
[aliases]

[groups]

[myrepos:/]

wang = rw

* = r # 非授權認證用戶 ( 只讀許可權 )

shell > svn co --no-auth-cache --username guaishou --password guaishou_pwd svn://192.168.12.128/myrepos /home/guaishou/myrepos # 成功
A /home/guaishou/myrepos/readme
取出版本 1。

shell > echo my name is guaishou > /home/guaishou/myrepos/readme # 修改 readme
shell > svn --no-auth-cache --username guaishou --password guaishou_pwd commit -m 'change readme' /home/guaishou/myrepos/readme # 失敗 ( 用戶:guaishou 為只讀許可權 )
svn: 提交失敗(細節如下): 
svn: 認證失敗

# 由上可知,authz 文件發生改變,不需要重啟 svnserve 即可生效

7、授權測試 ( 二 )

shell > mkdir /home/wang/myrepos/{home_f,home_g,public} # 建立三個測試目錄

shell > svn add /home/wang/myrepos/* # 添加到工作區
A /home/wang/myrepos/home_f
A /home/wang/myrepos/home_g
A /home/wang/myrepos/public
svn: 警告: “/home/wang/myrepos/readme”已納入版本控制

shell > svn --no-auth-cache --username wang --password wang_pwd commit -m 'add test dir' /home/wang/myrepos/ # 提交到版本庫
增加 home/wang/myrepos/home_f
增加 home/wang/myrepos/home_g
增加 home/wang/myrepos/public
提交後的版本為 2。

shell > shell > grep -vP '^#|^$' /svn/myrepos/conf/passwd # 添加認證用戶
[users]

wang = wang_pwd
feng = feng_pwd
guaishou = guaishou_pwd

shell > grep -vP '^#|^$' /svn/myrepos/conf/authz # 新的授權目錄如下
[aliases]

[groups]

[myrepos:/]

wang = rw

* = r

[myrepos:/home_f]

wang = r
feng = rw

* =

[myrepos:/home_g]

wang = r
guaishou = rw

* =

[myrepos:/public]

* = rw

shell > svn co --no-auth-cache --username wang --password wang_pwd svn://192.168.12.128/myrepos /home/wang/myrepos/ # wang 檢出了所有目錄
A /home/wang/myrepos/home_f
A /home/wang/myrepos/readme
A /home/wang/myrepos/home_g
A /home/wang/myrepos/public
取出版本 2。

shell > svn co --no-auth-cache --username feng --password feng_pwd svn://192.168.12.128/myrepos /home/feng/myrepos/ # feng 沒有檢出 home_g
A /home/feng/myrepos/home_f
A /home/feng/myrepos/readme
A /home/feng/myrepos/public
取出版本 2。

shell > svn co --no-auth-cache --username guaishou --password guaishou_pwd svn://192.168.12.128/myrepos /home/guaishou/myrepos/ # guaishou 沒有檢出 home_f
A /home/guaishou/myrepos/readme
A /home/guaishou/myrepos/home_g
A /home/guaishou/myrepos/public
取出版本 2。

shell > touch /home/wang/myrepos/home_f/readme # 建立測試文件

shell > svn add /home/feng/myrepos/home_f/readme # 添加到工作區
A /home/wang/myrepos/home_f/readme

shell > svn --no-auth-cache --username wang --password wang_pwd commit -m 'add readme' /home/feng/myrepos/home_f/readme # 提交失敗
增加 home/wang/myrepos/home_f/readme
傳輸文件數據.svn: 提交失敗(細節如下): 
svn: Access denied

shell > touch /home/wang/myrepos/public/readme

shell > svn add /home/wang/myrepos/public/readme 
A /home/wang/myrepos/public/readme

shell > svn --no-auth-cache --username wang --password wang_pwd commit -m 'add public/readme' /home/wang/myrepos/public/readme # 提交成功
增加 home/wang/myrepos/public/readme
傳輸文件數據.
提交後的版本為 3。

## 好了,授權就到這裡 !

三、停止 svnserve

shell > kill $(ps aux | grep svnserve | grep -v grep | awk '{print $2}')

四、SVN 備份、還原 ( 寫個小腳本,加入到任務計劃中 !)

1、邏輯備份 ( 備份靈活、可以全量、增量備份 --incremental 、節省空間,適合版本庫比較小的規模 )

shell > svnadmin dump /svn/myrepos > /data/backup/svn/myrepos_$(date +%Y%m%d).bak

2、物理備份 ( 占用空間大,備份、恢復速度快 )

shell > svnadmin hotcopy /svn/myrepos/ /data/backup/svn/myrepos_hot_$(date +%Y%m%d).bak

3、邏輯還原

shell > svnadmin load /svn/myrepos/ < /data/backup/svn/myrepos_20160303.bak # 註意:如果版本庫被刪除,還原後還需重新配置認證用戶、授權等!

4、物理還原

shell > svnadmin hotcopy /data/backup/svn/myrepos_hot_20160303.bak/ /svn/myrepos # 路徑剛好反過來就好了!

五、Win 客戶端連接

shell > iptables -A INPUT -p tcp --dport 3690 -j ACCEPT # 開放 TCP 3690 埠
shell > service iptables save

1、下載、安裝小烏龜 ( TortoiseSVN )

2、建立工作目錄,右鍵 Checkout --> URL ( svn://192.168.12.128/myrepos ) --> 輸入用戶名、密碼 ( wang / wang_pwd )

3、測試授權,創建一個文件,添加,提交 看看是否很授權吻合 !

## 先到此為止 !


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

-Advertisement-
Play Games
更多相關文章
  • 方法一: 在my.ini的[mysqld]欄位加入:skip-grant-tables重啟mysql服務,這時的mysql不需要密碼即可登錄資料庫 然後進入mysqlmysql>use mysql; mysql>更新 user set password=password('新密碼') WHERE U ...
  • 簡介: 多餘的話不說,就是源碼安裝 Mysql 5.6 ,機器記憶體 512 MB ,系統 CentOS 6.6 ,安裝方式 minimal ! 1、安裝底層支持包 2、創建用戶、組 3、下載、安裝 Mysql 4、啟動 Mysql 5、安裝完成,測試 ...
  • 安裝教程:http://jingyan.baidu.com/article/3a2f7c2e653d5926afd61197.html 安裝好之後打開SQL server 2014 Management Studio ,可以採用Windows身份驗證也可以採用SQL server身份驗證,但是在我們 ...
  • 問題: 有時候,我們在將excel表格中數據導入資料庫中時,對於表格中的數字會預設為float的數據類型,這個時候導入到資料庫中的這個表的值是正常顯示的; 然而如果你要把導入到資料庫中的表,再插入到另一個表中,並且對應的欄位如果是char、varchar或者是nvarchar等類型時,並且對應的數據 ...
  • 在mysql裡面利用str_to_date()把字元串轉換為日期 此處以表T_TGS_ALARMED的BJSJ為例,查詢當前時間在此範圍之內的數據。 insert into T_TGS_ALARMED (XH, HPZL, HPHM, BJSJ, BJLX, BJYY, KKID, DDBH, FX ...
  • 環境是阿裡雲的CentOS7.0,更新了yum源(更新yum源請參考https://help.aliyun.com/knowledge_detail/5974184.html)之後先是嘗試安裝了MySQL5.7,但是折騰了一下午沒有解決初始密碼的問題。項目進度很緊,索性推倒重來上MySQL5.7。今 ...
  • 1、squid透明代理(一臺網站伺服器和squid代理伺服器) vim /etc/squid/squid.conf http_port 3128 transparent # 透明代理關鍵字 visible_hostname 主機名 #如果主機名是預設的,沒被修改則不需要,反之則需要添加 cache_ ...
  • 簡述: 今天來研究一下 Zabbix 的主動註冊功能。 當你有十臺機器需要監控時,你手動去添加是沒有問題的。但是當你有五十臺、上百台或更多伺服器要監控時,你會怎麼做 ? Active Agent Auto-Registration 主要用於 Agent 主動且自動向 Server 註冊。很好的解決了 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...