Subversion (SVN) はオープンソースのバージョン管理システムで、以前のファイルバージョンを確認し、その変更を時間の経過とともに追跡できます。 SVNを使用してブランチを作成し、複数のバージョンのファイルまたはデータを処理できます。 このトピックでは、SVNのデプロイと使用方法について説明します。
SVN
SVNが管理するデータはリポジトリに保存されます。 ファイルに加えられたすべての変更の完全な履歴を保持します。 以前のバージョンにロールバックするか、リポジトリからファイルの変更履歴を取得できます。 SVNでは、次の用語または操作が一般的に使用されます。
リポジトリ: ソースコードを格納します。
チェックアウト: リポジトリからソースコードをチェックアウトして、オンプレミスのデバイスに作業コピーを作成します。
Commit: 変更されたコードをリポジトリにコミットします。
更新: リポジトリのソースコードをオンプレミスデバイスの作業コピーに同期します。
準備
Elastic Compute Service (ECS) インスタンスを作成します。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
ECSインスタンスが次の要件を満たしていることを確認します。
インスタンスは、静的パブリックIPアドレス (自動割り当てまたはシステム割り当てパブリックIPアドレスとも呼ばれます) またはelastic IPアドレス (EIP) に関連付けられています。 EIPをインスタンスに関連付ける方法については、「EIPの関連付けまたは関連付けの解除」をご参照ください。
インスタンスは、Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、またはCentOS 7.xオペレーティングシステムを実行します。
インスタンスのインスタンスタイプは、SVNをデプロイするための要件を満たしています。 プロジェクトの規模とチームのサイズに基づいて、インスタンス作成時にインスタンスタイプを選択します。 4つ以上のvCPUと4 GiB以上のメモリを持つインスタンスタイプを使用することを推奨します。
インバウンドルールがインスタンスのセキュリティグループに追加され、ポート22、80、および443のトラフィックが許可されます。 インバウンドセキュリティグループルールを追加する方法の詳細については、「セキュリティグループルールの追加」をご参照ください。
説明svnserveを使用してSVNにアクセスする場合は、インバウンドセキュリティグループルールを追加してポート3690を開きます。
SVNアクセス方法
ビジネス要件に基づいて、HTTP経由またはsvnserveを使用してSVNにアクセスできます。 アクセス方法の違いを次の表に示します。
項目 | HTTPによるSVNアクセス | svnserveによるSVNアクセス |
プロトコル | HTTPを使用します。 | カスタムSVNプロトコル。 |
アクセスモード | Webブラウザまたはクライアント。 | クライアントのみ。 |
ポート | ポート80 | ポート3690。 |
セキュリティ | 暗号化通信のHTTPS。 | デフォルトでは、平文通信。 暗号化設定を完了して通信を暗号化できます。 |
設定 | webサーバー上の設定。 | SVNサーバー上の設定。 |
機能 | アクセス制御やログクエリなどのその他の機能。 | より少なく、より簡単な機能。 |
HTTPアクセスでSVNをデプロイする
ステップ1: SVNのインストール
SVNをインストールするLinuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行してSVNをインストールします。
sudo yum install -y subversion
次のコマンドを実行して、SVNのバージョンを確認します。
svnserve --version
次のコマンド出力は、SVNがインストールされていることを示します。
手順2: Apache HTTPサーバー (httpd) のインストール
次のコマンドを実行してhttpdをインストールします。
sudo yum install httpd -y
次のコマンドを実行して、httpdのバージョンを確認します。
httpd -version
次のコマンド出力は、httpdがインストールされていることを示します。
ステップ3: mod_dav_svnのインストール
mod_dav_svnは、SVNへのwebアクセスを提供するApache HTTP Server (httpd) モジュールです。
次のコマンドを実行してmod_dav_svnをインストールします。
sudo yum install mod_dav_svn -y
ステップ4: SVNの設定
次のコマンドを順番に実行して、SVNリポジトリを作成します。
sudo mkdir /var/svn cd /var/svn sudo svnadmin create /var/svn/svnrepos
次のコマンドを実行して、SVNリポジトリのユーザーグループをapacheに変更します。
sudo chown -R apache:apache /var/svn/svnrepos
次のコマンドを順番に実行して、SVNリポジトリに自動的に生成されたファイルを確認します。
cd svnrepos ls
次の表に、SVNディレクトリとファイルを示します。
ディレクトリまたはファイル
説明
db
バージョン管理データファイルを格納するディレクトリ。
フック
フックスクリプトを格納するディレクトリ。
locks
SVNリポジトリロックファイルを格納し、リポジトリへのアクセスを追跡するために使用できるディレクトリ。
フォーマット
SVNリポジトリのバージョン番号を示す単一の整数値を含むテキストファイル。
conf
リポジトリのユーザー名とアクセス権限を格納するSVNリポジトリ構成ファイル。
SVNリポジトリのユーザー名とパスワードを設定します。
SVNのパスワードは平文で保存されますが、HTTPは平文パスワードをサポートしません。 したがって、passwdという名前の別のファイルを作成する必要があります。 この例では、ユーザー名は
userTest
、パスワードはpassWDTest
です。 次のいずれかのコマンドを実行して、passwdファイルを作成します。SVNリポジトリにユーザーを初めて追加するときは、
-c
パラメーターを指定して次のコマンドを実行し、passwdファイルを作成します。sudo htpasswd -c /var/svn/svnrepos/conf/passwd userTest
SVNリポジトリのユーザーを初めて追加しない場合は、次のコマンドを実行してpasswdファイルを作成します。
sudo htpasswd /var/svn/svnrepos/conf/passwd userTest
プロンプトに従ってユーザーのパスワードを設定します。
次のコマンドを実行して、confディレクトリに移動します。
cd /var/svn/svnrepos/conf/
ユーザーの読み取りおよび書き込み権限を設定します。
次のコマンドを実行して、アクセス制御ファイルを開きます。
sudo vim authz
I
キーを押して挿入モードに入ります。ファイルの末尾にポインターを移動し、次のコードを追加して、ユーザー (userTest) に読み取り (r) および書き込み (w) 権限を付与します。
[/] userTest=rw
Esc
キーを押して挿入モードを終了し、:wq
と入力し、enterキーを入力してファイルを保存して閉じます。
SVNの設定を変更します。
次のコマンドを実行して、SVNの設定ファイルを開きます。
sudo vim svnserve.conf
I
キーを押して挿入モードに入ります。次の行にポインターを移動し、各行の先頭から番号記号 (#) とスペースを削除します。
説明行はスペースで始めることはできません。 各等号 (=) の前後にスペースが必要です。
anon-access = read auth-access = write password-db = passwd authz-db = authz realm = /var/svn/svnrepos
Esc
キーを押して挿入モードを終了し、:wq
と入力し、enterキーを入力してファイルを保存して閉じます。
SVNリポジトリを起動します。
SVNリポジトリへの絶対パスを含む次のコマンドを実行して、リポジトリを開始します。
sudo svnserve -d -r /var/svn/svnrepos/
説明killall svnserve
コマンドを実行して、SVNサービスを停止できます。次のコマンドを実行して、SVNサービスが起動しているかどうかを確認します。
ps -ef | grep svn
次のコマンド出力は、SVNサービスが開始されたことを示します。
ステップ5: Apacheの設定
次のコマンドを実行して、httpd設定ファイルを追加および編集します。
sudo vim /etc/httpd/conf.d/subversion.conf
I
キーを押して挿入モードに入ります。次の情報を
subversion.conf
ファイルに追加します。<Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic AuthName "Authorization SVN" AuthzSVNAccessFile /var/svn/svnrepos/conf/authz AuthUserFile /var/svn/svnrepos/conf/passwd Require valid-user </Location>
Esc
キーを押して挿入モードを終了し、:wq
と入力し、enterキーを入力してファイルを保存して閉じます。次のコマンドを実行して、httpdサービスを開始します。
sudo systemctl start httpd.service
svnserveベースのアクセスでSVNをデプロイする
ステップ1: SVNのインストール
SVNをインストールするLinuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行してSVNをインストールします。
sudo yum install -y subversion
次のコマンドを実行して、SVNのバージョンを確認します。
svnserve --version
次のコマンド出力は、SVNがインストールされていることを示します。
ステップ2: SVNの設定
次のコマンドを順番に実行して、SVNリポジトリを作成します。
sudo mkdir /var/svn cd /var/svn sudo svnadmin create /var/svn/svnrepos
次のコマンドを順番に実行して、SVNリポジトリに自動的に生成されたファイルを確認します。
cd svnrepos ls
次の表に、SVNディレクトリとファイルを示します。
ディレクトリまたはファイル
説明
db
バージョン管理データファイルを格納するディレクトリ。
フック
フックスクリプトを格納するディレクトリ。
locks
SVNリポジトリロックファイルを格納し、リポジトリへのアクセスを追跡するために使用できるディレクトリ。
フォーマット
SVNリポジトリのバージョン番号を示す単一の整数値を含むテキストファイル。
conf
リポジトリのユーザー名とアクセス権限を格納するSVNリポジトリ構成ファイル。
SVNリポジトリのユーザー名とパスワードを設定します。
次のコマンドを実行して、ユーザー設定ファイルを開きます。
cd conf / sudo vim passwd
I
キーを押して挿入モードに入ります。ポインタを
[users]
に移動し、ユーザー名とパスワードを追加します。説明ユーザー名とパスワードを次の形式で設定します。username = password. 例: 次の図に示すように、userTest = passWDTest。 等号 (=) の前後にスペースが必要です。
Esc
キーを押して挿入モードを終了し、:wq
と入力し、enterキーを入力してファイルを保存して閉じます。
ユーザーの読み取りおよび書き込み権限を設定します。
次のコマンドを実行して、アクセス制御ファイルを開きます。
sudo vim authz
I
キーを押して挿入モードに入ります。ファイルの末尾にポインターを移動し、次のコードを追加して、ユーザー (userTest) に読み取り (r) および書き込み (w) 権限を付与します。
[/] userTest=rw
Esc
キーを押して挿入モードを終了し、:wq
と入力し、enterキーを入力してファイルを保存して閉じます。
SVNの設定を変更します。
次のコマンドを実行して、SVNの設定ファイルを開きます。
sudo vim svnserve.conf
I
キーを押して挿入モードに入ります。次の行にポインターを移動し、各行の先頭から番号記号 (#) とスペースを削除します。
説明行はスペースで始めることはできません。 各等号 (=) の前後にスペースが必要です。
anon-access = read auth-access = write password-db = passwd authz-db = authz realm = /var/svn/svnrepos
Esc
キーを押して挿入モードを終了し、:wq
と入力し、enterキーを入力してファイルを保存して閉じます。
SVNリポジトリを起動します。
SVNリポジトリへの絶対パスを含む次のコマンドを実行して、リポジトリを開始します。
sudo svnserve -d -r /var/svn/svnrepos/
説明killall svnserve
コマンドを実行して、SVNサービスを停止できます。次のコマンドを実行して、SVNサービスが起動しているかどうかを確認します。
ps -ef | grep svn
次のコマンド出力は、SVNサービスが開始されたことを示します。
SVNの使用
このセクションでは、SVNでコードを管理する手順について説明します。
チェックアウト: ソースコードをチェックして、オンプレミスデバイスで作業コピーを作成します。
他の人はソースコードを変更し、変更をリポジトリにコミットします。
更新: リポジトリからソースコードの最新バージョンを取得します。
ソースコードを変更してデバッグします。
コミット: 変更されたソースコードをリポジトリにコミットします。 他のユーザーは変更を表示できます。
チェックアウト: ソースコードをチェックアウトしてオンプレミスの作業コピーを作成する
オンプレミスのWindowsデバイスにTortoiseSVNクライアントをダウンロードしてインストールします。
オンプレミスプロジェクトフォルダーの空白領域を右クリックします。
この例では、プロジェクトフォルダは
C:\Test
です。SVNチェックアウト...
次のパラメーターを設定し、[OK] をクリックします。
リポジトリのURL: SVNリポジトリのURLを入力します。
HTTP経由でSVNにアクセスする場合は、
http:// <ECSインスタンスのパブリックIPアドレス> /SVN /<svnリポジトリ名>
の形式でSVNリポジトリのURLを入力します。svnserveを使用してSVNにアクセスする場合、SVNリポジトリのURLを
svn:// <ECSインスタンスのパブリックIPアドレス>/
の形式で入力します。説明SVNリポジトリの親ディレクトリからSVNを起動する場合、ソースコードをチェックアウトするURLにSVNリポジトリの名前を含める必要があります。
チェックアウトディレクトリ: ソースコードをチェックアウトして作業コピーを作成するオンプレミスディレクトリを指定します。 この例では、オンプレミスディレクトリは
C:\Test
です。
説明SVNに初めてログインするときに、設定したユーザー名とパスワードをpasswdファイルに入力します。
次のメッセージは、チェックアウト操作が完了したことを示します。
更新: リポジトリから最新バージョンのソースコードを取得
SVNリポジトリでプロジェクトを更新した後、オンプレミスのプロジェクトフォルダーの空白領域を右クリックし、SVN Updateを選択して、リポジトリからプロジェクトへのすべての変更を取得し、プロジェクトの最新バージョンをダウンロードできます。
オンプレミスプロジェクトフォルダーの空白領域を右クリックしてSVN Updateを選択すると、プロジェクトフォルダー内のすべてのファイルが上書きされます。 上書きプロセスによるコンテンツの損失を防ぐため、更新操作を実行する前に、元のコンテンツをプロジェクトフォルダーにバックアップすることをお勧めします。
コミット: 変更されたソースコードをリポジトリにコミットします
オンプレミスの変更をリポジトリにコミットするには、次の手順を実行します。
オンプレミスプロジェクトフォルダーの空白領域を右クリックし、[SVN Commit...] を選択します。
コミットメッセージを入力し、コミットするオブジェクトを選択し、[OK] をクリックします。
オンプレミスでプロジェクトに加えた変更は、SVNリポジトリにコミットされ、リポジトリ内のプロジェクトに適用されます。
説明新しいリポジトリバージョンが既にあるファイルをコミットしようとすると、競合が発生します。 コミットが失敗します。 この問題を解決するには、オンプレミスのプロジェクトをバックアップし、SVNリポジトリから最新のプロジェクトファイルをチェックアウトし、オンプレミスの最新のプロジェクトファイルを変更してから、変更したプロジェクトファイルをリポジトリにコミットします。
コミットしたプロジェクトからファイルが削除されると、次の図に示すメッセージが表示され、ファイルが欠落していることを示します。
削除されたファイルの復元
ファイルを削除した後、SVNでファイルを復元できます。
オンプレミスのプロジェクトフォルダーを開き、フォルダー内の空白の領域を右クリックして、SVNチェックアウトを選択します。プロジェクトの最新バージョンをチェックアウトします。
ファイルを削除します。
次のいずれかの方法を使用して、削除操作をSVNリポジトリにコミットするかどうかに基づいて、削除されたファイルを復元します。
削除操作がコミットされていない場合は、オンプレミスのプロジェクトフォルダーの空白領域を右クリックし、
を選択します。削除操作がコミットされた場合、変更はリポジトリに同期され、ファイルはリポジトリから削除されます。 削除したファイルを復元するには、次の手順を実行します。
空白の領域を右クリックし、
を選択して操作ログを表示します。ログで、削除されたファイルの削除ログエントリをクリックします。 削除されたファイルに関する情報が表示されます。
削除したファイルを右クリックし、リビジョンを保存して...
リビジョンを保存して... ダイアログボックスでファイル名を入力し、[保存] をクリックして、ファイルが削除されたディレクトリにファイルを保存します。
オンプレミスプロジェクトフォルダーを開き、フォルダー内の空白領域を右クリックして、[SVN Commit...] を選択します。 オンプレミスのプロジェクトデータは、SVNリポジトリに同期されます。
よくある質問
TortoiseSVNを使用してSVNサーバにアクセスすると、ホストが応答しないことを示すエラーメッセージが表示されるのはなぜですか。
原因:
SVNサーバが起動されていません。
SVNサーバが必要とするポートが、関連するセキュリティグループで開かれていません。
ECSインスタンスのfirewalldサービスは開始されますが、SVNサーバーが必要とするポートのトラフィックは許可されていません。
解決策:
SVNのステータスを確認します。
ps -ef | grep svn
次の図に示すコマンド出力は、SVNサービスが開始されたことを示します。 次のコマンド出力が返されない場合は、
sudo svnserve -d -r /var/svn/svnrepos/
コマンドを実行してSVNを起動します。ECSインスタンスが属するセキュリティグループのルールがSVNサーバーの要件を満たしているかどうかを確認します。
HTTP経由のSVNアクセス: ポート22、80、および443を開く必要があります。
svnserveによるSVNアクセス: ポート22、80、443、および3690を開く必要があります。
firewalldサービスを照会します。
firewalldサービスのステータスを照会します。
sudo firewall-cmd -- state
firewalldサービスが
非実行
状態の場合、firewalldサービスは開始されず、SVNサーバーに影響を与えません。firewalldサービスが
実行中
の場合、firewalldサービスが開始されます。 次のステップを実行します。
SVNのfirewalldルールのポート3690などのポートを開きます。
sudo firewall-cmd -- add-port=3690/tcp -- per
変更を有効にするには、
firewalld
サービス構成をリロードします。sudo systemctl reload firewalld