4

別のアプリケーションで管理されているいくつかのファイルで Subversion を使用しています。ファイルの名前を変更したいのですが、独自のメタデータを正しく更新するには、アプリケーション内から名前を変更する必要があります。つまり、単純に SVN のrenameコマンドを使用することはできません — アプリケーションのメタデータに一貫性がなくなります。

renameでは、このアプリケーションによって作業コピー内のファイルの名前が変更されたことを SVN に伝えるにはどうすればよいでしょうか。コマンドと同じ方法で履歴が保存されるのでしょうか?

4

4 に答える 4

7

環境を指定しませんが、Windowsを使用している場合、TortoiseSVNは、あまり知られていない非常に洗練されたソリューションを提供します。アプリケーションでSuiteSetup-Rev2.csに名前を変更したファイルSuiteSetup.csがあるとします。

TortoiseSVNのコンテキストメニューの[コミット]または[変更の確認]ダイアログで、古い名前(missingステータスを表示)と新しい名前(non-versionedステータスを表示)を選択し、コンテキストメニューを開いて[移動の修復]を選択します(参照:ファイルの名前変更の修復)。図に示すように、TortoiseSVNはすべての簿記の修正を行い、これらをリンクされた削除と追加のペアに変換します。これは、名前の変更または移動の表示方法です。

[ Simple-Talk.comで公開されている私のTortoiseSVNおよびSubversionクックブック、パート2から採用。これを書いている時点で、パート8はまもなく公開されます。]

ファイル移動の修復

于 2012-09-07T22:33:52.177 に答える
1

次のようなものを使用して、事後に「レコードのみ」の名前変更をシミュレートできます

rename newname oldname
svn rename oldname newname

これにより、アプリケーションがファイル内で行った可能性のある変更は保持されますが、svn は "oldname" と "newname" の履歴を関連付けることができます。

于 2012-09-07T13:12:11.310 に答える
0

現在のSVNではできないと思います。svn renameコマンドの理由は、実際には、対応するメタデータを準備できるように、名前変更の内容をsvnに通知する必要があるためです。

svnが名前の変更(gitなど)を「推測」するように設計を変更するか、メタデータの更新のみを実行するレコードのみの名前変更コマンドを提供しない限り(アプリケーションが実際に行った名前の変更を把握し、対応するコマンドを発行する必要があります) 。ただし、この機能はどちらも使用できず、少なくとも近い将来には発生しない可能性があります。

于 2012-09-07T03:37:04.160 に答える
0

私が知っているように、SVN cli にはこの機能がありませんが、SmartSVN にはあります (2 つのファイルを選択して [移動] を押します)。

于 2012-09-07T12:31:37.900 に答える