18

「svnsyncinit」(例from#https://whateverからsvn://whatever)を使用してミラーリポジトリを作成するときに入力したSubversion URLを変更(再配置)するにはどうすればよいですか?

新しいURLでsvnsyncinitを再度実行しようとしましたが、

svnsync init file:///<path_to_mirror> http:///<new_url>
svnsync: Destination repository is already synchronizing from 'http:///<old_url>'
4

3 に答える 3

22

sync-from URLは、ミラーリポジトリにrevpropとして保存されます。ミラーリポジトリを備えたマシン(私の状況)の場合は、svnlookツールを使用して検索し、svnadminを使用して変更します。

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url
svn+ssh://svn.abc.com:1234/svn/foo

ミラーが現在同期しているリポジトリのURLが表示されます。上記の例では、マスターリポジトリのURLは... /fooで終わります。最後に改行がない可能性があるため、シェルプロンプトが続く場合があります。svnadminは入力用のファイルを使用してrevpropsを変更するため、これをファイルに取り込む必要があります。

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt

次に、 t.txtを編集して、URLをマスターリポジトリに変更します。これにより、 t.txtの最後に改行が表示され、svnsyncからのあいまいな/意味のないエラーメッセージが表示される可能性があります。だからそれを取り除く:

user@q.r[~]$ cat t.txt | tr -d '\n' > t2.txt

これで、サニタイズされたファイルであるt2.txtがあることに注意してください。次に、svnadminを使用して、revpropを編集およびサニタイズしたファイルの内容に変更します。

user@q.r[~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt

t.txtではなくt2.txtが使用されることに注意してください。最後に、変更を確認します。

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url
svn+ssh://svn.def.com:5678/svn/foo

新しいリポジトリのURLの直後に、改行なしのシェルプロンプトが表示されます。上記の例では、URLはfooで終わり、直後にシェルプロンプトuser @ qr [〜]$が続きます。

于 2010-11-29T22:38:29.467 に答える
14

svnsyncの実行に使用するアカウントを使用する場合は、次を使用できます。

svn propset --revprop -r 0 svn:sync-from-url http://my.new/url url://to.my.repo

マニュアルの指示に従い、svnsyncユーザー以外の全員がrevpropsを変更することを拒否するpre-rev-propsフックを追加した場合、これは機能するはずです。

于 2011-06-16T08:57:41.263 に答える
1

Svnsyncは、リモートリポジトリURLをリポジトリミラーの最初のリビジョンのリビジョンプロパティに保存します。したがって、現在構成されているリポジトリURLをローカルミラーで次のように表示できます。

$ svn pg --revprop -r0 svn:sync-from-url file:///path/to/svn-mirror

つまり、リモートリポジトリのURLを変更するには、リビジョンプロパティを変更するだけです。例えば:

$ svn ps --revprop -r0 svn:sync-from-url https://svn.example.org/repo \
         file:///path/to/svn-mirror/

出力例:

property 'svn:sync-from-url' set on repository revision 0
于 2017-07-28T20:38:05.593 に答える