Subversion/ja

From mediawiki.org

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぀のフォルダを䜿甚しお䞋さい:

  • Trunkはメむン開発ブランチです。
  • branchesは安定バヌゞョンず耇雑な機胜の開発のために䜿甚されたす。
  • tagsはリリヌスされたバヌゞョンを远跡するために䜿甚されたす。

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]