Подтвердить что ты не робот

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

Я работаю над проектом, у которого нет структуры каталогов соединительных линий/ветвей/тегов, т.е. все находится в корне репозитория svn.

Я хотел бы создать каталог соединительных линий и в корневом каталоге и переместить все в корневой каталог в новый каталог соединительных линий.

Каков наилучший способ сделать это?

Первое, что я подумал, было

svn mkdir trunk
(for each file or directory that is not called trunk: )
svn mv FILEorDIR trunk/

Но это эффективно удаляет каждый файл, а затем добавляет его снова. Есть ли лучший способ?

Спасибо.

4b9b3361

Ответ 1

Это похоже на то, как я это делал в прошлом. Ваше решение фактически копирует каждый файл, а затем удаляет оригинал. Из-за того, как Subversion реализует копии, история для каждого файла сохраняется.

После этого вы можете указать существующие проверки в новом месте, используя svn switch.

Ответ 2

У меня была точно такая же проблема и она была решена после просмотра нескольких разных страниц (в том числе). Здесь мое решение:

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

Вкл. с решением...

//REPO_URL = The URL for the repo on the SVN server.
//In my case it was https://IP_ADDRESS:PORT/svn/my_repo

//Make the trunk dir in the root of your SVN repo
svn mkdir REPO_URL/trunk -m "making trunk dir"

//Move everything from your root dir to your new trunk dir
svn move REPO_URL/A_FOLDER REPO_URL/trunk/A_FOLDER -m "moving folders to trunk"
svn move REPO_URL/ANOTHER_FOLDER REPO_URL/trunk/ANOTHER_FOLDER -m "blah"
svn move REPO_URL/A_FILE.TXT REPO_URL/trunk/A_FILE.TXT -m "moving files to trunk"
//Keep going until you've moved everything from your root dir to the trunk dir...

Итак, теперь на вашем сервере SVN все находится в папке с багажом. Классно!

Но мое репо - 60 ГБ и на удаленном сервере. Лучше не проверять это снова. svn switch позволит вам указать существующую рабочую копию на новый trunk dir, чтобы вы могли продолжить работу с копией, которую у вас есть. Перейдите в корневую папку вашей рабочей копии и запустите svn switch REPO_URL/trunk --ignore-ancestry. Он должен сказать At revision X, где X - это ревизия после того, как вы переместили все ваши файлы из корневого каталога в каталог соединительных линий. Это! Возможно, обновление SVN для хорошей меры:)

Ответ 3

Если вы используете eclipse IDE и Subclipse для SVN, вы можете продолжить и создать папки в SVN и перенести все файлы/директории из корня в каталог trunk, а затем проверить ProjectName/trunk на рабочее пространство eclipse...

Ответ 4

Здесь дается способ использования svn + ssh для создания папки trunk в корне svn в терминале unix. "projectname" является корневым "Идентификатором" при создании проекта в svn:

svn mkdir svn+ssh://[email protected]/projectname/trunk -m "Create the trunk folder"

Ответ 5

Возможно, вы захотите изучить инструмент svnadmin.

Честно говоря, я раньше этого не пробовал, и вы, вероятно, получите ответ от кого-то, у кого есть, но вы можете работать из чего-то вроде этого:

Вы должны иметь возможность инициализировать новый репозиторий, создать в нем директорию 'trunk', а затем выгрузить предыдущий репозиторий в 'trunk'.