プロジェクトで行った開発の一部はデプロイできず、別のブランチで行う必要がありました。(tortoise の「このリビジョンからの変更を元に戻す」と慎重な編集を介して) 後方の変更をマージし、別のブランチにあるはずだった作業を元に戻し、この逆パッチをトランクにコミットしました。前述のパッチで元に戻された変更を含むブランチを作成したいと思います。これが私がしたことです:
元に戻すリビジョンの前のリビジョンで、新しい開発用の新しいブランチを作成しました。
tortoise SVN で一連のリビジョンをマージすることにより、元に戻すリビジョンを新しいブランチにマージしました。
変更ログを開き、[マージされたリビジョンを含める] と [このリビジョンからの変更を元に戻す] を選択しました。これにより、作業コピーのこれらの変更が元に戻りました。これが、ブランチがどのようになりたいかです。これらの変更をコミットしました。このコミットは、「マージされたリビジョンを含める」の下に元に戻すパッチをリストします。そうすべきだとは思いません。ここに問題があるようです。鍵はおそらく、このパッチ (逆二乗、または元の変更の積) を作成するために実行された操作を Subversion が認識しないように記録することです。
次に、同じ方法 (さまざまなリビジョンのマージ) を使用して、トランクからのすべての変更を新しいブランチにマージしました。これには元の取り消しパッチが 2 回含まれており、私のブランチはトランクと同じになりました (マージされたリビジョンとして 3 回リストされています)。これは望ましい結果ではありません。
<編集 - 解決策>
以下は望ましい動作であり、正しく動作します。
最初に、フォルダ タグ、トランク、ブランチを含む空のリポジトリを作成しました。トランクで、コンテンツ (rev1) を含むファイル file.txt を作成しました。
one
two
three
次に、ファイルを編集して
one
two_edit
three
そしてチェックイン(rev2)。次に、ログで rev2 を選択し、このリビジョンから変更を元に戻すを選択して (rev3) にチェックインしました。ファイルは次のようになります。
one
two
three
次に、 rev3から branch\b1 へのトランクのブランチを作成しました(rev4、was5。この手順では両方を行います)。ブランチ\b1 では、ファイルは次のようになります。
one
two
three
次に、trunk からの rev2 を、祖先 (rev5) を無視してブランチ/b1 に逆マージします。ブランチは次のようになりました。履歴に同様のものが含まれているのはまったくの偶然です。
one
two_edit
three
トランク (rev6) を次のように編集します。
one
two
three
four
トランクからのすべての変更をブランチ/b1 (rev7)にマージします。branch/b1 は次のように正しく表示されるようになりました:
one
two_edit
three
four
</編集 - 解決策>
<編集>
どのように機能するか
以下は望ましい動作であり、イタリック体の手順を次のように実行すると正しく機能します。
最初に、フォルダ タグ、トランク、ブランチを含む空のリポジトリを作成しました。トランクで、コンテンツ (rev1) を含むファイル file.txt を作成しました。
one
two
three
次に、ファイルを編集して
one
two_edit
three
そしてチェックイン(rev2)。次に、ログで rev2 を選択し、このリビジョンから変更を元に戻すを選択して (rev3) にチェックインしました。ファイルは次のようになります。
one
two
three
次に、rev2 から branch\b1 (rev4) へのトランクのブランチを作成しました。ブランチ\b1 では、ファイルは次のようになります。
one
two_edit
three
次に、rev3 をトランクから branch\b1 (rev5) にマージすると、ブランチは次のようになります。
one
two
three
この時点で分岐しているかのように、分岐 3 (rev6) を編集します。歴史に似たようなものが含まれているのは、まったくの偶然です。
one
two_edit
three
トランク (rev7) を次のように編集します。
one
two
three
four
トランクからのすべての変更をブランチ/b1 (rev8)にマージします。branch/b1 は次のようになります。
one
two_edit
three
four
それはどのように機能しますか
以下は実際の動作です。イタリック体のステップが実行されると、正しく機能しません。これは、遡及分岐の複雑さのために必要です。エラーは最終ステップの 2 行目にあります。
最初に、フォルダ タグ、トランク、ブランチを含む空のリポジトリを作成しました。トランクで、コンテンツ (rev1) を含むファイル file.txt を作成しました。
one
two
three
次に、ファイルを編集して
one
two_edit
three
そしてチェックイン(rev2)。次に、ログで rev2 を選択し、このリビジョンから変更を元に戻すを選択して (rev3) にチェックインしました。ファイルは次のようになります。
one
two
three
次に、rev2 から branch\b1 (rev4) へのトランクのブランチを作成しました。ブランチ\b1 では、ファイルは次のようになります。
one
two_edit
three
次に、rev3 をトランクから branch\b1 (rev5) にマージすると、ブランチは次のようになります。
one
two
three
ブランチ\b1 で、ログで rev5 を選択し、このリビジョンから変更を元に戻すを選択して (rev6) にチェックインしました。ファイルは次のようになります。
one
two_edit
three
トランク (rev7) を次のように編集します。
one
two
three
four
トランクからのすべての変更をブランチ/b1 (rev8)にマージします。branch/b1 は次のようになります。
one
two
three
four