最初に戻る 戻る 次へ進む

svnmerge.py マニュアルページ (日本語訳)

Copyright

svnmerge

svnmerge.py は、自動ブランチ管理のためのツールです。 ブランチからのマージあるいはブランチへのマージを簡単に行えるように、 また自動的にどのリビジョンをマージしたかを記録してくれるツールです。 常にまだマージしていないリビジョンのリストを表示できます。そして 二度同じ変更をマージしてしまう等の間違いをしないようにできます。

svnmerge は Subversion ブランチで、どのリビジョンが既にマージされたかを 記録するための yellow sticky notes と考えてください。 さらに、それらの情報を、閲覧したり、管理したり、更新したりするための 有益な機能を提供しています。

詳しくは機能リストを見てください。

Contents

  1. 機能
  2. FAQ
  3. システム要件
  4. Downloads
  5. メーリングリスト
  6. Quick Usage Overview
  7. Quick tutorials
    1. 開発ブランチ
    2. リリースブランチ
    3. ブランチから trunk へのマージ (merge back)
  8. Handy Usage Tips

機能

FAQ

システム要件

以下が最低のシステム要件です。

Downloads

Link Description
svnmerge.py trunk version これはデフォルトの開発バージョンです。通常非常に安定しています。 心配することなくこれを取得してください。
svnmerge.py 1.4-branch version これは Subversion 1.4 とともにリリースされるバージョンです。 trunk バージョンに比べて、機能が少なく、若干安定しているかもしれません。 現在の trunk バージョンが一時的に壊れている場合に使用してください。
svnmerge.exe Windows executable Python のインストールが不要な Windows 実行ファイル形式です。たまに更新されるものなので --version オプションを利用して、trunk バージョンと比較して使ってください。
svnmerge.py は Subversion と同じリポジトリで管理されています。 適切なリリースプランや開発ロードマップはありません。なので公式リリースもありません。 svnmerge.py は Subversion がリリースされる時に一緒にリリースされます。なので trunk バージョンが おすすめです。かなり大規模なテストスートがあるので、trunk バージョンはほとんどの場合、 安定であると信じてます。

メーリングリスト

svnmerge.py 用のメーリングリストがあります。 詳しくは http://www.orcaware.com/mailman/listinfo/svnmerge を参照してください。 このメーリングストは、現在の開発や新機能に関する情報を得られる場所です。

Quick Usage Overview

  1. branch ディレクトリで merge tracking を初期化するために、 svnmerge init を使います。
  2. マージで利用可能なリビジョンを確認するのに、svnmerge avail を使います。
  3. branch からのいくつかのリビジョンあるいはすべてのリビジョンをマージするのに svnmerge merge を使います。
  4. svn commit でマージした修正をコミットします。
  5. step 2 に戻って、繰り返します。

Quick tutorials

2つの一般的な利用方法のチュートリアルを説明します。 svnmerge.py がどのような動作するかを 感じてもらうためのものです。 どのように動作するか理解することにより、完全なマニュアルを読みたく なるようにします。

開発ブランチ

このチュートリアルでは、最近trunk から作成した開発ブランチで作業を 行っていることを想定します。つまり trunk から何も変更をマージしていない 状態であることを仮定します。

Release branches

このチュートリアルでは、trunk から最近作成したリリースブランチで作業していることを 想定します。このブランチでは以前に何の修正もマージされていないとします。 リリースブランチとは、通常リリースを安定化するためにされます。特定の限定した修正 のみが trunk からマージされて、それ以外の修正は無視されます。

ブランチから trunk へのマージ (merge back)

このチュートリアルでは、trunkから分岐したactive ブランチを持っていると 想定します。このブラントで修正を行い、この修正を trunk にマージしたいと いう状況を仮定します。

Handy Usage Tips

リビジョンリストはカンマで区切られた範囲として指定されます。(例: 1412-1419,1423,1427,1433-1440) リビジョン範囲は、重なりあうかもしれないし、順番通りになっていないかもしれません。 svnmerge.py は自動的にこれを正規化します。 なので、 1413-1417,1410-1414,1402,1401 は 1401-1402,1410-1417 と同等です。

svnmerge は決してコミットしません。常に最後のステップをあなたに残します。 もし最初に戻りたい場合、svn revert -R を使ってください。 でも、svn revert はマージによって追加されたファイルを削除しないので、 完全に元に戻るためには、いくつかのファイルを自分自身で削除する必要があるかもしれません。

svnmerge merge はブランチディレクトリで目立った変更がないことを前提に しています。さもなければ、最新バージョンにない修正を偶然マージしてしまうかもしれません。 このチェックを上書きするためには、 --forceオプションを使ってください。

不連続なリビジョン範囲のマージは、コンフリクトやマージ漏れが発生する可能性があります。 これは、不連続マージに固有のものです。 例えば、リビジョン X であるファイルを修正する場合を考えます。そのファイルは Y < X となるような以前のリビジョンで作成されたものとします。そしてこれまでに マージしたことがないとします。svnmerge からの出力に特別の注意を払ってください。 これは、svn merge の出力に由来しています。ここで "ignoring" と いうメッセージは、実際のコンフリクトを表しています。これは、対象ブランチで 対象ファイルが存在していないので、Subversion が コンフリクトを表す "C" として マークできないからです。 このような場合、コミットログに例えば "Note: patch to foo/bar.c in r1234 not included" のようなログを入れておくのがいいです。