IT ニュース&コラム 2017/ 4/10 通巻735号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ マージがコンフリクトしても自動解決する ThreeWayMerge ■■ vbslib の ThreeWayMerge コマンドは、同じテキスト ファイルをそれぞれの人が 編集したことで、それぞれの編集内容が入った2つのファイルを、マージして 1つのファイルに結合します。 一般に 3ウェイマージ (3 way merge) と呼ばれ ている処理です。 また、コンフリクトするようなときでも、設定ファイルを 記述することで、自動的にコンフリクトを解決します。 vbslib は、以下からダウンロードできます。 Windows 用です。 http://vbslib.osdn.jp/ http://www.sage-p.com/vbslib/vbslib.htm https://github.com/TsNeko/vbslib 編集前(以後、前)、1つ目の編集後(以後、左)、2つ目の編集後(以後、右) のテキスト ファイルがあったとき、ThreeWayMerge の出力ファイルがどうなるかの サンプルを示します。 (等幅フォントでご覧ください) 前 左 右 出力 ------------------------------------- 1 1 1 1 2 LLL 2 LLL 3 2 RRR 2 4 3 3 RRR 5 Both Both 3 LLL 4 4 Both 6 LLL RRR 4 RRR 5 5 <<<<<<< Left.txt 7 6 LLL LLL Both RRR 6 ||||||| Base.txt 8 7 7 ======= 8 8 RRR >>>>>>> Right.txt 5 6 7 8 左の2行目では、前の 1の行と 2の行の間に LLL を追加しています。 右の3行目では、前の 2の行と 3の行の間に RRR を追加しています。 それらをマージした結果は、1, LLL, 2, RRR, 3 (コンマは改行)になります。 左と右で同じ内容を追加したときは、その追加がされたままになります。 左と右で異なる内容になったとき(コンフリクトしたとき)は、 <<<<<<< Left.txt (左の内容) ||||||| Base.txt (前の内容) ======= (右の内容) >>>>>>> Right.txt となります。 左と右で追加したときだけでなく、削除・変更したときでもマージできます。 使うときは、vbslib Prompt.vbs をダブルクリックして、以下のように 入力します。 番号またはコマンド >ThreeWayMerge --------------------------------------------------------------- 3ウェイ マージ(3方向マージ)をします。 ベースにするファイル >C:\Base.txt 更新したファイル(左側) >C:\Left.txt 更新したファイル(右側) >C:\Right.txt マージした結果の出力先ファイル(★上書きします) >C:\_Merged.txt コンフリクトしたときは、上記のように前・左・右のそれぞれの内容が 入りますが、それではマージした結果としては良くありません。 そんなときは、手動でマージすることになります。 出力ファイルを開いて、<<<<<<< などで検索して、編集します。 これは、SubVersion や Git などのバージョン管理ツールを使うとき と同じ手順です。 vbslib の ThreeWayMerge コマンドは、さらに一歩進んで、コンフリクト した内容によっては、自動的にコンフリクトを解決できるオプションがあります。 両方並べるオプション(IsOutEach)を設定すると左右で追加した内容を 並べます。 左の内容と右の内容に間には空行が入ります。 (左の内容) (右の内容) シングルトン キーワード(SingletonKeywords)を設定すると、 左右で追加した内容が、その設定に書かれた正規表現にマッチした ときに、右の内容だけ出力します。 プロジェクト名など、1つしか設定できない設定に使います。 (右の内容) ユニーク ライン キーワード(UniqueLineKeywords)を設定すると、 左右で追加した内容が、その設定に書かれた正規表現にマッチした ときに、同じ内容の行が削除されます。 #include など、複数並べても同じ内容を並べないときに使います。 コンフリクトした前後の正規表現にマッチする行も含めて、 同じ内容を並べません。 (左の内容) (右の内容) … 左の内容と異なる場合のみ マージ テンプレート(MergeTemplate)を設定すると、出力内容を 置き換えます。 同じ内容のマージが行われるときに、完全自動化 することができるようになります。 置き換える前の内容として 設定する内容は、IsOutEach の設定の影響を受けます。 これらの設定は、マージ設定ファイルと呼ばれる XMLファイルに 記述して、ThreeWayMerge コマンドの最後にそのパスを指定します。 False #include ProjectName= >>>>>> Right.txt ]]> ■■ 注目ニュース 一覧 ■■ ◇ 17歳以下はTwitterが使えなくなる大騒動に見る危険性。 https://japan.cnet.com/article/35098920/ … 海外の大人が勝手に問題にして雑な対策をしたことで、子どもの権利が奪われる。 ◇ YouTube、視聴1万回未満のチャンネルは広告禁止。 https://japan.cnet.com/article/35099423/ … 審査プロセスが問題。 国内で問題がないのに海外で問題になる産業が成り立たない。 ◇ Google、検索結果のファクトチェックのラベル表示を世界で開始。 http://www.itmedia.co.jp/news/articles/1704/08/news015.html … トランプ大統領を批判してしまったグーグルでは、そのラベルは信用されない。 ◇ まるで武将?Adobeのフォント源ノ明朝。名前の由来は。 http://www.itmedia.co.jp/news/articles/1704/06/news101.html … 明朝体のフリーフォント源ノ明朝。 ◇ 未来を変える眼力。トビーCEOが確信する視線によるインターフェース革命。 https://japan.cnet.com/article/35098765/ … 目線を検知する精度が高いと、いろんなことができてくる。 ◇ SIEJA、PlayStation Now for PC のサービスを開始。 https://japan.cnet.com/article/35098446/ … ゲームの著作権を守る仕組みは、本体からクラウドへ。 ◇ マイナンバーの本人確認機能、iPhone対応へ。 http://www.itmedia.co.jp/business/articles/1703/29/news081.html … モバイルSuica と同じようにマイナンバーも iPhone の中へ。 ■■ ソフトウェアデザイン館 Sage Plaisir 21 ■■ ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm