133

私の現在のSVN構造:

Path: .
URL: svn://someaddress.com.tr/project
Repository Root: svn://someaddress.com.tr
Repository UUID: -------------------------------------
Revision: 10297
Node Kind: directory
Schedule: normal
Last Changed Author: ----
Last Changed Rev: 9812
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010)

しかし、私たちのプロジェクト(したがってSVNサービス)はsub.someaddress.com.tr代わりに機能しますsomeaddress.com.tr(someaddress.com.trはすぐに別の場所にリダイレクトされます)。

開発サーバーなのでどうしたらいいのかわからなかった。またはを使用する必要がありますsvn switchsvn switch --relocate?また、svn root someaddress.com.trまたはプロジェクトブランチsomeaddress.com.tr/projectを切り替える必要がありますか?

4

6 に答える 6

233

ApacheSubversionサーバーがこの新しいDNSエイリアスに移動されると仮定しますsub.someaddress.com.tr::

  • Subversion 1.7以降では、を使用しますsvn relocate。再配置は、SVNサーバーの場所が変更されたときに使用されます。switchローカル作業コピーを別のブランチまたは別のパスに変更する場合にのみ使用されます。TortoiseSVNを使用している場合は、TortoiseSVNマニュアルの指示に従うことができます。SVNコマンドラインインターフェースを使用する場合は、SVNのドキュメントのこのセクションを参照してください。コマンドは次のようになります。

    svn relocate svn://sub.someaddress.com.tr/project

  • /projectリポジトリの実際の内容はおそらく変更されないので、使い続けてください。

注:svn relocateバージョン1.7より前では使用できません(情報を提供してくれたColinMに感謝します)。古いバージョンでは、以下を使用します。

    svn switch --relocate OLD NEW
于 2012-12-19T01:38:20.533 に答える
13

前後にURLを取得すると、安心できる場合があります。

svn info | grep URL

  URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
  Relative URL: (...doesn't matter...)

そして、バージョンをチェックして(> 1.7になるように)、svn relocate使用するのが正しいことです。

svn --version

最後に、上記に加えて、リポジトリのURLの変更にプロトコルの変更も含まれる場合は、URLの前後指定する必要があります(こちらも参照してください) 。

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal

もちろん、すべてが1行になります。その後、すべてがスムーズに進んだことを実感してください。

svn info | grep URL:

少し自信を持って、新しいsvn repo URLが接続され、機能していると感じた場合は、次のようになります。

svn status --show-updates
svn diff
于 2017-01-02T13:31:45.670 に答える
7

TortoiseSVNクライアントを使用している場合は、以下の手順に従うことができます

ソースディレクトリを右クリックし、[ SVN再配置]をクリックします 画像#1

その後、URLを希望のURLに変更する必要があります。[OK]をクリックすると、数秒かかります。画像#2

于 2021-02-15T04:58:47.517 に答える
6

私の場合、svn relocateコマンド(およびsvn switch --relocate)が何らかの理由で失敗しました(リポジトリが正しく移動されなかったなど)。私はこのエラーに直面しました:

$ svn relocate NEW_SERVER
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46'

リポジトリ全体を再ダウンロードしたくなかったので、回避策を見つけました。私の場合はうまくいきましたが、一般的には多くのことが壊れてしまう可能性があると想像できます(したがって、作業コピーをバックアップするか、問題が発生した場合にリポジトリ全体を再チェックアウトする準備をしてください)。

リポジトリアドレスとそのUUIDは.svn/wc.db、作業コピーのSQLiteデータベースファイルに保存されます。データベースを開き(SQLiteブラウザなどで)、テーブルREPOSITORYを参照しrootuuid列の値を新しい値に変更するだけです。を発行すると、新しいリポジトリのUUIDを見つけることができますsvn info NEW_SERVER

繰り返しますが、これを最後の手段として扱います。

于 2016-05-17T19:25:30.187 に答える
1

新しい空のリポジトリにコミットする場合は、新しい空のリポジトリをチェックアウトして、新しいリモートリポジトリにコミットできます。
新しい空のリポジトリをchekoutしても、ローカルファイルは削除されません。
これを試してください: たとえば、リモートリポジトリのURL:https ://example.com/SVNTest cd [YOUR PROJECT PATH] rm -rf .svn svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME] svn add ./* svn ci -m"changed repo url"

于 2018-06-25T06:28:22.187 に答える
1

Eclipseで、プロジェクトを切断し([チーム]> [切断])、メタデータを削除してから、プロジェクトを新しいリポジトリに接続します。 プロジェクト全体で、右クリック、チーム、切断

于 2021-07-27T23:41:35.767 に答える