首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

SVN + Apache + TortoiseSVN 搭建企業級版本控制服務器全過程

     編輯:Java 相關知識

軟件版本選型原則

  • **版本匹配**:Subversion 版本必須與 Apache 模塊 (mod_dav_svn.so) 兼容,下載頁面通常標註對應關係。
  • **安裝順序**:先裝 Apache,再裝 Subversion,最後裝 TortoiseSVN (客戶端)。
  • **重啟機器**:TortoiseSVN 安裝後**必須重啟**,否則殼擴展不生效。

Apache 核心配置 (httpd.conf)

1. 載入必要模塊

# 1. 解開 Apache 自帶模塊註釋 (約 83-84 行)
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

# 2. 載入 Subversion 模塊 (追加到 LoadModule 區塊末尾,約 127 行)
LoadModule dav_svn_module "D:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "D:/Program Files/Subversion/bin/mod_authz_svn.so"

關鍵點:直接指定 Subversion `bin` 目錄下的 `.so` 文件絕對路徑,避免複製到 Apache `modules` 目錄的兼容性問題 (作者實測複製法失效)。

2. 版本庫與權限配置

<Location /svn>
  DAV svn
  SVNParentPath "d:/svn"          <!-- 版本庫父目錄,每個子目錄為一個倉庫 -->
  AuthType Basic
  AuthName "Subversion repositories"
  AuthUserFile passwd              <!-- 相對路徑,指向 Apache 根目錄下 passwd 文件 -->
  Require valid-user
</Location>
  • `SVNParentPath`:多倉庫管理模式,`d:/svn/proj1`、`d:/svn/proj2` 獨立倉庫。
  • `AuthUserFile`:用戶密碼文件,放在 Apache 安裝根目錄 (與 `httpd.conf` 同級)。

3. 創建用戶密碼文件

# 進入 Apache 安裝目錄 (非 bin 目錄)
bin\htpasswd -c passwd testuser   <!-- -c 創建文件並添加首用戶 -->
# 後續添加用戶
bin\htpasswd passwd user2

**注意**:在 Apache 根目錄執行 `bin\htpasswd`,確保 `passwd` 生成在正確位置。

4. 創建倉庫並驗證

  1. 資源管理器右鍵 `d:/svn` → `TortoiseSVN` → `Create repository here` 創建 `test` 倉庫。
  2. 瀏覽器訪問 `https://localhost/svn/test`,輸入用戶名密碼,看到倉庫根目錄列表即成功。

5. 端口衝突解決 (可選)

# 修改 httpd.conf 中 Listen 指令
Listen 8080   <!-- 避開 IIS/Tomcat 佔用的 80 端口 -->

修改後**必須重啟 Apache 服務**生效。

權限進階:基於路徑的訪問控制 (authz)

<Location /svn>
  ...
  AuthzSVNAccessFile authz   <!-- 新增授權文件 -->
</Location>

`authz` 文件示例:

[groups]
admins = admin1, admin2
devs = dev1, dev2

[/]
@admins = rw
* = r

[/proj1/trunk]
@devs = rw

[/proj2/branches/release_1.0]
@devs = r
* =
  • 組定義 `[groups]`,路徑授權 `[/path]`,權限 `r`/`w`/`rw`/`空(無權限)`。
  • 規則順序敏感,**越具體規則越靠前**。

客戶端 TortoiseSVN 核心操作

  • Checkout:右鍵目錄 → `SVN Checkout`,輸入 `https://server/svn/proj/trunk`。
  • Update/Commit:右鍵工作副本 → `SVN Update`/`SVN Commit`,輸入日誌信息。
  • Repo-browser:右鍵 → `TortoiseSVN` → `Repo-browser`,可視化瀏覽/創建/刪除倉庫目錄。
  • Log/Blame:查看歷史、逐行註解作者。
  • Settings → Icon Overlays:調整圖標覆蓋顯示範圍,避免資源管理器卡頓。

維護最佳實踐

  1. 定期熱備份:`svnadmin hotcopy /path/to/repo /backup/path`,不停服務、數據一致。
  2. 日誌監控:Apache `access_log`/`error_log` + SVN `post-commit` 郵件通知。
  3. 權限最小化:遵循最小權限原則,定期審計 `authz`。
  4. 客戶端升級:TortoiseSVN 與服務端 Subversion 版本保持主版本一致 (如 1.14.x)。

結語

Apache + Subversion + TortoiseSVN 是**零成本、成熟穩定、權限細粒度**的版本控制鐵三角。掌握 `httpd.conf` 模塊載入、`SVNParentPath` 多倉庫管理、`htpasswd` 用戶管理、`authz` 路徑授權四大核心配置,即可構建企業級穩健服務。配合熱備份、日誌審計、客戶端規範操作,版本資產安全無憂。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved