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

Оформить заказ одного файла из Subversion

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

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

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

4b9b3361

Ответ 1

Простой ответ: вы svn export файл, а не проверяете его.

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

Если у вас есть Subversion 1.5+, сделайте небольшую проверку:

svn checkout <url_of_big_dir> <target> --depth empty
cd <target>
svn up <file_you_want>

Для более старой версии SVN вам может понадобиться следующее:

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

Альтернативой (например, если в каталоге слишком много нежелательной версии из версии, в которой она была создана) заключается в том, чтобы сделать URL- > URL-копию файла, который вы хотите, в новое место в репозитории (фактически это рабочая ветвь файла). Проверьте этот каталог и внесите изменения.

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

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

Ответ 2

Попробуйте svn export вместо svn checkout. Это работает для отдельных файлов.

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

Ответ 3

Используйте svn cat или svn export.

Для этого вам не нужно извлекать рабочий каталог, но вы не сможете совершать какие-либо изменения. Если вам необходимо внести изменения и зафиксировать их, вам нужен рабочий каталог, но вам не нужно его полностью извлекать. Проверьте версию, в которой каталог был все еще/почти пуст, а затем используйте "svn cat" для извлечения файла из HEAD.

Ответ 4

Если вы хотите просмотреть readme.txt в своем репозиторий без проверки:

$svn cat http://svn.red-bean.com/repos/test/readme.txt
Это файл README. Вы должны прочитать это.

Подсказка: Если ваш рабочий экземпляр устарел (или у вас есть локальные модификации) и вы хотите увидеть ревизию HEAD файл в вашей рабочей копии, svn cat автоматически загрузит HEAD если вы дадите ему путь:

$cat foo.c
Этот файл находится в моем локальном рабочей копии и имеет изменения, которые Я сделал.

$svn cat foo.c
Последняя редакция свежая из хранилища!

Источник

Ответ 5

Следующее эквивалентное решение TortoiseSVN принятого ответа (я написал это во внутреннем документе для моей компании, поскольку мы недавно принимаем SVN). Я думал, что было бы полезно также поделиться здесь:

Проверка одного файла: Subversion не поддерживает проверку одного файла, он поддерживает только проверку структуры каталогов. (Ссылка: http://subversion.tigris.org/faq.html#single-file-checkout). Это связано с тем, что в каждом каталоге, который выставляется как рабочая копия, метаданные об изменениях/версиях файлов хранятся как внутренняя скрытая папка (.svn/_svn). В настоящее время это не поддерживается (v1.6) для отдельных файлов.

Альтернативная рекомендуемая стратегия: вам нужно будет сделать часть каталога checkout только один раз, после чего вы сможете напрямую перейти к своим одиночным файлам. Сделайте небольшую проверку исходной папки и структуры каталогов. Редкая проверка в основном проверяет только структуру папок без заполнения файлов содержимого. Таким образом, вы проверяете только структуры каталогов и не нуждаетесь в проверке ВСЕХ файлов, как это было проблемой. Ссылка: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html

Шаг 1: перейдите к браузеру репозитория

Шаг 2. Щелкните правой кнопкой мыши родительскую папку в репозитории, содержащую все файлы, над которыми вы хотите работать, и выберите "Заказ".

Шаг 3. В новом всплывающем окне убедитесь, что каталог проверки указывает на правильное местоположение на вашем локальном ПК. Будет также выпадающее меню с надписью "глубина проверки". Выберите "Только этот элемент" или "Непосредственные дети, включая папки", в зависимости от ваших требований. Второй вариант рекомендуется, так как, если вы хотите работать с вложенной папкой, вы можете сразу перейти в следующий раз, иначе вам придется снова следовать этой всей процедуре для вложенной папки.

Шаг 4. Теперь родительская папка должна быть доступна в вашей локально выбранной папке и теперь отслеживается с помощью SVN (скрытая папка ".svn" или "_svn" теперь должна быть настоящее время). Теперь в репозитории щелкните правой кнопкой мыши один файл, который вы хотите проверить, и выберите опцию "Обновить элемент для пересмотра". Теперь один файл может быть обработан и проверен обратно в репозиторий.

Надеюсь, это поможет.

Ответ 6

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

С SVN 1.6 вы можете сделать внешние файлы, своего рода svn-ссылки. Это означает, что у вас может быть другая папка с версией, которая включает в себя один файл. Также возможна фиксация изменений в файле в кассете этой папки.

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

svn propedit svn:externals .

с контентом вроде этого:

file.txt /repos/path/to/file.txt

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

Ответ 7

Вы можете сделать это в два этапа:

  • Оформить заказ на пустой SVN-репозиторий с мета-информацией:

    $ cd /tmp
    
    $ svn co --depth empty http://svn.your.company.ca/training/trunk/sql
    
  • Запустите svn up, чтобы обновить указанный файл:

    $ svn up http://svn.your.company.ca/training/trunk/sql/showSID.sql
    

Ответ 8

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

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

Ответ 9

Перейдите в репозиторий-браузер, щелкните правой кнопкой мыши файл и используйте "Сохранить как", но я использую TortoiseSVN.

Ответ 10

Ответ Стив Джессопа не помог мне. Я читаю файлы справки для SVN, и если у вас есть только изображение, вы, вероятно, не хотите его снова проверять, если вы не делаете Photoshop, поэтому экспорт является лучшей командой, чем проверка, поскольку она не вернулась (но это незначительно).

И ARG - глубина не должен быть пустым, но файлами, чтобы получить файлы в непосредственной папке. Таким образом, вы получите все поля, а не только одно, но empty ничего не возвращает из репозитория.

 svn co --depth files <source> <local dest>

или

svn export --depth files <source> <local dest>

Что касается других ответов, cat позволяет вам читать контент, который хорош только для текста, а не для изображений всех вещей.

Ответ 11

cd C:\path\dir
svn checkout https://server/path/to/trunk/dir/dir/parent_dir--depth empty
cd C:\path\dir\parent_dir
svn update filename.log

(Edit filename.log)

svn commit -m "this is a comment."

Ответ 12

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

svn export <URL>

Ответ 13

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

Ответ 14

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

После проверки верхнего уровня вашего репозитория, используя параметр "только этот элемент", в проводнике Windows вы должны сначала щелкнуть правой кнопкой мыши файл, который вам нужно обновить; выберите "Репо Браузер" в контекстном меню; найдите этот файл AGAIN в браузере репозитория и щелкните правой кнопкой мыши. Теперь вы должны увидеть "обновление элемента в ревизии" в контекстном меню.

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

Ответ 15

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

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

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

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

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

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

cp .svn /directory
cd /directory
svn update myfile

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

Ответ 16

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

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.

Ответ 17

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

С помощью браузера репозитория TortoiseSVN выберите файл, щелкните правой кнопкой мыши и выберите " Скопировать URL-адрес в буфер обмена". Вставьте этот URL в свой браузер, и после входа в систему вам будет предложено загрузить файл.

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

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

Ответ 18

Эта проблема распространяется на:

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

Имеется прикрепленный script, который позволяет вам проверять один файл из svn, вносить изменения и фиксировать изменения в репозитории, но вы не можете запустить "svn up", чтобы проверить остальную часть каталога, Он был протестирован с помощью svn-1.3, 1.4 и 1.6.

Ответ 19

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

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

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