1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

diff3コマンドを利用してGit/SVNを使わずに文書の3ウェイマージを実現する

Last updated at Posted at 2016-04-16

はじめに

現在開発しているWebサービスにgitのような特定のリソースを同時編集した際に
自動でマージ・コンフリクトする機能やプルリクエスト的な機能を実装できたらと思い、
いろいろ調べてた結果diff3コマンドというのに出会った。

Wikipediaなんかはこれでマージ機能が実装されてたりするとのこと

Qiitaの編集リクエストなんかもGitかSVNを使ってるものと思ってたけど
もしかしたらこれで実装されてたりするかも?

やり方

OLDFILE.txt
こころぴょんぴょん待ち?。
考えるふりして、もうちょっと近づいちゃえ。
簡単には教えないっ。
こんなに好きなことは内緒なの。
MYFILE.txt
こころぴょんぴょん待ち?。
考えるふりして、もうちょっと近づいちゃえ。
簡単には教えないっ。
ほんとは好きなんだと(好きなんだつまり…ななな!)囁く
YOURFILE.txt
こころぴょんぴょん待ち?。
楽しさ求めて、もうちょっとはじけちゃえ(ぴょんぴょんと)。
簡単には教えないっ。
こんなに好きなことは内緒なの。

↓以下でマージ実行

diff3.sh
diff3 -m MYFILE.txt OLDFILE.txt YOURFILE.txt > 結果.txt

-mオプションはマージの意
これでOLDFILE.txtからYOURFILE.txtへの変更がMYFILE.txtに統合される

結果.txt
こころぴょんぴょん待ち?。
楽しさ求めて、もうちょっとはじけちゃえ(ぴょんぴょんと)。
簡単には教えないっ。
ほんとは好きなんだと(好きなんだつまり…ななな!)囁く

コンフリクト時はこんな感じ

先ほどのYOURFILE.txtを以下に変更

YOURFILE.txt
こころぴょんぴょん待ち?。
考えるふりして、もうちょっと近づいちゃえ。
簡単には教えないっ。
こんなに好きなことは。(いいよね夢、恋の夢、好きなんだつまり…ななな!)。内緒なの。
コンフリクト.txt
こころぴょんぴょん待ち?。
考えるふりして、もうちょっと近づいちゃえ。
簡単には教えないっ。
<<<<<<< my.txt
ほんとは好きなんだと(好きなんだつまり…ななな!)囁く||||||| parent.txt
こんなに好きなことは内緒なの。=======
こんなに好きなことは。(いいよね夢、恋の夢、好きなんだつまり…ななな!)。内緒なの。>>>>>>> your.txt

その他に良い感じの実装方法やライブラリなどあればコメントにて教えていただけると嬉しいです!

参考

diff3 - 3つのファイルの差異の表示

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?