Kouhei Yanagita committed 57fb3eb

ja: translated advanced/2009-11-30-merging-binary-files

Comments (0)

Files changed (1)


 {% extends "_tip.html" %}
-    title: Handling Binary Files in a Merge
+    title: マージにおいてバイナリファイルを扱う
     author_name: Ryan Wilcox
     created: 2009-11-30
 {% block excerpt %}
-Mostly we deal with text, source code etc. But sometimes
-we put binary files into our repository and dealing with the inevitable merge
-conflict is not as easy as source code.
 {% endblock %}
 {% block tip %}
-Say you're building a website and you keep your images in the Mercurial
-repository for the site. Eventually two people are going to change that file
-at the same time and have a merge conflict.
+やがては 2 人が同時に同じ画像を編集しようとして、マージの衝突が起きてしまいます。
-### Setting up Mercurial for Different Merge Tools
+### 別のマージツールを使うために Mercurial を設定する
-In your `~/.hgrc` file, you should add the following section:
+~/.hgrc ファイルに次の設定を加えてください:
     diff_images.args = $output $other
     **.png = diff_images
-Now, create a `diff_images` shell script, set it to executable, and put it on
-your $PATH. Mine is:
+シェルスクリプト `diff_images` を作成、実行可能にして、$PATH の通った所に置きます。
-    open -a GraphicConverter $1 $2 -W 
+    open -a GraphicConverter $1 $2 -W
+    # 1 番目と 2 番目のパラメータを GraphicConverter で開き、
+    # シェルを続行させる前に終了を待つ。
     # opens the first and second parameter with GraphicConverter, waiting
     # until same is quit before letting the shell continue.
-Now a merge that contains `.png` files that conflict will open up
-GraphicConverter. There will be two images that open up: one as it exists in
-the your source tree now, and one from Mercurial. You can tell the difference
-because the one from Mercurial will have a lot of random-seeming letters after
-the file extension. For example, if your conflicting file is `image.png`,
-GraphicConverter will open up two windows: `image.png` and
+これで `.png` ファイルを含むマージで衝突が起こると GraphicConverter が起動します。
+開かれる画像は 2 つあります: 1 つはあなたのソースツリーに今あるもの、もう 1 つは Mercurial からのものです。
+Mercurial からのファイルにはファイル拡張子の後にランダムに見えるたくさんの文字列がついているので見分けがつきます。
+例えば、衝突したファイルが `image.png` だとすると、GraphicConverter は 2 つのウィンドウを開きます:
+`image.png` と `image.png~other.bQkQxd` です。
-Manually move your changes from the new file into the original file
-(`image.png`), saving the original when done and quitting GraphicConverter.
-These are the changes that will be committed.
+完了したら元のファイルを保存し、GraphicConverter を終了します。
-### How this Setup Works
+### この設定がどのように働くか
-First, `diff_images.args` sets up two parameters to pass into the graphics tool:
+まず、`diff_images.args` は画像ツールに渡す 2 つのパラメータを設定します:
-* `$output` is the file that Mercurial will commit, and contains the version
-  from the first parent.
-* `$other` is the version from revision you are merging in.
+* `$output` は Mercurial がコミットするファイルで、第 1 親からのバージョンを含みます。
+* `$other` はあなたがマージしようとしているリビジョンからのものです。
-There are other options that the `.args` parameter provides:
+他にも `.args` パラメータが提供するオプションがあります:
-* `$local` is a copy of `$output`, but changes to this file will be ignored in
-  the merge.
-* `$base` is the file from the revision right before the contents of the file
-  diverged.
+* `$local` は `$output` のコピーです。ただし、このファイルへの変更はマージの際に無視されます。
+* `$base` はファイルが分岐する直前のリビジョンでのデータです。
-You could use these to set up a three way merge, if you desired, or enhance
-`diff_images` to show the user the contents of the file *before* this merge
-mess happened.
+もし希望するなら、3-way マージを設定するためにこれらのオプションを使うことができます。
+`diff_images` を拡張することもできます。
-Next, the `[merge-patterns]` section associates what merge tool to use when a
-file name matches a particular pattern.
+次に `[merge-patterns]` セクションでは、ファイル名が特定のパターンにマッチしたとき
-Without the merge-pattern section, `diff_images` would be considered for a
-diff candidate, but skipped over because Mercurial will assume that
-`diff_images` can't handle diffing binary files. Adding lines to
-`[merge-pattern]` will tell Mercurial that `diff_images` can handle the file
-types specified.
+merge-patterns セクションがない場合、`diff_images` は diff の候補として考慮されますが、実際にはスキップされます。
+これは Mercurial が、`diff_images` はバイナリファイルを扱うことができないと仮定するためです。
+`[merge-patterns]` に行を追加することで、`diff_images` は指定されたファイル形式を扱うことができると
+Mercurial に伝えることになるのです。
-Instead of putting in a merge-patterns section, you could add a line, like
-`diff_images.args`, that tells Mercurial that `diff_images` can handle binary
-documents: `diff_images.binary = True`
+merge-patterns セクションに設定を追加するかわりに、`diff_images.args` のように、
+`diff_images` がバイナリファイルを扱えると Mercurial に伝えるための行を追加することもできます: `diff_images.binary = True`
-However, this will make `diff_images` a candidate for *all* binary differences,
-which GraphicConverter may not be up to (for example, diffing mp3s would not
-be a good task for GraphicConverter).
+しかしながら、この設定では `diff_images` が*全ての*バイナリファイルに対する候補となります。
+ファイルによっては GraphicConverter がうまく扱えないかもしれません。
+(例えば mp3 ファイルの差分を取るのは、GraphicConverter にとってよい仕事ではないでしょう)
-### When Things Go Terribly Wrong: Aborting the Merge
+### 状態がひどく悪くなったとき: マージを中断する
-Merges can *not* be aborted via the standard `hg revert` mechanism. Try it and
-you'll get:
+マージは通常の `hg revert` では中断*できません*。
     $ hg revert --all
     abort: uncommitted merge - please provide a specific revision
-But you just want to blow away your merge work and start from scratch. Use `hg
-update --clean` for this.
+これには `hg update --clean` を使ってください。
 ### References