14

ここでは VisualSVN と TortoiseSVN を使用します。

ファイルの名前を変更しました。履歴が消去される可能性があることを意味する追加と削除と表示されていることに気付きましたか?

Subversionで履歴を失うことなくファイルの名前を変更する最良の方法は何ですか?

4

6 に答える 6

24

履歴は消去されませんが、2 つの無関係なファイルのように見えるため、履歴トレースが失われます。

TortoiseSVN ドキュメントから:

ファイルまたはフォルダーの単純なインプレース名前変更を行う場合は、コンテキスト メニュー → 名前の変更... を使用して、項目の新しい名前を入力すれば完了です。

ファイルの名前変更の修復

使いやすい IDE がリファクタリングの一環としてファイルの名前を変更することがありますが、もちろん Subversion には通知されません。変更をコミットしようとすると、Subversion は古いファイル名が見つからないと見なし、新しいファイル名をバージョン管理されていないファイルと見なします。新しいファイル名を確認して追加することもできますが、Subversion はファイルが関連していることを認識しないため、履歴トレースが失われます。

より良い方法は、この変更が実際には名前の変更であることを Subversion に通知することです。これは、コミットおよび変更の確認ダイアログ内で行うことができます。古い名前 (行方不明) と新しい名前 (バージョンなし) の両方を選択し、コンテキスト メニュー → [移動の修復] を使用して、2 つのファイルを名前の変更としてペアリングします

他にも多くのケースがカバーされています。

アップデート

次のように、Subversion が名前変更であることを認識しない場合、履歴は失われます。

  • 古いファイル名はaa.txtで、手作業でbb.txtにリネームされています
  • 新しいファイル名bb.txtが subversion に追加されます
  • コミット ダイアログでは、aa.txt欠落していると表示され、削除済みとしてマークすることができ、bb.txtが追加済みとして表示されます。
  • その結果、履歴が失われ、コンテキスト メニューのSVN 表示ログにはbb.txtのみが表示されます。

ファイル履歴を保持するには、コンテキスト メニュー (またはコマンド ライン) から [名前の変更] オプションを使用する必要があります。すでにファイルの名前を変更している場合:

  • 古いファイル名cc.txtが欠落していると表示されます
  • [バージョン管理されていないファイルを表示] オプションをオンにして、バージョン管理されていないとマークされた新しいファイル名 dd.txt を確認します
  • 両方のファイル名を選択し、コンテキスト メニューから [移動の修復] を選択します。これにより、 cc.txtが削除済みとしてマークされ、dd.txtが追加済み (+)としてマークされます。
  • コミット後、履歴は保持され、[コピー/名前変更時に停止] オプションをオフにすると、ログに両方のファイル名が表示されます。

したがって、再開するには、コミット ダイアログに追加された (+)は履歴が保持されることを意味し、追加された場合は履歴が失われることを意味します。どちらの場合も、古いファイル名はdeletedとして表示されます。

更新 2

履歴が失われたと言う場合、以前の情報はまだ存在しますが、現在のファイル名のログには存在しないことを理解してください。手動で追跡する必要があります (これはあまり楽しいことではありません)。 .

于 2010-02-03T21:07:45.103 に答える
10

ファイルを右クリック > TortoiseSVN > 名前を変更します。

于 2010-02-03T21:04:55.160 に答える
5

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

于 2010-02-03T21:07:16.993 に答える
3

ファイルの履歴は消去されません。以前のコミットは影響を受けません。ただし、svn moveファイルを適切に移動するために使用できます。

于 2010-02-03T21:03:53.193 に答える
1

移動や名前の変更などのファイル操作には、通常、TortoiseSVN Repo Browserを使用してから、ローカルの SVN Update を使用することを好みます。もちろん、これは、操作をすぐにリポジトリにコミットする場合にのみ適切です。

于 2010-02-04T10:16:06.137 に答える
0

Subversion でファイルの名前を変更すると、履歴付きの削除と追加が発生することが予想されます。履歴は失われません。

VisualSvn と AnkhSvn はどちらも、ファイルの名前が変更されている Visual Studio からのイベントをキャプチャし、正しいことを行います。

于 2010-02-03T22:41:29.477 に答える