SVN меняет местоположение репозитория - PullRequest
1 голос
/ 05 августа 2011

Вот моя проблема: я создал три отдельных репо в рамках одного проекта.Репозитории - это «ветви», «ствол» и «теги».

Так что я знаю, что мне нужно было удалить их и иметь один репозиторий.Мне нужно было перенести все под багажник в проект.Поэтому я попытался сделать это удаленно.Сначала я проверил проект, а затем удалил «ветви» и «теги», оба из которых были пустыми.

Я удалил SVN, а затем зафиксировал.Далее я хотел избавиться от багажника, но в нем уже хранились файлы.Поэтому я скопировал эти файлы в каталог над ним:

cp -r trunk/* . 

Теперь я удалил ствол:

svn delete trunk/

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

svn switch --relocate \
svn+ssh://fkim@.../home/fkim/svn/aetv/trunk \
svn+ssh://fkim@.../home/fkim/svn/aetv 

Но это ничего не изменило с этими файлами.Когда я делаю статус SVN, я вижу, что у них есть «?»рядом с ними, и если я пытаюсь добавить их, мне говорят, что они уже находятся под контролем версий.Что я должен делать?Мне нужно получить их все в рамках проекта на удаленном сервере.

Обратите внимание, что я все работаю в Linux.Это работа, которую я делаю в командной строке.

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

relocate используется для указания рабочей копии на другой URL, который также содержит репо этой рабочей копии (т. Е. Когда сервер SVN изменяется, и вы не хотите удалять рабочую копию и проверять ее снова).

Кажется, вы хотите импортировать новые файлы в пустое хранилище.За исключением того, что ваши новые файлы все еще «помечены» как часть рабочей копии.

Сначала извлеките пустую директорию багажника.Это создаст пустую рабочую копию.Скопируйте старую рабочую копию в новую, но удалите все каталоги .svn.Это можно сделать с помощью команды экспорта.Добавьте все файлы и подтвердите их импорт в хранилище.

1 голос
/ 05 августа 2011

Чрезвычайно опасно изменять структуру папок (которые находятся под контролем SVN) вручную.

Теперь вам нужно выполнить следующие шаги:

  1. Оформить заказ на текущий проектснова (ничего не копируйте в него!)

    svn co http://your/project/svn/
    
  2. Восстановить ствол:

    svn merge -rHEAD:PREV .
    svn ci -m "Trunk restored"
    
  3. Переместить содержимое ствола:

    svn mv trunk/* .
    svn ci -m "Trunk contents moved up"
    
  4. Удалить сундук:

    svn del trunk
    svn ci -m "Trunk deleted"
    
0 голосов
/ 05 августа 2011

В вашей локальной рабочей папке с помощью TortoiseSVN выберите «Экспорт», чтобы обрезать все svn. Затем зафиксируйте свою локальную папку в другом хранилище. Может ли это решить вашу проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...