Как мне отменить svn-переключатель для подкаталога?

Не в первый раз я случайно сделал "svn switch" откуда-то из корня моего проекта. Это переключает только этот подкаталог, но как мне отменить это?

Если я попытаюсь переключить подкаталог обратно в исходную ветку, я получу:

"svn: Directory 'subdir\_svn' containing working copy admin area is missing"

Обновление: у меня есть изменения в подкаталоге, поэтому я не хочу выполнять удаление.

В краткосрочной перспективе я исправил это, повторно применив изменения, но мне был нужен способ заставить Subversion вернуться к тому месту, откуда я пришел ... или это отсутствующая функция?


svn
person PEELY    schedule 19.09.2008    source источник


Ответы (7)


Быстрый взлом: удалите каталог, перейдите на один уровень вверх и запустите svn update.

person Alexander    schedule 19.09.2008
comment
Вы можете сделать патч, выполнить rm / svn up и повторно применить патч. - person Marcin Gil; 19.09.2008
comment
Ненавижу svn. Так много. У меня уходит день на переключение, обновление, массирование, удаление, а затем на переключение еще несколько раз, чтобы получить чистый переключатель. - person Rhythmic Fistman; 15.02.2010
comment
У меня папка уже удалена из репо, а локально S. Когда я rm -rf; cd ..; svn up, он восстанавливает! .. ( - person Nakilon; 15.11.2013
comment
Вместо того, чтобы удалять каталог, о котором идет речь, вы можете просто переименовать его. Таким образом, вы не потеряете все файлы без поддержки версий в нем (например, загруженные файлы и т. Д.). После того, как вы исправите проблемы svn с помощью переключателя svn up или svn, вы можете скопировать файлы без версий обратно в соответствующий каталог. - person Asrar; 13.04.2016
comment
Удаление только переключенного каталога не помогло. Мне пришлось удалить его суперпапку. - person Melebius; 06.09.2018

Не зная точно, как вы переключились и как устроен ваш каталог и репозиторий, трудно сказать, что пошло не так в вашем случае.

Нет никакого способа действительно "вернуть" переключатель в исходное положение. Как правило, переключатель svn можно отменить переключением обратно в исходное местоположение, то есть когда исходное местоположение находится в svn: // url / to / orig / dir, тогда должно работать следующее:

Переключение подкаталога в другую часть репозитория

svn switch svn://path/to/switched/dir/ subdir

... и снова переключить его

svn switch svn://url/to/orig/dir subdir

В вашем случае это звучит так, как если бы вы пытались переключить каталог, который не является частью вашей рабочей копии.

person Palmin    schedule 19.09.2008

Я исправил это, проверив изменения в переключенном каталоге, удалив файлы .svn и неуместные файлы, а затем используя svn checkout <rootUrl>, а затем svn update -r HEAD --force.

Я не думаю, что есть чистый способ сделать это.

person durron597    schedule 08.07.2013

если последние изменения - это просто переключатель,

Щелкните правой кнопкой мыши общий родительский каталог, черепаха svn-> Перейти к журналам svn. Щелкните правой кнопкой мыши версию перед переключением SVN и выберите «Вернуться к этой версии».

person Amol Patil    schedule 28.04.2016

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

svn switch file:///srv/svn/someproject/branch/27

пока вы были в someproject / subdir, запустите

svn switch file:///srv/svn/someproject/branch/26/subdir

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

Это вроде наводит порядок.

person CFWhitman    schedule 08.09.2016

Мой вариант использования казался простым; Я хотел вернуться в каталог с именем текущего каталога, основанным на URL-адресе родительского каталога. Проблема здесь, конечно, заключается в получении и последующем копировании URL-адреса родительского каталога. Этот сценарий из пакета Windows сделал это за меня. Пользователи Bash могут сделать это намного проще, но суть здесь. Кажется, что эту функциональность было бы тривиально встроить в SVN напрямую ...

Возможно, вам придется добавить кавычки к параметру для переключения, но я оставлю это вам. Если это не очевидно, вам нужно запустить это в каталоге, который вы хотите «отключить». В настоящее время он не принимает параметров или чего-либо еще, хотя это довольно простое дополнение, если вы так склонны (просто cd \d %1 вверху, если %1 не пусто).

svn-unswitch.bat

@echo off
setlocal

for /f "tokens=*" %%u in ('svn info --show-item url ..') do set "PARENT_URL=%%u"
call :SetDirName %CD%
svn switch %PARENT_URL%/%DIRNAME%
goto :eof

:SetDirName
    set DIRNAME=%~nx1
    goto :eof

Сертифицировано: Работает на моей машине!

person dash-tom-bang    schedule 21.11.2018

svn revert <dir>

Или, да, удалите его и возьмите еще одну копию.

person Dan    schedule 19.09.2008
comment
svn revert <dir> не возвращает переключатель в исходное положение. Он отменяет локальные модификации (если таковые имеются), но сохраняет содержимое переключенного поддерева. - person Eloff; 10.01.2014