Subversion/ja
This page is obsolete. It is being retained for archival purposes. It may document extensions or features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date. |
2006年4月1日以降、SourceForgeの開発者用のCVSサービスの供給停止によって我々(MediaWikiの開発者)は独自にソースコードリポジトリをセットアップしなければならなくなりました。
新しいリポジトリはSubversionを使用しています。SubversionはCVSよりも流行していて、とてもよく似たインターフェイスを提供しています。
2006年4月1日から2007年5月31日までの間、リポジトリはBrion(ブリオン)のオフサイトサーバ( http://www.leuksman.com )でホストされていました。2007年5月31日以降、アムステルダムのWikimediaのサーバ(mayflower
)でホストされています。
Subversionを使用するためには、公式のコマンドラインSubversionクライアントをダウンロードしなければなりません。Windows用のTortoiseSVNのような代替的なグラフィカルクライアントも使用することが出来ます。
Subversionのコマンドラインインターフェイスは一般的にCVSによく似ています。この記事は多くの便利なコマンドラインの基本的で部分的なガイドです。完全なガイドについてはSubversionによるバージョン管理をご覧下さい。サーバへの書き込み権限を持っているのであれば、Subversionの先進的な機能について読むことをお勧めします。なぜなら遅かれ早かれ使うことになるからです。
リポジトリ
[edit]MediaWikiのリポジトリはブリオンの個人的なサーバでホストされ、http://svn.wikimedia.org/svnroot/mediawiki/からアクセス可能です。プロジェクトはおおよそ標準的な階層を使用しています:
branches
tags
trunk
試作品の作業はtrunk
ツリーで作成されます。Wikimediaサーバは製品利用のためにこのツリーにあるコードを動作させます。このツリーで作成されたパッチはコードを壊してはなりません。trunkの拡張的な部分を書き換えることも同様に避けるべきです。MediaWiki本体はtrunkのphase3
サブディレクトリにあります。
Branches
は主要なコーディング作業、巨大なパッチをテストする、不安定なパッチをテストするなどのために使用されます。開発者の中にはこのコードに独自のブランチを持っている人もいます。新しい安定版リリースを準備するためにも使用されます(よく知られるベータ → リリース候補 → セキュリティ & メンテナンス修正のサイクル)。それぞれの主要な安定版シリーズはREL<major_version>_<minor_version>という独自のディレクトリを使います。例えばMediaWiki1.9はREL1_9
で公開されます。
Tags
はその時点でのソフトウェアの状態を保存するために使用される特別な階層です。これはけっして変更すべきではありません。新しいバージョンをリリースするときのみ使用します。この作業はMediaWikiリリースマネージャ一人(2007年2月時点ではBrion Vibber)によって取り扱われます。
wikimedia-web
という名前の追加のサブプロジェクトがあります。http://www.wikimedia.org/ で設置されたWikimediaのポータルファイルをホストしています。Wikimedia財団かつ/もしくはWikimediaのシステムアドミニストレータに関連しないのであれば、通常は修正しません。
匿名による利用
[edit]リポジトリに対する書き込み権限を持たない場合で、通常のHTTP経由で匿名によるアクセスしなけばなりません。しかしながら、ここで示される多くの技術は開発者のための利用にも便利なので、匿名でサーバにアクセスする必要がない場合でもどうぞご覧下さい。
チェックアウト
[edit]最初に、MediaWikiのコードをチェックアウトしなければなりません。次の構文を使用します:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/folders_to_download sub_folder_name
ウェブインターフェイス (ViewVC)を使用してコード構造をブラウズすることが出来ます。異なった目的のためにそこにある3つのフォルダを使用して下さい:
URL構造は以下の通りです:
- transport
- http://svn.wikimedia.org
- repository
- /svnroot/mediawiki
- branch/tag
- /trunk, or /branches/REL1_9, or /tags/REL1_9_0
- files
- /phase3
古いCVSとは異なり、URLはbrachもしくはtagを指定するために使用されます。
MediaWikiの開発用のtrunkを"wiki"フォルダにチェックアウトします:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3 wiki
エクステンションセットを"extensions"フォルダにチェックアウトします:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions extensions
特定のリリースブランチで最新のコードをチェックアウトします:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/branches/REL1_9/phase3 REL1_9
ソフトウェアの特定のバージョンをチェックアウトします:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/tags/REL1_9_0/phase3 REL1_9_0
古いCVSとは異なり、匿名アクセスは完全に最新なので、コミットされた後で即座に修正されたコードを入手出来ます。
"trunk"もしくはブランチ部分を中止させないで下さい! リポジトリにあるすべてのファイルのすべてのリビジョンをチェックアウトすることを中止するのはとても馬鹿げています。
ワーキングコピーをアップデートする
[edit]ワーキングコピーをアップデートして最新のファイルを取得するためには、次のコマンドを使用します:
svn update
CVSとは異なり、SVNは削除されたファイルを除去するもしくは新しいディレクトリを作る必要はありません。自動的にこの作業が行われます。
差分を作成する
[edit]差分、もしくはパッチはワーキングコピーで変更されたすべての内容を含むテキストファイルです。Bugzillaで新しい機能を提案するもしくはどの部分を修正するのかを提案する場合、パッチをアップロードして下さい。
現在のリポジトリから差分を作成するためには、次のコマンドを使用して下さい:
svn diff
通常、CVSとは異なり、どのファイルを変更したのかSVNに伝える必要はありません; しかしながら、リポジトリの部分の差分を取得したい場合、差分を取得するファイルを指定します:
svn diff includes/SpecialMyAwesomePage.php
SVNは"unified"の差分フォーマットをデフォルトで使用するので、"-u"オプションは渡されないことに注意して下さい。
差分を適用する
[edit]Subversionは差分を現在のワーキングコピーに適応する組み込みのコマンドを含んでいません(例えば、Bugzillaで公開された差分をレビューもしくはコミットするため); 代わりに、通常のpatch UNIXユーティリティを使用することが出来ます:
patch -p0 < patch_file
TortoiseSVNは差分を適用するための組み込みのサポートを持ちます。
ファイル構造を変更する
[edit]次の差分もしくはコミットに含めるために、次のコマンドを使用してファイルもしくはフォルダをワーキングコピーに追加することが出来ます:
svn add file.name
フォルダを追加する場合、無視されるリストにあるファイル以外、フォルダに含まれるすべてのファイルを追加します。
次のコミットもしくは次の差分でマークされたワーキングコピーからファイルもしくはフォルダを削除することが出来ます(自動的にワーキングコピーからファイルを削除するが、そのような方法でフォルダは削除しない):
svn delete file.name
ファイルもしくはフォルダがローカル修正を含まないことを確認して下さい。さもなければ強制しない限り、それらは削除されません。
変更をリバートする
[edit]ワーキングコピーで変更することが便利はないと思うのであれば、次のコマンドを使用してリバートすることが出来ます:
svn revert
コマンド用のパラメータを使用しなければなりません。ワーキングコピーでのすべての変更をリバートするためには、次のコマンドを使用します:
svn revert -R .
特定のファイルの変更をリバートするためには、次のコマンドを使用します:
svn revert file.name
リバートは追加されたファイル(svn add
を削除に使わなかったように、それらは削除されず、除去され"unknown files"と見なされます)を除去することも削除されたファイルを復元することも出来ます(両方とも手作業でもしくはsvn delete
で削除します)。
ワーキングコピーの状態をチェックする
[edit]次のコマンドを使用してワーキングコピーの状態をチェックすることが出来ます:
svn status
項目の最初のカラムにいくつかの重要な文字があります。これは次のようなステータスを表示します:
- M = あなたによって修正された項目
- A = あなたによって追加された項目(
svn add
を使用) - D = あなたによって削除された項目(
svn delete
を使用) - ? = 存在するがバージョンコントロールの管理下にない項目
- ! = 見失っているもしくは不完全な項目(バージョンコントロールの管理下にあるが存在しない - おそらくは
svn delete
無しで削除されたもの)
開発者のための使用方法
[edit]サーバへの書き込み権限を持つ場合、HTTPアクセスの代わりにSSHアクセスを利用することが出来ます。これは後で変更することがあるかもしれません。
SSHキーを作成する
[edit]SSHキーを作成するためにSourceforgeにある手引きに従います。パスワード句を覚え、秘密鍵(id_dsa
もしくはid_rsa
)を保存しておき、公開鍵を送ります(id_dsa.pub
もしくはid_rsa.pub
)。
URLs
[edit]サーバ名 http://svn.wikimedia.org
を すべてのコマンドでsvn+ssh://your_user_name@svn.wikimedia.org
に置き換えると(例えば、 svn checkout
)
ウェブアクセスを要求する機能のためにパスワードを入力しなければならない時に、通常の機能を利用することが出来ます。時にはパスワードを複数回要求されることがあります。パスワードを間違えると、再び入力するように求められます。
例えば、最新のtrunkを匿名としてチェックアウトするためには、次のコマンドを使用します:
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3 wiki
開発者としてチェックアウトするためには、次のコマンドを使用します:
svn checkout svn+ssh://your_user_name@svn.wikimedia.org/svnroot/mediawiki/trunk/phase3 wiki
これを動作させるためには、あなたの身元確認をssh認証エージェントに追加しなければなりません。例えば、秘密鍵が現在/home/tux/.ssh/tux.key
に設置されている場合、次のコマンドを使用して追加しなければなりません:
ssh-add /home/tux/.ssh/tux.key
Windowsユーザ
[edit]SubversionクライアントのWindowsユーザはSSH秘密鍵を利用できるようにするためにここで言及されている次の手引きが必要になることがあるかもしれません。
オートプロパティ
[edit]追加するファイルのために列の最後の自動変換をどのように有効にするのかについてはSubversion/auto-propsをご覧下さい。すべての開発者はそれを使用すべきです。
コミット
[edit]コミットもしくはチェックインはワーキングコピーからウェブリポジトリへの変更を適用アクションです。そのためには次のコマンドを使用して下さい:
svn commit
エディタを設定しない限り、パラメータ無しでコマンドを使用すると失敗します。ファイルログのためのコメントを入力しなければならないからです。次の形式の一つを使うことが出来ます:
svn commit --message="This is the log comment." svn commit --file=file_with_log_comment
ログメッセージにおいて、PHPの'$'表記法を使用する変数に参照して、シェルからそれらをエスケープすることを覚えて下さい。
CVSチェックアウトをSVNに変換する
[edit]リポジトリでファイルへのローカルな変更を続けたくない場合、新しいチェックアウトですべてを上書きすることは簡単です。LocalSettings.phpやカスタム外装といったものはそのままにします。
svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3 temp-checkout rsync -a temp-checkout/ /path/to/phase3/
次のコマンドはどのディレクトリも削除したくない場合です:
svn revert -R /path/to/phase3
次は古いCVSのディレクトリを除外したい場合です:
find . -type d -name CVS -print0 | xargs -0r rm -rf
それに注意して下さい ;)
See also
[edit]External links
[edit]- Subversion Web access
- Version Control with Subversion book (SVN version 1.2)