Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Subversionのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Subversion
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:バージョン管理システム]] [[Category:Apache]] [[de:Apache Subversion]] [[en:Subversion]] [[zh-hans:Subversion]] [http://subversion.apache.org/features.html Apache Subversion] はより良い [[Concurrent Versions System|CVS]] を目標に設計されたフル機能のバージョン管理システムです。CVS を置き換えるという本来の目標を大きく越えて Subversion は拡張され続けていますが、基本的なモデルや設計、インターフェイスはベター CVS という趣旨から外れてはいません。 この記事ではマシンに svn サーバーをセットアップする方法を説明します。人気のある svn サーバーは2つあり、''svnserve'' に組み込まれているサーバーと、[[Apache HTTP Server]] で svn プラグインを使用するという高度な方法です。 == Apache Subversion のセットアップ == ===目標=== Subversion を Apache でセットアップするというのが目標です。Subversion のために Apache を使うのは、Subversion だけでは実現できない機能が存在することが理由になります: * Apache では https プロトコルを使用できます。svnserve で使用される md5 認証よりもセキュアです。 * アクセス制御を細かく行うことができます。Apache の認証を使うことでディレクトリごとにパーミッションを制限できます。例えば、読み取りやトランクへのコミットは誰にでもできるようにして、タグを付けたりブランチを作成するのは特定のグループだけに制限することが可能です。 * フリーのリポジトリビューアが存在します。そこまで興奮することではありませんが、ちゃんと動作します。 * Subversion チームはシームレスな webdav との統合に取り組んでいます。いつか webdav インターフェイスを使ってリポジトリ内のファイルを更新できるようになるはずです。 ===インストール=== [[Apache HTTP Server]] をインストールしてください。 Apache の他にインストールする必要があるのは[[公式リポジトリ]]の {{Pkg|subversion}} だけです。 ===Subversion の設定=== リポジトリのディレクトリを作成してください: # mkdir -p /home/svn/repositories ====/etc/httpd/conf/httpd.conf の編集==== 以下の行が記述されていることを確認してください。記述されていない場合、追加してください (普通は追加する必要があるのは最後の2行だけです)。記述の順番も守ってください: LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so ====SSL の設定==== SVN にアクセスするのに SSL を使うことにはメリットがあります。例えば Apache の AuthType Basic を使うことができ、パスワードが漏洩する可能性が低くなります。 以下のコマンドで証明書を作成: # cd /etc/httpd/conf/ # openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodes {{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} (もしくは ssl を使わない場合 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}) に以下を追加してください。バーチャルホストのディレクティブの中に記述します: <Location /svn> DAV svn SVNParentPath /home/svn/repositories AuthzSVNAccessFile /home/svn/.svn-policy-file AuthName "SVN Repositories" AuthType Basic AuthUserFile /home/svn/.svn-auth-file Require valid-user </Location> SSL の設定がロードされるように、{{ic|/etc/httpd/conf/httpd.conf}} の SSL を設定する行をアンコメントして以下のようにしてください: LoadModule ssl_module modules/mod_ssl.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so Include /etc/httpd/conf/extra/httpd-ssl.conf ====/home/svn/.svn-policy-file の作成==== [/] * = r [REPO_NAME:/] USER_NAME = rw / セクションの * は匿名ユーザーにマッチします。apache の AuthType Basic によって、読み取り以外のアクセスをしようとするとユーザー/パスワードの入力が求められます。REPO_NAME:/ セクションは上のセクションからパーミッションを承継するため、匿名ユーザーは読み込むだけの権限しか与えられません。最後にユーザー USER_NAME に REPO_NAME リポジトリの読み書き権限を付与しています。 ====/home/svn/.svn-auth-file の作成==== htpasswd あるいは htdigest ファイルです。以下では htpasswd を使います。SSL があるためパスワードが盗聴されることを心配する必要はありません。htdigest は盗聴に対してさらに高いセキュリティを実現します。以下のコマンドを実行してください: # htpasswd -cs /home/svn/.svn-auth-file USER_NAME 上記のコマンドでファイルが作成され ({{ic|-c}})、SHA-1 を使ってパスワードが保存されます ({{ic|-s}})。ユーザー {{ic|USER_NAME}} が作られます。 ユーザーを追加するには、フラグを外してください ({{ic|-c}}): # htpasswd -s /home/svn/.svn-auth-file OTHER_USER_NAME ====リポジトリの作成==== # svnadmin create /home/svn/repositories/REPO_NAME ====パーミッションの設定==== 新しいリポジトリに Apache ユーザーのパーミッションを設定してください。 # chown -R http:http /home/svn/repositories/REPO_NAME ===プロジェクトの作成=== ====プロジェクトのディレクトリ構造==== 開発用マシンに {{ic|branches}}, {{ic|tags}}, {{ic|trunk}} の一時ディレクトリを作成してください: $ mkdir -p ~/svn-import/{branches,tags,trunk} ====ディレクトリの作成==== プロジェクトのソースファイルを作成した {{ic|trunk}} ディレクトリにコピー・移動してください: $ cp -R /my/existing/project/* ~/svn-import/trunk ====プロジェクトのインポート==== $ svn import -m "Initial import" ~/svn-import https://yourdomain.net/svn/REPO_NAME/ ====SVN チェックアウトのテスト==== $ svn checkout https://yourdomain.net/svn/REPO_NAME/ /my/svn/working/copy ちゃんと設定ができていれば、作成された SVN リポジトリのコピーをチェックアウトできるはずです。 == Svnserve のセットアップ == ===パッケージのインストール=== [[公式リポジトリ]]から {{Pkg|subversion}} をインストールしてください。 === リポジトリの作成 === リポジトリを作成: # mkdir /path/to/repos/ # svnadmin create /path/to/repos/repo1 最初のリポジトリは空です。ファイルをインポートしたい場合、以下のコマンドを使用: $ svn import ~/code/project1 file:///path/to/repos/repo1 --message 'Initial repository layout' === アクセスポリシーの設定 === {{ic|/path/to/repos/repo1/conf/svnserve.conf}} ファイルを編集して [general] 下で以下の行をアンコメント・追加してください: password-db = passwd また、匿名ユーザーのデフォルトオプションを変更することができます: anon-access = read "read" を "write" に置き換えると誰でもコミットできるようになります。あるいは "none" に設定すると匿名のアクセスが全くできなくなります。 そして {{ic|/path/to/repos/repo1/conf/passwd}} ファイルを編集してください: [users] harry = foopassword sally = barpassword 上記では harry と sally というユーザーを定義して、それぞれパスワードを foopassword と barpassword に設定しています。適当に設定してください。 === サーバーデーモンの起動 === サーバーを起動する前に、設定ファイルを編集してください: {{hc|/etc/conf.d/svnserve|2= SVNSERVE_ARGS="--root=/path/to/repos" }} {{ic|1=--root=/path/to/repos}} オプションはリポジトリツリーのルートディレクトリを設定します。リポジトリが複数ある場合は {{ic|1=--root=/path-to/reposparent}} を使ってください。URL にリポジトリの名前を指定することで各自のリポジトリにアクセスできます: {{ic|svn://host/repo1}}。リポジトリのファイルに読み書きアクセスできることを確認してください。 別のポートを使いたい場合は {{ic|--listen-port}} を追加してください。 デフォルトでは、サービスは root で実行されます。実行するユーザーを変更するには、ドロップインファイルを作成: {{hc|/etc/systemd/system/svnserve.service.d/50-custom.conf|2= [Service] User=svn }} {{ic|svnserve.service}} [[デーモン]]を起動してください。 === svn+ssh === svn+ssh:// を使うには svnserve のラッパーが必要です。 svnserve バイナリがどこにあるか確認: {{hc|# which svnserve|/usr/local/bin/svnserve}} ラッパーを作成: # touch /usr/bin/svnserve # chmod 755 /usr/bin/svnserve ラッパーを以下のように編集: {{bc|/usr/bin/svnserve #!/bin/sh # wrapper script for svnserve umask 007 /usr/local/bin/svnserve -r /path/to "$@" }} 新しいラッパースクリプトを使って svnserve を起動 (デーモンモード): # /usr/bin/svnserve -d リモートユーザーで確認ができます: {{bc|$ <nowiki>svn ls svn+ssh://server.domain.com:/reponame</nowiki> ++server.domain.com++ dev/ qa/ release/ }} ==Subversion のバックアップとリストア == Subversion リポジトリをバックアップするには、リポジトリごとに以下を実行してください: $ svnadmin dump /path/to/reponame > /tmp/reponame.dump $ scp -rp /tmp/reponame.dump user@server.domain.com:/tmp/ バックアップをリストアするには、まずリストアするリポジトリを作成します: # svnadmin create /path/to/reponame そして svn の dump を新しいリポジトリにロードさせてください: # svnadmin load /path/to/reponame < /tmp/repo1.dump パーミッションを設定: # chown -R svn:svnusers /path/to/reponame # chmod -R g+w /path/to/reponame/db/ これでリポジトリが設定されたはずです。 ==Subversion クライアント== Subversion のクライアントのリストは [[Wikipedia:Comparison of Subversion clients|Wikipedia の記事]]を見てください。 == 参照 == * http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-9-sect-2.2-re-load * http://subversion.tigris.org/
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
Subversion
に戻る。
検索
検索
Subversionのソースを表示
話題を追加