問題タブ [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.
version-control - チーム エクスプローラーを使用して、最初のベースレス マージ後に 2 つのブランチ間の変更をマージできますか?
TFS での根拠のないマージについての私の理解では、それは 1 回限りの取引であり、その後のマージは根拠のないものでなくても行うことができるというものでした。
からhttp://msdn.microsoft.com/en-us/library/bd6dxhfy(VS.80).aspx
/baseless - ベース バージョンなしでマージを実行します。つまり、マージ関係のないファイルとフォルダをマージすることをユーザーに許可します。根拠のないマージの後、マージ関係が存在し、将来のマージは根拠のないものである必要はありません。
ただし、今晩、次の設定で試しました。
コマンドは正常に実行され、ファイルはマージされました。ただし、ソース管理エクスプローラーに戻り、Dev ブランチで右クリックしてマージを選択すると、QA はオプションではなく、トランクのみが選択されます。
それで、私はドキュメントを誤解しましたか?彼らが実際に言ったことは、常にコマンドラインで実行する必要があり、/baseless スイッチを含める必要はなかったということでしたか?
database - DataSet を使用して、あるデータベースから別のデータベースにデータを転送するにはどうすればよいですか?
いつものように、最初にいくつかの背景情報を示します。
データベース A (Access データベース) - 2 つの列だけから必要な情報を含むテーブルを保持します。これら 2 つの列からの情報は、データベース A にアクセスできないユーザーが使用するアプリケーションに必要です。
データベース B (Access データベース) - 2 つの列のみを含むテーブルを保持します (テーブル A から必要なものへのミラー)。データベース B には、アプリケーションのすべてのユーザーがアクセスできます。1 つの問題は、列名の 1 つがデータベース A のテーブルと同じではないことです。
私がしなければならないことは、たとえば週に 1 回、自動的に実行されるユーティリティを介して必要なデータを転送することです (2 つのデータベースは完全に同期している必要はなく、単に閉じるだけです)。転送ユーティリティは、(明らかに) 両方のデータベースにアクセスできるユーザー アカウントから実行されます。
これが私が取ったアプローチです(より良い方法がある場合は、提案してください):
データベース A からデータを取得します。これは、必要なテーブルの 2 つの列だけです。
DataReader オブジェクトと WriterStream オブジェクトを使用して、データを [tablename].txt ファイルに書き出します。これを行ったので、schema.ini ファイルを使用して、データ列がデータベース B にあるものと同じ名前になるように強制できます。
データベース B のテーブルをミラーリングする DataTable を含む DataSet オブジェクトを作成します。
Microsoft.Jet.OLEDB.4.0 プロバイダーを使用して、テキストの拡張プロパティ hdr=yes および fmt=delimited を使用して、.txt ファイルから DataTable に情報を吸い込みます (schema.ini ファイルのセットアップ方法と .txtファイルのセットアップ)。DataAdapter を使用して DataTable を埋めています。
データベース B のテーブルをミラーリングする DataTable を含む別の DataSet オブジェクトを作成します。
データベース B からの情報を吸い込み、データベース A から更新する必要がある、テーブル内にある現在のデータがすべて含まれるようにします。ここでも、DataAdapter を使用してこの DataTable に入力しています (ステップ 5 とは別のものです。どちらも異なるデータ ソースを使用しています)。
データベース A (技術的には .txt ファイル) からのデータを保持する DataTable をマージします。
変更内容でデータベース B のテーブルを更新します。
データベース B との通信を担当する DataAdapter の更新、削除、および挿入コマンドを手動で作成しました。ただし、DataSet-From-Database-B.Merge(Dataset-From-TxtFile[tableName] ) HasChanges フラグを反転しません。これは、DataSet-From-Database-B.Update がコマンドを起動しないことを意味します。
DataSet-From-TxtFile からデータを取得して、私が使用している方法を使用してデータベース B にマージして適用する方法はありますか? ここで重要なステップを見逃していますか?
データベース B のテーブルからすべてのレコードをいつでも削除してから、テキスト ファイルからすべてのレコードを挿入できることはわかっています (DataSet 内の各レコードをループして、row.SetAdded を適用して HasChanges フラグを確実にトリガーする必要がある場合でも)。 、しかし、毎回変更のみを適用したいと思います。
私は c# と 2.0 Framework を使用しています (これは、1 つのテーブルしか扱っていないため、DataSet と DataAdapter の代わりに DataTable と TableAdapter を使用できることを意味します)。
ティア
windows - WindowsのMercurialでどのマージツールを使用する必要がありますか?
私はMercurialから始めたばかりで、私がすべきことの1つは、マージツールを選択することです。そのためにWinMergeを使うことを考えていましたが、特にこれを選択する方法が見つかりません。他のすべてのマージツールのリファレンスはありますが、WinMergeのリファレンスはありません。
したがって、WinMergeを使用する必要がありますか、それともそのジョブに適したツールがあります(Windowsを使用していることを忘れないでください)。
sql - Oracle: UPSERT の方法 (テーブルへの更新または挿入?)
UPSERT 操作は、データに一致する行がテーブルに既に存在するかどうかに応じて、テーブル内の行を更新または挿入します。
Oracle には特定の UPSERT ステートメントがないため、これを行う最善の方法は何ですか?
svn - subversion マージ削除コマンド
トランクを機能ブランチにマージすると、トランクで発生した削除が作業コピーに複製されません。
マージ時にトランクの削除がブランチの同じファイルを削除しないのはなぜですか? Subversion 1.5 のクライアントとサーバーを使用しています。
ブランチを再統合するときに、ブランチ内のファイルへの変更はスキップされると思いますか?
同僚が「準備ができていない」という理由だけでトランクからファイルを削除したため、トランクでファイルを引き換える最良の方法は何ですか。
状況:
そのため、ファイルがアクティブに削除されたトランクにマージしているにもかかわらず、ファイルはまだ作業コピーに存在します。非常に予想外です。私の場合、ファイルに変更を加えていません。これが、svnがファイルを保存する理由を考えることができる唯一の理由です。
svn - Tortoise SVN はファイルをブランチ間で異なるものとしてマークしますが、違いはありません
したがって、私のプロジェクトには、すべての開発変更を行うトランクがあります。また、別の部門に対応するためにパラメーターをわずかに変更したブランチもあります。バッチで作業し、トランクへの一連の変更が完了したら、ブランチに切り替えて、すべての適切なリビジョンをマージします。これはしばらく続いていますが、奇妙な動作に気付きました。リビジョン グラフを開いて 2 つのヘッド リビジョン (トランクとブランチ、リポジトリ ブラウザーを使用してこれを行うこともできます) を比較すると、2 つの間で異なるすべてのファイルのリストが表示されます。問題は、いくつかのファイルをダブルクリックすると、実際にはファイルにテキストの違いがないことです。違いはないと思われますが、そうあるべきです」それを異なるものとしてマークしませんか?これにより、「変更されたファイル」ダイアログに多数のファイルが表示されるため、両方のブランチを監査して相違点を追跡することが難しくなっています。
私が気づいたいくつかのこと:
2 つのファイル間でリビジョン番号が異なります (予想どおり)。
ブランチをマージしてから比較することで、テスト リポジトリでこの問題を再現しようとしましたが、問題なく動作しました (違いはありません)。
- 私は当初、これは svn:mergeinfo プロパティの違いに関係があるのではないかと考えていましたが、もうよくわかりません。
どんな助けでも大歓迎です。
python - 2 つの Python イテレータをマージするにはどうすればよいですか?
listaとitertools.countobject (つまり、無限値ジェネレーター) の2 つの反復子があります。これら 2 つをマージして、2 つの yield 値を交互に返すイテレータを作成したいと思います。
これを行う最も簡単で簡潔な方法は何ですか?
mercurial - Mercurial で後方マージを取り消す
苦痛で死なずに、極性化された枝へのマージの影響をどのように元に戻すことができますか?
この問題は何ヶ月も私を悩ませてきましたが、ついにあきらめました.
2 つの名前付きブランチを持つ 1 つのリポジトリがあります 。AとB。
A に発生する変更は、必然的に B にも発生します。
B で直接発生する変更は、A で発生してはなりません。
このような構成では、「B」を「A」にマージすると、B へのすべての変更が A で行われたかのように A に表示されるため、リポジトリで悲惨な問題が発生します。
この状況から回復する唯一の「通常の」方法は、マージを「バックアウト」することです。つまり、次のようになります。
後で正しい方向にマージすることを決定するまでは、これはすべて問題なくダンディに見えますが、あらゆる種類の厄介なことが発生し、特にブランチ B で消去/コメントアウトされたコードが突然消去またはコメント解除されます。
これまでのところ、「それをやらせてから、すべての問題を手作業で修正する」以外に、これに対する実用的な解決策はありませんでした。
問題を明確にする画像を次に示します。
【原画消失】
ファイル C & E (または変更 C & E ) は、ブランチ a ではなく、ブランチ b にのみ表示される必要があります。ここのリビジョン A9 (ブランチ a、revno 9) が問題の始まりです。
リビジョン A10 と A11 は、「バックアウト マージ」フェーズと「バックアウト マージ」フェーズです。
また、リビジョン B12 は水銀的であり、ドロップしないように意図された変更を誤って繰り返しドロップしています。
このジレンマは多くのフラストレーションと青煙を引き起こしました。私はそれを終わらせたいと思っています。
ノート
フックまたはポリシーのいずれかを使用して、リバース マージが発生しないようにすることが明らかな答えかもしれません。必然的にそれが起こると仮定して、それが起こったときにそれを解決できるようにします.
詳しく説明する
モデルでは、個別のファイルを使用しました。これらは問題を単純にします。これらは、別の行になる可能性のある任意の変更を表すだけです。
また、怪我に侮辱を加えるために、ブランチ A に実質的な変更があり、「ブランチ A の変更が、変更のように見える (そしてバックアウトされた) ブランチ B の変更と競合する」という問題が残ります。代わりにブランチ A で "
履歴書き換えのトリックについて:
これらすべての遡及ソリューションの問題は次のとおりです。
- 9000 件のコミットがあります。
- したがって、新たにクローニングするには30分かかります
- リポジトリの不良クローンがどこかに1 つでも存在すると、元のリポジトリに再び接触して、再びすべてをぶち壊す可能性があります。
- 誰もがこのリポジトリを既に複製しており、進行中のコミットで数日が経過しました。
- そのようなクローンの 1 つがたまたまライブ サイトであるため、「それを消去してゼロから始める」=「ビッグ ノノ」
(上記の多くは少しばかげていることは認めますが、私の制御の範囲外です)。
実行可能な唯一の解決策は、人々はすべて間違ったことをする可能性があり、そうするであろうこと、そしてこの間違いを「元に戻す」方法があることを前提とするものです。
git - git:リモートから別のパスにコミットをマージする方法は?
リモート foo を含む git リポジトリがあります。
foo は Web アプリで、いくつかのファイルとディレクトリがルートに直接含まれています。
私のメインの git リポジトリは、この Web アプリを構成するより大きなシステムです。コミットを foo から取得したいのですが、ファイルをディレクトリ内に配置する必要がありますweb。したがって、それらは 、 などになるはずweb/appですweb/public。
サブモジュールとして foo を使用したくありません。foo をメイン リポジトリにマージしてから削除したいと考えています。