web-dev-qa-db-ja.com

SVNの再配置または切り替え?

SVNサーバーを再インストールし、パスがsvn://192.168.1.35/DDL2/trunk/DD _...からsvn://192.168.1.35/trunk/DD _...に変更されました。作業コピーにいくつかの変更を加え、サーバーにコミットしたいので、パス/ URLを変更する必要がありますなし作業コピーに影響します。

TortoiseSVNの再配置機能を使用しようとしましたが、「再配置ではURLのリポジトリ部分のみを変更できます」と表示されました。おそらく、スイッチを使用する必要がありますが、作業コピーのリビジョンが心配です。


svn info svn://192.168.1.35/

Path: 192.168.1.35
URL: svn://192.168.1.35
Repository Root: svn://192.168.1.35
Repository UUID: 259834e4-a888-4201-9858-aaacfe621d8e
Revision: 58
Node Kind: directory
Last Changed Author: rize
Last Changed Rev: 58
Last Changed Date: 2009-11-02 18:33:09 +0100 (po, 02 11 2009)

svn info D:\Programy\Eclipse Workspace\LDD_L2DP

Path: D:\Programy\Eclipse Workspace\LDD_L2DP
URL: svn://192.168.1.35/DDL2/trunk/DD_L2DP
Repository Root: svn://192.168.1.35
Repository UUID: 259834e4-a888-4201-9858-aaacfe621d8e
Revision: 21
Node Kind: directory
Schedule: normal
Last Changed Author: rize
Last Changed Rev: 17
Last Changed Date: 2009-10-21 19:22:41 +0200 (st, 21 10 2009)

古い構造:

svn://192.168.1.35/DDL2
svn://192.168.1.35/DDL2/trunk/DD_L2DP

新しい構造

svn://192.168.1.35/
svn://192.168.1.35/trunk/DD_L2DP
20
RiZe

[〜#〜] edit [〜#〜]-上記の出力に基づいて、別のアプローチをとる必要があると思います。元のリポジトリは/data/repositoryとして作成され、リポジトリ内にDDL2というフォルダが作成されたようです。これは、作業コピーの「リポジトリルート」の値を見るとわかります。

svn switchを使用して、リポジトリのルートを1レベル下に単純にプッシュすることはできません。代わりに、svn moveを使用して、新しい目的のルートを中心にリポジトリを再編成する必要があります。つまり、/data/repositoryから引き続きリポジトリを提供しますが、DDL2の下にあるすべてのファイルを最上位に移動します。

もちろん、ローカルで編集している場合、一連のファイルを移動するのは面倒です。すべての変更をコミットしてから、1つのコミットとして移動を行います。これを行う前に、svnserve引数を元に戻す必要があります。

6
jheddings

この質問 答えがあります。 具体的に

svn switch --relocate http://svn.example.com/path/to/repository/path/within/repository http://svnnew.example.com/new/repository/path/within/repository
21
John Paulett

サーバーを切り替える場合は、再配置を使用します。たとえば、svn://192.168.1.127/DDL2/trunk/DD_L2DPを優先して、作業コピーでsvn://192.168.1.35/DDL2/trunk/DD_L2DPを参照しないようにする場合は、relocateを使用します。

作業コピーが参照するリポジトリー上のディレクトリーを変更したい場合は、スイッチを使用します。私はこれがあなたが望むケースだと信じています。この操作はリポジトリのリビジョン番号には影響しません。作業コピーのURLを更新するだけです。

svn moveは、現在svn://192.168.1.35/trunk/DDL2DPと作成したいsvn://192.168.1.35/DD_L2DP/trunkですが、リポジトリにはまだ存在していません。

15
antik
switch (sw): Update the working copy to a different URL.
usage: 1. switch URL[@PEGREV] [PATH]
       2. switch --relocate FROM TO [PATH...]

  1. Update the working copy to mirror a new URL within the repository.
     This behavior is similar to 'svn update', and is the way to
     move a working copy to a branch or tag within the same repository.
     If specified, PEGREV determines in which revision the target is first
     looked up.

     If --force is used, unversioned obstructing paths in the working
     copy do not automatically cause a failure if the switch attempts to
     add the same path.  If the obstructing path is the same type (file
     or directory) as the corresponding path in the repository it becomes
     versioned but its contents are left 'as-is' in the working copy.
     This means that an obstructing directory's unversioned children may
     also obstruct and become versioned.  For files, any content differences
     between the obstruction and the repository are treated like a local
     modification to the working copy.  All properties from the repository
     are applied to the obstructing path.

     Use the --set-depth option to set a new working copy depth on the
     targets of this operation.  Currently, the depth of a working copy
     directory can only be increased (telescoped more deeply); you cannot
     make a directory more shallow.

  2. Rewrite working copy URL metadata to reflect a syntactic change only.
     This is used when repository's root URL changes (such as a scheme
     or hostname change) but your working copy still reflects the same
     directory within the same repository.
1
just somebody