Есть ли чистый способ перемещения / в / багажник? - PullRequest
35 голосов
/ 02 мая 2010

Я сделал ошибку, создав хранилище Subversion без обычных каталогов trunk, branches и tags. То есть корневой каталог проекта отображается в корневой каталог репозитория. Сейчас я хочу создать функциональную ветку, но нет подходящего места для ее размещения. Я хотел бы переместить / на /trunk, сохранив его свойства и историю. Мне не повезло?

Ответы [ 9 ]

34 голосов
/ 02 мая 2010

Чистый способ сделать это - использовать svnadmin, чтобы выгрузить весь репозиторий, используя

svnadmin dump

Затем создайте новый репозиторий с корневым каталогом транка и перезагрузите дамп с помощью

svnadmin load --parent-dir trunk

Если вы сделаете svn-перемещение, то это может испортить ситуацию, если вы когда-нибудь обновитесь до ревизии до перемещения, так как файлы вернутся в прежнее положение, что, вероятно, не то, что вам нужно.

26 голосов
/ 22 сентября 2011

Использовано отсюда ответ , который работал нормально, но хотел добавить команды, включающие параметры, т. Е. Выполненные в командной строке сервера svn:

  1. Дамп ваш существующий репозиторий в файл:

    svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump
    
  2. Создать новый репозиторий:

    svnadmin create /path/to/mynewrepo/
    
  3. Добавить папку trunk/ и commit it, в каталоге рабочей копии :

    mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder"
    
  4. Загрузить дамп-файл в новый репозиторий, используя trunkкак parent-dir:

    svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump
    
2 голосов
/ 02 мая 2010

Самый простой способ - создать каталог 'trunk', а затем переместить в него все остальное. Вы должны будете скопировать любые свойства вручную, но это не должно иметь большого значения. История для каждого файла, поэтому она должна оставаться.

Другой вопрос, который следует рассмотреть, - есть ли у кого-нибудь еще открытый репозиторий. Объединить будет сложно, поэтому убедитесь, что все зарегистрировали свои изменения, прежде чем сделать это.

2 голосов
/ 02 мая 2010

Вам нужно создать /trunk и выполнить svn-перемещение всего содержимого root внутри ствола, а затем зафиксировать.

После этого вы switch сохраните свою рабочую копию в /trunk.

1 голос
/ 29 июня 2011

Есть некоторые ошибки или ограничения с некоторыми из обсуждаемых подходов. В посте ниже обсуждается другой подход, который включает создание репозитория и редактирование путей к файлам. Преимущество в том, что перемещенные файлы также будут корректно изменены.

http://dotslashstar.blogspot.com/2011/06/svn-hack-insert-missing-trunk-root.html

1 голос
/ 02 мая 2010

Нет, просто создайте папку trunk и переместите в нее все содержимое корня. Вы можете сделать это из проводника или через репозиторий, история сохранится.

1 голос
/ 02 мая 2010

Как указывают другие ответы, это можно сделать, просто введя svn mv в транковый каталог. Чтобы затем обновить вашу рабочую копию, проверьте команду svn switch .

1 голос
/ 02 мая 2010

Разве вы не можете просто создать директорию транка и переместить все из / в транк?

0 голосов
/ 31 мая 2011

Быстрый пример того, как я это сделал.

Я хотел переместить file:///svn/myRepo в file:///svn/myRepo/trunk

cd /  
svnadmin dump /svn/myRepo > my.dump  
killall svnserve  
sudo rm -r -f /svn/myRepo  
svnadmin create /svn/myRepo  
svnserve -d -r /svn  
svn mkdir file:///svn/myRepo/trunk -m "Created trunk dir"  
svnadmin load /svn/myRepo --parent-dir trunk < my.dump
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...