1

SVNが設定されたとき、トランクからブランチを作成する代わりに、ルート構造に新しいフォルダーを作成しただけです。

/branches/dev/  
/trunk

それに取り組みました。もちろん、SVNは階層接続を認識しないため、devをトランクにマージすることはできません。私はそれを適切にするための最良の方法を見つけようとしています。そうすれば、コードを含むdevブランチがトランクに関連し、将来的に通常のマージを実行できるようになります。

私は2つのアプローチを見つけました。そのうちの1つは、コードをdevからトランクにコピーし、トランクをコミットしてから、適切なブランチチェックアウトを実行するだけです。このアプローチでの私の問題は、実際のdevブランチが最初から新しくなるため、すべてのリビジョン履歴が失われることです。

他のアプローチは、-ignore-hierarchyを使用することです。これはトランクに物を押し込むように見えますが、このアプローチの欠点はわかりません。

基本的に、トランクを分岐するのではなく、自分でdevフォルダーを物理的に作成したときに、最初から失敗を修正するための最良の方法は何ですか?

4

1 に答える 1

1

そのブランチをトランクにマージできないのはなぜですか?

Subversion(および他のすべてのrc)内でブランチなどを維持するためのさまざまな方法があります。直感的に設定できるのは、従来の方法です。フォルダーを作成し、ブランチ/トランク/タグ間のフォルダーリビジョン間の違いをコピーします。階層内のノードをsvnするのはフォルダーに他ならないので、これは機能します。svnには特別な魔法はありません。

Subversionは、時間軸が追加されたファイルシステムに他なりません。

したがって、あなたがしなければならないのは、ブランチノードにコミットした変更(リビジョン)をトランクにマージすることだけです。

svn merge -r <start>:<current> https://<server>/<repo>/<path>/branches/dev <trunk-checkout>

(つまり、ブランチに最初にトランクのリビジョンが含まれていた場合。ただし、他に言わなかったので、含まれていると思います。トランクから完全に独立している場合、なぜブランチと呼ばれるのですか?さらに重要なのは、なぜですか?トランクにマージしますか?)


更新2013-01-26:

話し合いの結果、この状況には空のトランクが含まれ、データが入力されたり使用されたりすることはなかったため、ブランチからの変更をマージするものは何もないことが明らかになりました。代わりに、開発全体が「ブランチ」と呼ばれるもので始まり、実際にはこのプロジェクトの唯一の「トランク」として機能しました。

したがって、ソリューションは次のようになります。この場合、現在ブランチと呼ばれているものをプロジェクトトランクに移動し、その新しい(より適切な)名前で開発を続行します。開発は、新しいチェックアウト内で、または既存のチェックアウトをリベースすることによって行われます。今後、ブランチは以下のように使用する必要があります。したがって、不適合な名前を修正し、プロジェクトの一般的な表現と一致するように現在の状況を調整します。

  • トランクは、開発の「メイン」ラインが行われるか統合される場所です
  • トランクは、ブランチ内からの開発が再びマージされる場所です
  • 特定の時点でトランクをフォークすることにより、いくつかのブランチが作成される場合があります
    • これらのブランチ内では、複雑な開発を、干渉することなくトランクへの他の変更と一緒に実装できます。
    • これらのより複雑な開発が行われ、新しい機能またはアーキテクチャが安定した(「準備ができている」)と、ブランチからの変更をトランクにマージして戻すことができます。
于 2013-01-20T10:20:36.177 に答える