1

次のシナリオを考えてみてください:
1. ユーザー A がファイル (file1.txt としましょう) を作成してコミットします。
2. ユーザー B がこのファイルをリポジトリから削除します。
3. ユーザー A はローカルの作業コピーにファイルを持っており、それを復元したいと考えています。ユーザーは、実行後にそれを発見しますUpdate()

これを達成する適切な方法は何ですか?

これまでのところ、私は試しました:
-Client.Revert()続いてUpdateいますが、変化は見られません。
――Client.Merge(local_working_copy, SvnUriTarget_of_repository, revision_range_between_the_previous_and_new)それでも変わらない。
ここでClient.DiffMerge()、ターゲット パスはファイルのローカル パス、merge_from は以前のリビジョン番号のリポジトリ内のパス、merge_to は新しいリビジョンのローカル パスです。- ファイルがバージョン管理されていないという例外が発生します。ローカルに存在しないため、追加できません。ターゲット パスをリポジトリ パスに置き換えると、これは作業コピーではないという例外が発生します。

助けてください、
ノア

4

2 に答える 2

2

マージを元に戻すため、リビジョン プロパティを元に戻す必要があります。SvnRevisionRangeつまり、 likeを作成する必要があります。

new SvnRevisionRange(newRevision, oldRevision);

古いものから新しいものに使用する場合、同じ変更を再度適用しようとしています (これは、既に行われているため、ノーオペレーションです)。

于 2010-09-26T08:58:12.013 に答える
-2

これを必要とする可能性があり、SVN の経験がない他の人のために:

更新を実行するときは、この便利な回答Update()を使用してイベントをサブスクライブします。このようにして、削除されたファイルのすべての名前を保存できます (または、その他の興味のあるアクション)。

次に、Update()完了したらCopy()、次のように使用できます。
Copy(new SvnUriTarget(path/to/file/in/repository, new SvnRevision(the_old_revision_which_had_the_files)), local/path/to/file);

あとはCommit()ファイルをリポジトリに戻すだけで完了です:)

いや

于 2010-09-26T11:23:57.243 に答える