Subversionリポジトリがあり、ファイルシステム操作を使用してSubversionリポジトリ内のファイルが1つのフォルダから別のフォルダに移動した結果、Subversionが削除および追加されたことがわかりました。予想どおり、ファイルの履歴は新しい場所に引き継がれませんでした。この誤って行われた移動を、履歴がコピーされる真のsvn mvに変換することは可能ですか?問題は、コミットがしばらく前に行われ、このコミットに加えていくつかのコミットがあったことです。したがって、単純な逆マージと適切な移動はオプションではありません。
質問する
118 次
1 に答える
4
リポジトリに直接アクセスできると仮定して、それをダンプしてリロードできると仮定することは可能です。
要するに、手順は次のとおりです。
- リポジトリをダンプします。.
- ダンプを変更します (以下を参照)。
- 新しいリポジトリを作成します。
- 変更されたダンプを新しいリポジトリにロードします (ダンプを既存のリポジトリにロードしてもコンテンツは置き換えられませんが、実際には追加されます。
- 変更を確認します。
- 古いリポジトリを新しいリポジトリに置き換えます。リポジトリをダンプし、ダンプを変更し、リポジトリを削除、再作成、およびロードする必要があります。
必要なダンプファイルの変更
ダンプファイルでの間違った移動操作は次のようになります。
Revision-number: 2
Prop-content-length: 111
Content-length: 111
K 7
svn:log
V 13
Wrong rename.
K 10
svn:author
V 3
tom
K 8
svn:date
V 27
2012-11-22T22:11:49.101403Z
PROPS-END
Node-path: renamed file.txt
Node-kind: file
Node-action: add
Prop-content-length: 10
Text-content-length: 8
Text-content-md5: 226648ec2921fddba76a340ac976f760
Text-content-sha1: 18cc7289b71fd17898ca179dcb3a05f3d2a07e8b
Content-length: 18
PROPS-END
Content!
Node-path: file.txt
Node-action: delete
さらに読むには、ダンプファイルの仕様Node-action: add
を確認する価値がありますが、問題に関連するエントリのセットはごくわずかNode-action: delete
です。必要なのは、次のようにダンプを変更することだけです。
Revision-number: 2
Prop-content-length: 111
Content-length: 111
K 7
svn:log
V 13
Right rename.
K 10
svn:author
V 3
tom
K 8
svn:date
V 27
2012-11-22T22:13:51.674043Z
PROPS-END
Node-path: renamed file.txt
Node-kind: file
Node-action: add
Node-copyfrom-rev: 1
Node-copyfrom-path: file.txt
Text-copy-source-md5: 226648ec2921fddba76a340ac976f760
Text-copy-source-sha1: 18cc7289b71fd17898ca179dcb3a05f3d2a07e8b
Node-path: file.txt
Node-action: delete
したがって、交換する必要があります
Prop-content-length: <a>
Text-content-length: <b>
Text-content-md5: <md5>
Text-content-sha1: <sha1>
Content-length: <e>
と
Node-copyfrom-rev: <correct revision>
Node-copyfrom-path: <correct path>
Text-copy-source-md5: <md5>
Text-copy-source-sha1: <sha1>
ファイルの実際のコンテンツを削除します。
アクションはdelete
相変わらず。
于 2012-11-22T22:32:51.203 に答える