首先,確保已安裝的 packages 都是最新版本
sudo apt-get update
然後,安裝 3 個 packages: subversion, subversion-tools 和 libapache2
sudo apt-get install subversion subversion-tools libapache2-svn
這些就是要讓電腦當 subversion 伺服器所需要的 packages。
建立 subversion 檔案結構
建立目錄
sudo mkdir /home/svn
建立一個測試用的檔案庫 (repository)
sudo svnadmin create /home/svn/test
加點材料到檔案庫
mkdir ~/test cd ~/test mkdir trunk tags branches
然後,匯入這些新建的目錄到測試用的檔案庫
sudo svn import ~/test file:///home/svn/test -m 'Initial project directories'
都沒問題的話,要開始設定 apache 的部分了
設定 apache
更改 /home/svn 目錄的擁有者
sudo chown -R www-data:www-data /home/svn
啟動 apache 的 dav_svn 模組
sudo a2enmod dav_svn
修改 dav_svn 的設定檔
sudo nano /etc/apache2/mods-avaible/dav_svn.conf
到檔案的最底下,填上這幾行
<Location "/svn"> DAV svn SVNParentPath /home/svn </Location>
重新啟動 apache
sudo service apache2 restart
開啟瀏覽器連到這台電腦看看能否進入那個測試用的檔案庫(這時應該可以看到三個目錄,雖然它們是空的)
http://127.0.0.1/svn/test
保護 svn 檔案庫 (使用 MySQL)
進入 mysql 輸入模式
mysql -u root -p
建立資料庫 (及 3 個 tables)
mysql> create database my_subversion; mysql> use my_subversion;
建立 user table, 有 3 個欄位 (username, password, 和 email)
mysql> CREATE TABLE IF NOT EXISTS user (
username VARCHAR(60) NOT NULL PRIMARY KEY,
password VARCHAR(64) NOT NULL,
email VARCHAR(100)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
建立 svngroup table, 有 2 個欄位 (groupname 和 note)
mysql> CREATE TABLE IF NOT EXISTS svngroup (
groupname VARCHAR(20) NOT NULL PRIMARY KEY,
note VARCHAR(256)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
建立 user_svngroup table, 有 2 個欄位 (username 和 groupname)
mysql> CREATE TABLE IF NOT EXISTS user_svngroup (
username VARCHAR(60) NOT NULL,
groupname VARCHAR(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
新增一個資料
新增一個 svn user
mysql> INSERT INTO user (username,password,email) VALUES ('username',md5('password'),'email@mail.com');
新增一個 svn group
mysql> INSERT INTO svngroup (groupname,note) VALUES ('groupname','this is a brief note of the group');
把 user 放進 group 裡
mysql> INSERT INTO user_svngroup (username,groupname) VALUES ('username','groupname');
ref:
• Install & Configure SVN Server on Ubuntu 20.04 with Apache2
• Settings up SVN server with MySQL authentication