Руководство для идиотов по перемещению каталога в SVN - PullRequest
5 голосов
/ 21 января 2010

Нет, это не дубликат этого .

Хотя я обычно привык использовать визуальные инструменты с SVN, я теперь столкнулся с желанием переместиться с Repo/Parent/ChildX/ChildY на Repo/ChildY. Я получаю следующие ошибки и просто ищу то, что мне здесь не хватает. Рассмотрим только что установленный сервер (из дампа), ничего другого, кроме svn.

> svn checkout https://localhost/Repo
svn: OPTIONS of 'https://localhost/Repo': 200 OK (https://localhost)

> svn move Repo/Parent/ChildX/ChildY Repo/ChildY
svn: 'Repo' is not a working copy
svn: 'Repo' does not exist

> svn move Parent NewParent
svn: '.' is not a working directory

> svn move https://localhost/Repo/Parent NewParent 
svn: Moves between the working copy and the repository are not supported

> svn move https://localhost/Repo/Parent https://localhost/Repo/NewParent
svn: OPTIONS of 'https://localhost/Repo': 200 OK (https://localhost)

> svn commit --message "Trying to get move command to work"
svn: 'C:\SVNTest' is not a working copy

Я нахожу несколько странным, что первая команда (checkout) дает такой же ответ для всего, что я поставил после 'Repo', например https://localhost/Repo/SomeNonExistingName. Я уверен, что что-то упустил. Я нашел ссылки, в которых говорилось, что вам не нужна рабочая копия для перемещения, но тогда как мне сделать перемещение?

Ни одна из вышеприведенных команд, независимо от того, выдавали они ошибку или «ОК», не выполняла никаких действий. Я использую VisualSVN Server и могу просматривать репозиторий онлайн.


Решение

Приведенное ниже решение и другие ответы помогли решить эту проблему. Ответ на первую команду выше равен обычному ответу любого сервера Apache. 200 OK является ответом HTTP.

При использовании VisualSVN Server по умолчанию устанавливается в https://hostname/svn. Чтобы оформить заказ, вам нужно добавить префикс имени хранилища к этому пути. Первая команда, приведенная выше, должна была прочитать:

> svn checkout https://localhost/svn/Repo
file1
file2
etc...
Revision XXX

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

> svn move Folder/SubFolder NewFolder

Ответы [ 3 ]

3 голосов
/ 21 января 2010

Предполагая, что у вас есть действующая проверка, самый простой способ будет выглядеть примерно так (где вы заменяете REPO_URL на правильный URL):

svn co REPO_URL
cd Repo
svn mv Parent/ChildX/ChildY .
svn commit -m "moved directory"

Это предполагает, конечно, что у вас нет стандартных директорий trunk / tags / branch.

Что приводит меня к вопросу, на который вы должны ответить: как выглядит извлеченный рабочий каталог? Есть ли у него структура, которую вы ожидаете, или у нее, возможно, есть какие-то каталоги, о которых вы не знаете? Вы видите каталог .svn в разделе Репо?


Редактировать: я никогда не использовал сервер Visual SVN, но если у вас есть хранилище в доступной файловой системе, вы всегда можете использовать URL-адрес "file":

svn co 'file:///localhost/Repo'

В качестве альтернативы (после того, как вы только что посмотрели на то, что VisualSVN называет «документацией»), я бы предложил проверить ваш рабочий каталог через Visual SVN, а затем выполнить приведенные выше команды.

Кроме того, похоже, что Visual SVN создает каталоги стволов / тегов / ветвей, поэтому вы определенно хотите перейти в рабочий каталог и выполнить там свои команды, после того, как вы проверили структура каталогов .

1 голос
/ 21 января 2010

Мне кажется, что ваша проверка не удалась.

В случае успеха вы, как правило, получаете список извлеченных файлов, за которым следует строка «Checked out revision XXXXX».

Некоторые предложения из этой темы могут быть полезны. В частности, у вас может быть неправильно настроен сервер svn для доступа https. Как только вы это исправите, вы сможете просто следовать инструкциям в ветке, которую вы связали.

Пожалуйста, обновите / прокомментируйте / ответьте, если игра с строкой 'svn checkout' не решит проблему.

1 голос
/ 21 января 2010

В ответ на ваш комментарий, как должна выглядеть проверка, это хвост проверки одного из моих собственных проектов:

A    dblite\tags\pre-codeblocks\src\sqlite3.h
A    dblite\tags\pre-codeblocks\inc
A    dblite\tags\pre-codeblocks\inc\dblite.h
Checked out revision 31.

И, конечно, t должен создать структуру каталогов, которая, как кажется, ваша не делает.

...