Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Методы свойств только дадут Вам последнее количество пересмотра файла, у Вас есть свойство в, не главный пересмотр целого репозитория (а-ля нижний колонтитул Переполнения стека). Если Вы будете желать это, то необходимо будет использовать svnversion.
Я недавно начал использовать Capistrano на проекте и этом превосходный и очень гибкий и мощный. Я закончил тем, что отклонился довольно далекий от его нормального использования, но оно делает одно развертывание "щелчка" намного легче.
Я - поклонник использования capistrano для нажатий. Обратитесь к здесь.
Вы могли использовать свойство $Rev$ SVN для получения числа пересмотра в нижний колонтитул.
Если Вы хотите обновить номер версии в проекты AssemblyInfo.cs, можно интересоваться этой статьей:
CodeProject: Используйте числа Пересмотра Подверсии в своих Проектах Visual Studio
Если Вы включаете Ключевым словам SVN затем каждый раз, когда Вы регистрируетесь в Подверсии проекта, сканирует Ваши файлы для определенных "ключевых слов" и заменяет ключевые слова некоторой информацией.
Например, Во главе моих исходных файлов я создал бы заголовок, содержат следующие ключевые слова:
'$Author: $
'$Id: $
'$Rev: $Когда я проверяю этот файл в Подверсии, эти ключевые слова заменяются следующим:
'$Author: $ paulbetteridge
'$Id: $ myfile.vb 145 2008-07-16 15:24:29Z paulbetteridge
'$Rev: 145$
Сценарий к svn обновляет по мере необходимости.
SVN поддерживает ключевые слова. Можно добавить, какие ключевые слова Вы хотите развернуть до свойства ключевых слов, и SVN расширится затем. Посмотрите $Id$ или $Rev$ или ключевые слова, описанные в книге SVN.
Сначала включите замену ключевого слова на файл, где Вы хотите иметь информацию о пересмотре:
svn propset svn:keywords "Rev" file.txt
Добавление к файлу, где Вы хотите информацию о Пересмотре, сохранило:
$Rev$
Дополнительные материалы для чтения: http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html
Действительно простой способ управлять этим состоит в том, чтобы установить Ваше приложение следующим образом:
Просто сделайте свое приложение развертывания рабочей копией Вашей соединительной линии (svn co
проект к Вашему корню/www), и Вы работаете svn up
через ssh консоль (ssh user@host.com svn up /path/to/project
) когда необходимо обновить. Можно также откатывать с соответствующими механизмами контроля. Это важно: если Вы делаете это, добавьте RewriteRules (или эквивалентный) к Вашему .htaccess (или эквивалентный) для запрещения доступа к .svn каталогам. Если Вы не можете сделать вышеупомянутого, работать svn export
через ssh вместо этого (таким образом, это не будет 'рабочая копия'), но это естественно будет медленнее, чем выполнение up
.
Кроме того, можно посмотреть на то, что Ruby on Rails делает с Capistrano.. это - то же фундаментальное понятие, но поддерживает транзакционные резервные копии, если обновление идет не так, как надо в середине путем хранения каждого контроля в отдельной папке и symlinking "последнее" к/www каталогу.
Материал ключевых слов перестанет работать в большом количестве случаев - как то, если Вы изменили источник перед развертыванием, или если Вы зарегистрируетесь из одного каталога в Вашем проекте затем, то другой каталог в том же проекте будет иметь различные числа пересмотра. Проверьте документы тщательно, чтобы удостовериться, что ключевые слова делают то, что Вы думаете, что они делают.
Лучший путь состоит в том, чтобы использовать svnversion программу для генерации информации о проверенных каталогах во время компиляции или время развертывания. Svnversion покажет информацию о версии ВСЕХ Ваших каталогов, а также установки флага, был ли источник локально изменен.
Метод я предстал перед своими php проектами, может не быть лучший метод, но через какое-то время ищущий, конечно, кажется, должен сделать контроль, выполнять проверку версии, вытереть .svn папки и идти дальше. Вот часть сценария оболочки, который я записал:
(сначала, Вам нужен сценарий контроль Ваш repo),
# get the svn revision number and create a RELEASE file
svnvers=`svnversion .`
echo "version: $svnvers"
echo "<release><development>0</development><revision>$svnvers</revision></release>" > RELEASE
# remove all .svn directories
find . -name .svn -exec rm -rf {} \;