ここでは VisualSVN と TortoiseSVN を使用します。
ファイルの名前を変更しました。履歴が消去される可能性があることを意味する追加と削除と表示されていることに気付きましたか?
Subversionで履歴を失うことなくファイルの名前を変更する最良の方法は何ですか?
ここでは VisualSVN と TortoiseSVN を使用します。
ファイルの名前を変更しました。履歴が消去される可能性があることを意味する追加と削除と表示されていることに気付きましたか?
Subversionで履歴を失うことなくファイルの名前を変更する最良の方法は何ですか?
履歴は消去されませんが、2 つの無関係なファイルのように見えるため、履歴トレースが失われます。
ファイルまたはフォルダーの単純なインプレース名前変更を行う場合は、コンテキスト メニュー → 名前の変更... を使用して、項目の新しい名前を入力すれば完了です。
ファイルの名前変更の修復
使いやすい IDE がリファクタリングの一環としてファイルの名前を変更することがありますが、もちろん Subversion には通知されません。変更をコミットしようとすると、Subversion は古いファイル名が見つからないと見なし、新しいファイル名をバージョン管理されていないファイルと見なします。新しいファイル名を確認して追加することもできますが、Subversion はファイルが関連していることを認識しないため、履歴トレースが失われます。
より良い方法は、この変更が実際には名前の変更であることを Subversion に通知することです。これは、コミットおよび変更の確認ダイアログ内で行うことができます。古い名前 (行方不明) と新しい名前 (バージョンなし) の両方を選択し、コンテキスト メニュー → [移動の修復] を使用して、2 つのファイルを名前の変更としてペアリングします。
他にも多くのケースがカバーされています。
アップデート
次のように、Subversion が名前変更であることを認識しない場合、履歴は失われます。
ファイル履歴を保持するには、コンテキスト メニュー (またはコマンド ライン) から [名前の変更] オプションを使用する必要があります。すでにファイルの名前を変更している場合:
したがって、再開するには、コミット ダイアログに追加された (+)は履歴が保持されることを意味し、追加された場合は履歴が失われることを意味します。どちらの場合も、古いファイル名はdeletedとして表示されます。
更新 2
履歴が失われたと言う場合、以前の情報はまだ存在しますが、現在のファイル名のログには存在しないことを理解してください。手動で追跡する必要があります (これはあまり楽しいことではありません)。 .
ファイルを右クリック > TortoiseSVN > 名前を変更します。
TortoiseSVN のコンテキスト メニューから名前を変更しても、履歴は消去されません。名前を変更する前からの変更を確認したい場合は、変更ログを確認するときに --stop-on-copy フラグを使用しないでください。
svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH
or
svn log -v -r M:N [--stop-on-copy] PATH
参考までにこちらをご覧ください: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-cli-main.html
ファイルの履歴は消去されません。以前のコミットは影響を受けません。ただし、svn move
ファイルを適切に移動するために使用できます。
移動や名前の変更などのファイル操作には、通常、TortoiseSVN Repo Browserを使用してから、ローカルの SVN Update を使用することを好みます。もちろん、これは、操作をすぐにリポジトリにコミットする場合にのみ適切です。
Subversion でファイルの名前を変更すると、履歴付きの削除と追加が発生することが予想されます。履歴は失われません。
VisualSvn と AnkhSvn はどちらも、ファイルの名前が変更されている Visual Studio からのイベントをキャプチャし、正しいことを行います。