Оформить заказ одним файлом из Subversion - PullRequest
308 голосов
/ 23 сентября 2008

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

Как мне обойти эту проблему при использовании Subversion?

У нас есть эта папка в Subversion, где мы храним все наши изображения. Я просто хочу проверить один файл (изображение) из этого. Эта папка действительно большая и содержит множество других вещей, которые мне сейчас не нужны.

Ответы [ 19 ]

4 голосов
/ 23 сентября 2008

Я бы просто просмотрел его и экспортировал один файл. Если у вас есть доступ HTTP, просто используйте веб-браузер, чтобы найти файл и взять его.

Если вам нужно вернуть его после редактирования, это может быть немного более утомительно, но я уверен, что может быть функция svn import ...

2 голосов
/ 24 сентября 2008

С Subversion 1.5 становится возможным извлекать (все) файлы каталога без проверки каких-либо подкаталогов (различные флаги --depth). Не совсем то, что вы просили, но форма «меньше, чем все».

2 голосов
/ 23 сентября 2008

Если вам нужен файл без информации о ревизии, используйте

svn export <URL>
1 голос
/ 05 февраля 2012

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

Давайте получим файл по следующему URL: http://subversion.repository.server/repository/module/directory/myfile

svn co  http://subversion.repository.server/repository/module/directory/myfile /**directoryb**

Итак, я извлек данный каталог, содержащий целевой файл, который я хотел получить, в фиктивный каталог (например, etcb для URL, заканчивающегося /etc).

Затем я очистил файл .svn / records от всех файлов целевого каталога, которые мне не нужны, чтобы оставить только файл, который я хотел. В этом файле .svn / records у вас есть запись для каждого файла с его атрибутами, поэтому оставьте только запись, касающуюся файла, который вы хотите получить и сохранить.

Теперь вам нужно просто скопировать «.svn» в каталог, который будет новой «рабочей копией». Тогда вам просто нужно:

cp .svn /directory
cd /directory
svn update myfile

Теперь каталог directory находится под контролем версий. Не забудьте удалить каталог directoryb , который был просто «временной рабочей копией».

1 голос
/ 25 апреля 2012

Сделайте что-то вроде этого:

mkdir <your directory>/repos/test

svn cat http://svn.red-bean.com/repos/test/readme.txt > <your directory>/repos/test/readme.txt

По сути, идея заключается в создании каталога, в который вы хотите получить файл из SVN. Используйте команду svn cat и перенаправьте вывод в файл с тем же именем. По умолчанию кошка выводит информацию на stdio.

1 голос
/ 16 июля 2009

Используя метод разреженного извлечения, вы МОЖЕТЕ проверить конкретный файл, который уже извлечен или существует ... простым трюком:

После извлечения верхнего уровня вашего хранилища с помощью опции «только этот элемент» в проводнике Windows вы ДОЛЖНЫ сначала щелкнуть правой кнопкой мыши файл, который необходимо обновить; выберите Repo Browser в контекстном меню; найдите этот файл СНОВА в браузере хранилища и щелкните правой кнопкой мыши. Теперь вы должны увидеть «обновить элемент до ревизии» в контекстном меню.

Я не уверен, что это недокументированная функция или просто ошибка. Мне понадобилось много времени после работы, чтобы наконец найти этот трюк. Я использую TortoiseSVN 1.6.2.

1 голос
/ 06 апреля 2015

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

Используя TortoiseSVN Repository Browser , выберите файл, щелкните правой кнопкой мыши, а затем выберите « Копировать URL в буфер обмена ». Вставьте этот URL в браузер, и после входа в систему вам будет предложено загрузить файл.

Таким образом, вы также можете выбрать нужную версию и загрузить старую версию файла.

Обратите внимание, что это действительно, если ваш сервер SVN имеет веб-интерфейс.

0 голосов
/ 03 января 2017

Так как ни один из других ответов не работал для меня, я сделал это, используя этот хак:

$ cd /yourfolder
svn co https://path-to-folder-which-has-your-files/ --depth files

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

0 голосов
/ 24 декабря 2009

Эта проблема покрыта:

http://subversion.tigris.org/issues/show_bug.cgi?id=823

Прилагается скрипт, который позволяет вам извлекать отдельный файл из SVN, вносить изменения и фиксировать изменения обратно в хранилище, но вы не можете запустить «SVN» для извлечения остальной части каталога. Он был протестирован с SVN-1.3, 1.4 и 1.6.

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