Subversion - извлечение родительского каталога - PullRequest
10 голосов
/ 30 августа 2009

В моем хранилище, скажем, у меня есть это:

Animal
  Dog
     Beagle
     Hound
     ...

Допустим, я выписал Dog в рабочий каталог и понял, к сожалению, я действительно хотел проверить Animal.

Я могу удалить свою рабочую копию, каталог Dog и извлечение Animal, но есть ли способ сделать это, не удаляя и не проверяя снова?

Если моя рабочая копия Dog имеет Animal в качестве родительской папки, и я извлекаю Animal без удаления Dog, я получаю что-то вроде «subversion не удалось добавить версионный каталог, такое же имя уже существует».

Я также использую черепаху. Благодаря.

Ответы [ 4 ]

4 голосов
/ 30 августа 2009

Это невозможно напрямую.

Самый простой способ - удалить свою рабочую копию и сделать новую проверку Animal.

Если у вас есть какие-либо изменения в Dog, которые вы хотели бы сохранить, переместите Dog во временное местоположение, извлеките Animal, а затем скопируйте Dog обратно в каталог Animal.

2 голосов
/ 30 августа 2009

Вы ищете svn switch, который обновляет вашу рабочую копию, чтобы отразить новый путь. Однако измененные файлы не затрагиваются. В TortoiseSVN щелкните правой кнопкой мыши и выберите «Переключить ...» из контекстного меню.

Более распространенный вариант использования svn switch - это переключение между ветвями, укорененными в одной и той же точке, чтобы вы могли иметь разные представления одного и того же кода. Но вы можете переключаться между произвольными путями в вашем хранилище.

0 голосов
/ 01 июня 2016

Да, вы можете сопоставить родительский каталог.

Чтобы сделать это, вам просто нужно удалить каталог .svn из каталога «Dog» (дочерний) и сделать SVN Update в каталоге «Родитель». Он создаст существующий файл как Versioned копию и загрузит дельта-содержимое каталога Dog с сервера SVN.

Обратите внимание: у вас должна быть точная структура каталога как структура каталога SVN.

0 голосов
/ 29 сентября 2013

Я обнаружил, что нужно избегать загрузки с сервера svn того, что уже находится на моем диске, тогда обновление или извлечение выполняется с помощью --depth empty. Так что-то вроде: svn co --depth empty Animal ; cd Animal ; svn update --depth empty Dog

В любом случае, идея состоит в том, чтобы получить Dog в качестве каталога в Animal/.svn/entries.

Это "--depth empty" не позволяет svn загружать фактический контент, но svn создает подкаталог (в данном случае Dog), а svn помещает запись для подкаталога Dog в Animal/.svn/entries.

Затем замените подкаталог Dog уже имеющейся копией.

Вы можете проверить, что это работает, ударив один из файлов где-то в Dog и выполнив svn update в каталоге Animal. Разбитый файл должен быть извлечен с сервера SVN.

...