Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Простой ответ то, что Вы svn export
файл вместо того, чтобы проверить его.
, Но это не могло бы быть тем, что Вы хотите. Вы могли бы хотеть работать над файлом и перепроверить его в, не имея необходимость загружать ГБ спама, в котором Вы не нуждаетесь.
, Если у Вас есть Подрывная деятельность 1.5 +, затем сделайте редкий контроль:
svn checkout <url_of_big_dir> <target> --depth empty
cd <target>
svn up <file_you_want>
Для более старой версии SVN, Вы могли бы извлечь выгоду из следующего:
альтернатива (например, если каталог имеет слишком много права спама от пересмотра, в котором это было создано) должна сделать URL-> копия URL файла, который Вы хотите в новое место в репозитории (эффективно, это - рабочее ответвление файла). Проверьте тот каталог и сделайте Ваши модификации.
я не уверен, можно ли тогда объединить измененную копию назад полностью в репозитории без рабочей копии цели - я никогда не должен был. Раз так тогда сделайте это.
, Если не тогда, к сожалению, Вам, вероятно, придется найти кого-то еще, кому действительно проверяли целый каталог и заставлял их делать это. Или возможно к тому времени, когда Вы сделали свои модификации, остальная часть его закончит загружать...
С Подрывной деятельностью 1.5, становится возможно проверить (все) файлы каталога, не проверяя подкаталогов (различное - флаги глубины). Не совсем, что Вы попросили, но форма "меньше, чем все".
Если Вы просто хотите файл без использования информации о пересмотре
svn export <URL>
Я просто просмотрел бы его и экспортировал бы единственный файл. Если у Вас есть доступ HTTP, просто используйте веб-браузер, чтобы найти файл и захватить его.
, Если необходимо вернуть его в после редактирования его, который мог бы быть немного более утомительным, но я уверен, могло бы быть svn import
функция...
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
(Редактирование filename.log)
svn commit -m "this is a comment."
Перейдите к repo-браузеру, щелкают правой кнопкой по файлу и используют 'Сохранить Как', я использую TortoiseSVN все же.
, Если Вы хотите к представлению readme.txt в Вашем репозитории, не проверяя его:
$ svn кошка http://svn.red-bean.com/repos/test/readme.txt
Это - файл README. Необходимо считать это.Подсказка: Если Ваша рабочая копия устарела (или у Вас есть локальные модификации), и Вы хотите видеть, что ГЛАВНЫЙ пересмотр файла в Вашей рабочей копии, svn кошка автоматически выберет ГЛАВНЫЙ пересмотр, когда Вы дадите ему путь:
кошка foo.c
$ Этот файл находится в моей локальной рабочей копии и имеет изменения, которые я внес.$ svn кошка foo.c
Последний пересмотр только что из репозитория!
Используйте svn cat
или svn export
.
Для этого, Вы не должны выбирать рабочий каталог, но Вы не будете в состоянии фиксировать любые изменения, которые Вы вносите. Если необходимо внести изменения и фиксировать их, Вам нужен рабочий каталог, но Вы не должны выбирать его полностью. Контроль пересмотр, где каталог был все еще/почти пуст, и затем использует 'svn кошку' для извлечения файла от ГЛАВЫ.
Попробуйте svn export
вместо svn checkout
. Это работает на единственные файлы.
причина ограничения состоит в том, что checkout
создает рабочую копию, которая содержит метаинформацию о репозитории, пересмотре, атрибутах, и т.д. Те метаданные хранятся в подкаталогах, названных '.svn'. И единственные файлы не имеют подкаталогов.
Используя технику разреженного извлечения, вы МОЖЕТЕ извлечь конкретный файл, который уже извлечен, или существует ... с помощью простого трюка:
После проверки верхнего уровня вашего репозитория с помощью параметра «только этот элемент» в проводнике Windows вы ДОЛЖНЫ сначала щелкнуть правой кнопкой мыши файл, который необходимо обновить; в контекстном меню выберите Repo Browser; найдите этот файл СНОВА в обозревателе репозитория и щелкните правой кнопкой мыши. Теперь вы должны увидеть «обновить элемент до версии» в контекстном меню.
Я не уверен, является ли это недокументированной функцией или просто ошибкой. Мне потребовалось долгое время после работы, чтобы наконец найти этот трюк. Я использую TortoiseSVN 1.6.2.
A Эквивалентное решение принятого ответа TortoiseSVN (я написал это во внутреннем документе моей компании, поскольку мы недавно принимаем SVN). Я подумал, что было бы полезно поделиться здесь:
Извлечение одного файла: Subversion не поддерживает проверку отдельного файла, она поддерживает только проверку структур каталогов. (Ссылка: http://subversion.tigris.org/faq.html#single-file-checkout ). Это связано с тем, что для каждого каталога, который извлекается как рабочая копия, метаданные, касающиеся модификаций / ревизий файлов, сохраняются как внутренняя скрытая папка (.svn / _svn). Это не поддерживается в настоящее время (v1.6) для отдельных файлов.
Альтернативная рекомендуемая стратегия: вам нужно будет выполнить часть проверки каталога только один раз, после чего вы можете напрямую перейти и проверить свои отдельные файлы. Выполните редкую проверку родительской папки и структуры каталогов. Разреженная проверка - это проверка только структуры папок без заполнения файлов содержимого. Ссылка: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html
Шаг 1 : перейдите в браузер репозитория
Шаг 2 : щелкните правой кнопкой мыши родительская папка в репозитории, содержащая все файлы, с которыми вы хотите работать, и выберите Checkout.
Шаг 3 : В новом всплывающем окне убедитесь, что каталог checkout указывает на правильное расположение на вашем локальном ПК. Также будет раскрывающееся меню с надписью «Глубина оформления заказа». Выберите «Только этот элемент» или «Непосредственные дочерние элементы, включая папки» в зависимости от ваших требований. Рекомендуется второй вариант, так как, если вы хотите работать с вложенной папкой, вы можете напрямую продолжить в следующий раз, иначе вам придется снова выполнить всю эту процедуру для вложенной папки.
Шаг 4 : Родительская папка (и) теперь должна быть доступна в вашей локально выбранной папке и теперь контролируется SVN (теперь должна присутствовать скрытая папка «.svn» или «_svn»). Теперь в репозитории щелкните правой кнопкой мыши отдельный файл, который вы хотите получить отдельно, и выберите параметр «Обновить элемент до ревизии». Теперь с единственным файлом можно работать и вернуть его в репозиторий.
Надеюсь, это поможет.
Этот вопрос освещен в:
http://subversion.tigris.org/issues/show_bug.cgi?id=823
Прикреплен скрипт, который позволяет вам извлечь один файл из svn, внести изменения и зафиксировать изменения обратно в репозиторий, но вы не можете запустить "svn up", чтобы извлечь остальную часть каталога. Он был протестирован с помощью svn-1.3, 1.4 и 1.6.
.Ответ Стива Джессопа мне не помог. Я читал файлы справки для SVN, и если у вас просто есть изображение, вы, вероятно, не захотите возвращать его снова, если только вы не работаете в Photoshop, поэтому команда export лучше, чем checkout, поскольку она не имеет версии ( но это незначительно).
И --depth ARG должен быть не пустым, а файлами, чтобы получить файлы в ближайшем каталоге. Таким образом, вы получите все поля, а не одно, а пусто возвращает ничего из репозитория.
svn co --depth files <source> <local dest>
или
svn export --depth files <source> <local dest>
Что касается других ответов, cat позволяет вам читать содержимое, которое подходит только для текста, а не для изображений всех вещей.