問題タブ [3-way-merge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse - プログラムでeclipseのmergeおよびdiffビューアを利用する
Bazaar(および他の多くのdvc)でテキストの競合が発生すると、.BASE、.THIS、および.OTHERファイルが生成されます。次に、ユーザーが3ウェイマージツールを使用して競合をマージし、解決済みとしてマークします。
eclipseに登録されているすべてのマージビューアを取得し、競合をこれらのいずれかとマージするオプションをユーザーに提供したいと思います。(TextMergeViewerがデフォルトのオプションです)。これらのmergeviewerに3つのファイルをプログラムで提供し、BASE、THIS、およびOTHERファイルをラップして、MergeViewerに違いがどこにあるかを伝えるカスタムコードを作成する必要があると思います。(などの「ヘリンボーン」マーカーを解釈し<<<<<<<
ます)
git - git のマージ競合解決は、他の SCM やマージ ツールよりも効率的ですか?
git
のマージ競合解決は、他の SCM (CVS、Subversion など) やスタンドアロンのマージ ツールよりも本質的に効率的ですか? もしそうなら、なぜですか?
明確化:ここで私はアルゴリズム自体にもっと興味があります - それは単純な diff3 メソッドと何か違うのですか?
一部のツールはその点でよりスマートであると主張しています (例: Guiffy)。git マージ ツールとしてプラグインする価値はありますか? ファイル内またはファイル間で移動されたテキストの断片を理解する上で、git はよりスマートですか? (うるさい衝突を報告するというより.. ライナスの話から漠然とした印象がありました)。
背景: を使用して大規模なマージを行ったgit-svn
ところ、プレーン (追跡なしの最初のマージ) よりも半分の競合が発生しましたsvn merge
..その理由を理解したいと思います。
これらは似たような Q/A ですが、プロセスの全体像と、マージがより自然にどのように適合するかについてのものです。そのために、git
(分岐のみではなく)「マージ用に最適化」されていることは、実際には次のことを意味しますか?
- 手動の競合が少ない -- より優れた自動解決アルゴリズム (例: 名前の変更が適切に処理される)
- より安全な操作 -- 自動解決により、より多くの/実際の競合のみが残り、誤ったアラートが少なくなります
- より高速な操作 -- たとえば、リーン & ミーン オブジェクト モデルによるもの
- より優れたツール -- DAG ベースのマージ トラッキング、マージツール、ヒストリー クエリ/ビジュアライゼーション、スタッシュ、リベースなど、エクスペリエンスの負担を軽減します。
- 他の何か
- 上記の組み合わせ
? 今、私は主に1と2に興味があります。
mercurial - 小規模チーム向けの Mercurial ワークフロー
私は 3 人の開発者のチームで働いており、最近 CVS から Mercurial に切り替えました。各ワークステーションにローカルリポジトリを持ち、開発サーバーにプル/プッシュすることで、Mercurial を使用しています。コミット後にプッシュするのを忘れがちで、3 方向のマージの競合が頭痛の種になる可能性があるため、これが最適なワークフローかどうかはわかりません。現時点では、分散型 VC の複雑さが利点を上回っているため、使用できるより良いワークフローはありますか。
ありがとう
mercurial - Mercurial / Meldの3ウェイマージはどのように機能しますか?
私は、すぐには発見されなかった主要な問題を伴う機能を導入するコミットを持っているプロジェクトに取り組んでいます。それに続く作業を続けながら、そのリビジョンを完全に削除したいのですが、この3ウェイマージに頭を悩ませるのに苦労しています。これが私のプロジェクトの簡略化されたグラフです。
これを正しく理解していれば、r127とr134はまったく同じです。私hg up -C -r 133
が実行するhg merge
と、Meldがポップアップし、私のファイルの1つであるローカル、ベース、その他の3つの形式が表示されます。ローカルはr133のようですが、「ベース」と「その他」の意味に頭を悩ませるのに苦労しています。
svn - subversionとBeyondCompareを使用して、一度に複数のファイルを比較できますか?
だから、私はWindows7を使用してコマンドラインサブバージョンとBeyondCompare3で単純な差分と3ウェイマージを行う方法をうまく理解しました。ありがとう、stackoverflow。
ただし、コミットの合間に変更するファイルがたくさんあります。つまり、htmlファイル、cssファイル、javascriptファイルはすべて同じバグ修正に関連しています。組み込みのsvndiffを使用している場合は、「svn di」と入力するだけで、すべてのファイルのすべてのdiffのリストが表示されます。Beyond Compare 3でこのタイプの機能をトリガーする方法はありますか?
現時点では、「svn di」と入力すると、最初のファイルがBeyond Compareに送信され、変更の確認が完了したら、beyond compareウィンドウを閉じて、差分を終了します。それぞれの名前を手動で入力せずに他のファイルを比較する方法はありません。(そして時々、私が変更したものすべてを思い出せないことがあります...基本的に、それは本当に厄介になります。)
これも可能ですか?もしそうなら、どのように?
ありがとう。
tfs - TFS: ブランチ、ラベル、または棚?
私は TFS にはかなり慣れていませんが、VSS についてはある程度の経験があります。次のシナリオで TFS を使用する最善の方法について、ご意見をお聞かせください。私たちはプロジェクトに取り組んでいる開発者のグループです。すべてのプロジェクトは、共通のベース コードから始まります。すべてのプロジェクトは 1 人だけで行われ、プロジェクトが完了するまでコードの共有はありません。プロジェクトは数時間から数か月続くことがあり、完了するまでコードはマージされません。どの開発者も複数のプロジェクトに同時に取り組んでおり、通常は一度に 7 ~ 10 個のプロジェクトに取り組んでいます。通常、プロジェクトには、変更/作成される少数のファイル (10 ~ 20) のみが含まれますが、頻繁に変更されるインフラストラクチャ ファイルの大規模なグループに依存しています。ただし、インフラストラクチャの変更はマージまで考慮されないため、最終ビルドまでサーバーから最新バージョンを取得しません。
追加のリクエストは、マージ時に 3 方向マージ ツールを使用したいということです。カスタムメイドのアプリケーションを介して VSS でこのアプローチを使用すると、非常にうまく機能します。ただし、これには特別なファイル管理が必要です。たとえば、変更する必要があるすべてのファイルには、元のバージョンがどこかに保存されている必要があります。これは、3 方向マージ プロセスの「ルート」ファイルとして使用されます。
どう思いますか?
git - マージ後に解決されたファイルを自動的に配置する方法
TortoiseGit for Windowsを使い始めましたが、面倒なことがいくつかありました。たとえば、マージ中に競合が発生した場合、次のことを行う必要があります。
- 3ウェイマージを実行します(もちろん...他に選択肢はありません)
- ファイルを解決済みとしてマークします
マージが正常に終了した場合にファイルを解決済みとしてマークする自動方法はありますか?
ポインタをありがとう、
イウリアン
vim - Vimで元に戻す手順をスキップする
ドキュメントの状態Aにいるとしましょう。次に、B、C、Dを(順番に)変更します。
変更BとDを保持しながら、Cをスキップする方法はありますか?
または、ドキュメントの状態Aにいるとしましょう。私は変更Bを行い、それを元に戻し、次にCとDを変更します(したがって、Vimには2つのブランチを持つ元に戻すツリーがあります)。次に、考えを変えて、CではなくBとDを使用することにしました。
Vimでこれを行うにはどうすればよいですか?プラグインをインストールしましたが、gundo.vim
あまり使用していません。
tortoisehg - TortoiseHg 2.0.3 および Beyond Compare 3.2.4 を使用して 3 方向マージを行う方法
3 者間マージが必要な場合に Beyond Compare 3 を起動するように TortoiseHg を設定できますが、比較対象のファイルの名前とバージョンを表示することができませんでした。双方向のファイル比較を行うときに、ファイルの名前とバージョンが表示されます。適切に設定する方法を知っている人はいますか?KDiff3 にも同じ問題があります。
BC サポート サイト ( http://www.scootersoftware.com/support.php?zz=kb_vcs ) の指示に従うと、BC3 が 3 ウェイ マージ ツールとして設定されますが、ファイル名やバージョンは表示されません。
Mercurial 以降の比較 3(bc3) を diff ツールとして使用していますか? 必要なヘルプは、ほとんど質問に答えます。2 方向の比較では機能しますが、3 方向のマージでは機能しません。誰でもこの問題を解決する方法を教えてもらえますか?
visual-studio - ブランチ間でVisualStudioプロジェクトファイル(.csproj)をマージする賢明な方法はありますか?
もう一度、ブランチ間でコードをマージする必要があり、テキストマージツールはプロジェクトファイルで多くの競合を見つけています。
プロジェクトファイル(ファイルの追加/削除およびコンパイルオプションの変更)を理解するツールで、3方向のマージを簡単に実行できると思います。
そのようなツールはありますか?
(良くも悪くも、私たちはさまざまな顧客によって支払われた(そして管理された)長寿の支店と、すべての新規顧客のための「メイン」支店を持っているので、継続的インテグレーションは現在のところオプションではありません。)