問題タブ [branching-and-merging]
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.
git - gitでサブモジュールを使用するための正しいアプローチを見つけようとしています
サブモジュールを git で適切にセットアップしようとしていますが、正しく使用できるようにしたいと考えています。
というメインリポジトリがありますMyProject
。コードで生成されたすべてのデータ アクセスを含むData
. Data
のサブモジュールとしてセットアップしたいMyProject
。
Data
スキーマの変更または小さなバグ修正がない限り、変更されることはめったにありません。
MyProject
スキーマの変更が必要な新しい機能を追加するとします。MyProject
通常、 calledのブランチを作成NewFeature
し、master とマージする準備が整うまで、そこにすべての変更をチェックインします。また、変更がマージされる準備が整うまで、Data
スキーマの変更が分離されたままになるように、ブランチを作成したいと考えています。Master
これに適したワークフローは何ですか、または 1 つでもありますか?
ありがとう!
svn - svnインポートの混乱、トランクには何もありません
トランクなしで既存のsvnリポジトリにトランクディレクトリを作成し、すべてを移動する方法を調べましたが、適用できる可能性がありますが、「トランク」はありますが、その上級開発者がプロジェクトをインポートした方法svn repos に追加すると、レビューに値する違いが得られる場合があります。
ログを見ると、開発者が svn ツリー、trunk/branches/tags
ディレクトリをローカルに作成し、ディレクトリ内のすべてのファイルを作成してから、branches
への最初のインポート時にsvn
、ブランチ コミットの一部としてトランクとタグをコミットしたようです。
これは、ブランチへのコピーの履歴がないことを意味します。ほぼ忠実なログは次のとおりです。
したがってsvn merge
、ここでは実際には機能しません。trunk
は最初のコミットの一部であり、履歴は実際にはクリーン マージを許可していません。
上記のコピーとコミットの提案を使用できますか? または、この場合に必要な別の方法はありますか?
tfs - ベースレスマージなしのTFS2010ホットフィックスブランチ/マージ戦略?
Team Foundation Server 2010でブランチとマージを操作する方法を理解しようとしています。以下の戦略は、Web開発チーム向けです。
私の考えは5つのフォルダーを持つことです。Mainフォルダー、Developmentフォルダー、QAフォルダー、Productionフォルダー、およびHotfixフォルダー。メインフォルダは、メインブランチのみで構成されます。開発者は、メインブランチで直接作業するか、Developmentフォルダーに新しいブランチを作成し、完了したらメインブランチにマージし直します。リリースバージョンを作成する場合は、メインブランチをQA1.0.0ブランチに昇格させます。そのブランチが安定したら、そのブランチをProductionBranch1.0.0に昇格させます。本番ブランチは読み取り専用になり、QAブランチはメインブランチにマージされます。また、QA 1.0.0ブランチを使用して、たとえばホットフィックスをブランチします。したがって、ここでの例は、QAブランチが本番環境に移行した後、いくつかのバグが見つかったというものです。次に、QAブランチ1.0.0をホットフィックス1.0.1ブランチに昇格させます。ホットフィックスブランチが安定したら、プロダクションブランチ1.0.1にプロモートします。Production 1.0.1ブランチで新しいバグが見つかった場合、Hotfix1.0.1ブランチから新しいHotfix1.0.2ブランチを作成します。そのブランチが安定したら、そのブランチをProductionBranch1.0.2に昇格させます。これはすべて、Team FoundationServer2010でうまく機能します。
TFS 2010で適切な方法で解決する方法がわからない場合は、ホットフィックスをメインブランチにプロモートする方法が問題になります。QAブランチ1.0.0とは別の顧客用に別のホットフィックスを作成する必要がある場合があるため、ホットフィックスをQA1.0.0ブランチにマージしたくありません。そのため、Hotfix1.0.1ブランチをメインブランチに直接マージする必要があります。
コマンドラインツールを使用してベースレスマージで解決できることを理解しています。これが唯一の方法ですか?私が達成したいことを解決する方法について他にもっと良い提案はありますか?UIツール?また、私が使用したい分岐/マージ戦略が改善される可能性がある場合は、ご意見をいただければ幸いです。
mercurial - 複数の水銀サブリポジトリへの変更を新しい名前付きブランチにコミットできますか?
複数のサブリポジトリを含むMercurialリポジトリがあります。リポジトリには、リポジトリとサブリポジトリ内のプロジェクトを含むVisualStudioソリューションがあります。
リポジトリ内のメインプロジェクトへの変更と、ソリューション内の依存関係プロジェクトの1つへの変更を必要とする新しい機能を実装したいとします(たとえば、依存関係に新しい共有インターフェイスを追加し、メインプロジェクト)。
次に、変更をコミットしたいのですが、未完成で後でマージされるため、新しい名前のブランチにコミットします。tortoiseHgを使用して、作成する新しいブランチを指定して、リポジトリ内の変更をコミットします。次に、コミットはサブリポジトリの変更をコミットしますが、私のテストでは、リポジトリに新しいブランチを作成せず、現在のブランチに変更セットを追加するだけです。
サブリポジトリへのコミットを明示的に実行し、その時点でブランチ名を指定できますが、リポジトリ全体の変更セット全体を一度に各リポジトリの新しいブランチにコミットして、ワークフローをよりクリーンにする方法を望んでいました。これは可能ですか?
svn - マージに関して、Git が Subversion より優れている点は何ですか?
重複の可能性:
マージ: hg/git と svn
Git と DVCS は一般的に Subversion や集中型バージョン管理システムよりも優れていると聞いたり読んだりしたことがあります。私が聞いた理由の 1 つは、集中型システムよりも DVCS の方がマージがはるかに優れているということです。
マージに関して、2つの違いは何ですか? たとえば、ブランチを再統合する場合、Git が Subversion よりも優れている理由は何ですか?
perforce - perforce は変更セットに固有のデルタを追跡しますか、それともファイル全体を保存するだけですか?
開発者が作業ブランチで行ったいくつかの作業を安定ブランチにマージしようとしました。ファイル a、b、および c は、STABLE ブランチと HEAD ブランチの共通の祖先が分離されて以来、少なくとも 12 個の変更セットによって変更されていました。
この開発者はファイル a、b、c のそれぞれで 5 行を変更したので、HEAD から STABLE ブランチに統合すると、保留中の変更セットに彼の変更を取得し、それを確認してコミットできると予想していました。
代わりに、ファイル A に発生したすべての変更を取得しているように見えます。これは、2 つのファイルが分岐していたため、同僚の作業コピーにも存在していたすべての変更を適用したためです。
言い換えれば、私の同僚が実際に変更したものと、以前のファイルに含まれていたものの記録が、perforce チェンジセットにはないようです。
送信された変更セットを参照すると、同僚のバージョンのファイルと直前のバージョンの違いがわかります。しかし、それでは、何がマージされるかが決まるわけではないようです。
変更セットとは、「ファイルのリビジョン X とリビジョン X+1 の間で行われた一連の変更」という意味ではありませんか? 実際、Perforceは変更を追跡するのではなく、ファイルを追跡しているように見えるのに、「変更セットを統合する」とはどういう意味かを理解するのを手伝ってくれる人はいますか?
私がすべて間違ったことをしている可能性は十分にあり、Perforceの作業ブランチと安定したブランチの間で、統合したくないものなしで正確かつ安全にマージできる方法についてのポインタをいただければ幸いです。安定したブランチが統合されています。製品に実際に加えられた変更がどれほど単純であっても、マージは実際には機能しないようです。
svn - SVN:2つのブランチをマージする
複数の開発者がプロジェクトに取り組んでいます。分岐の機能分岐方式を採用しており、以下を実行します。
- すべてのメンテナンス作業とバグ修正はトランクで行われます
- すべての新機能は新しいブランチで実行されます
- ブランチは定期的に更新されます(トランクからブランチへの変更をマージすることにより)
ただし、2つのブランチ[feature-branch-1とfeature-branch-2と呼びます]をマージする必要があるという状況に遭遇しました。これを達成するための最良の方法は何ですか?私の一部は、新しいブランチを作成する必要があると考えています。次に、そのブランチを最初の機能ブランチ[feature-branch-1]とマージします。次に、2番目の機能ブランチ[feature-branch-2]とマージして、競合(ほとんどの場合プロジェクトファイル)を処理します。
もっと良い方法はありますか?
みんなありがとう!
svn - Subversion と TortoiseSVN を使用して、ローカルのアクション履歴をどのようにクリアしますか?
- ファイルの変更をブランチからトランクブランチにマージします。
- 競合を誤って解決してしまったので、最初からやり直したいので、トランク ファイルを元の状態に戻します。
- 手順 1 をやり直しますが、何も起こりません。マージ ウィンドウでログを確認すると、このファイルにマージするすべてのブランチがグレー表示されています。これは、TortoiseSVN が私に「これらの変更は既にこのファイルにマージしています。2 回目にマージする必要はありません」と伝える方法です。
何もコミットされていないため、これはクライアント側の問題である必要があります。クリーンアップを試みましたが、役に立ちませんでした。
git - Git - 削除をマージしないでください
ファイルのあるブランチdevelop
があります:
- index.php
- test.php
そこからブランチを作成release
し、バージョンを設定し、小さなバグ修正などを行い、本番リリースに含まれないtest.php を削除します。次に、このブランチをマージしたいが、test.phpを開発ブランチdevelop
に保持したい。どうやってするの?ファイルを削除するだけのデフォルトの動作。git merge
svn - svn -- 最後のマージからの時間
「最後のマージからの時間」レポートが必要です。他のブランチからの変更が統合される単一のブランチがあります。全員の同期を維持するために、ブランチ マスターは統合ラインからそれぞれのブランチへのマージを実行することをお勧めします。
私は、統合行でコミットが行われるたびにレポートを送信するコミット後のフックに取り組んでいます。
- ソース ブランチ
- 統合と他のブランチ間の最後のマージからの時間
svn mergeinfo が出発点ですが、この情報を取得するのに役立つ他のコマンドは何ですか?