SVN Переместить или Переключить? - PullRequest
20 голосов
/ 29 ноября 2009

Я переустановил свой SVN-сервер, и путь изменился с svn: //192.168.1.35/DDL2/trunk/DD _... на svn: //192.168.1.35/trunk/DD _.... Я сделал несколько изменений в рабочей копии и хочу зафиксировать ее на сервере, поэтому мне нужно изменить путь / url без , влияющим на рабочую копию.

Я пытался использовать функцию перемещения TortoiseSVN, но получил сообщение «Переместить можно изменить только часть URL-адреса хранилища», возможно, мне следует использовать Switch, но я беспокоюсь о редакции рабочей копии.


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

Ответы [ 4 ]

21 голосов
15 голосов
/ 30 ноября 2009

Перемещение используется, если вы намеревались переключать серверы. Например, если вы хотите, чтобы рабочая копия больше не ссылалась на svn: //192.168.1.35/DDL2/trunk/DD_L2DP в пользу svn: //192.168.1.127/DDL2/trunk/DD_L2DP, вы бы использовали relocate. 1001 *

Переключатель используется, если вы хотите изменить каталог, к которому относится ваша рабочая копия. Я считаю, что это то, что вы хотите. Эта операция не влияет на номер редакции репозитория: она обновляет только URL рабочей копии.

svn move используется, если у вас есть svn://192.168.1.35/trunk/DDL2DP, и вы хотите создать svn://192.168.1.35/DD_L2DP/trunk, но его еще нет в вашем хранилище.

6 голосов
/ 29 ноября 2009

РЕДАКТИРОВАТЬ - Исходя из ваших результатов выше, я думаю, что вам нужно использовать другой подход. Похоже, что исходное хранилище было создано как /data/repository с папкой с именем DDL2 в хранилище. Это можно увидеть, посмотрев на значение «Корень репозитория» вашей рабочей копии.

Вы не сможете просто протолкнуть корень хранилища на уровень, используя svn switch. Вместо этого вам нужно будет использовать svn move, чтобы реорганизовать репо вокруг нового желаемого корня. Это означает, что вы продолжите обслуживать репо с /data/repository, но переместите все файлы из DDL2 на верхний уровень.

Конечно, перемещение файлов может быть проблемой, если у вас есть локальные правки. Я бы зафиксировал все ваши изменения, а затем сделал бы это как один коммит. Вам нужно изменить свои аргументы svnserve, прежде чем вы сможете это сделать.

1 голос
/ 29 ноября 2009
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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...