Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Основное различие между рекомендуемым расположением и Вашим предложенным расположением - то, что рекомендуемое расположение несколько самодокументирует как, туда, где фиксировать вещи, и как оно ведет себя.
, Например, в рекомендуемом расположении, очевидно, что вся новая разработка посвящает себя соединительной линии, и большинство ответвлений сделано из соединительной линии. Кроме того, очевидно, что Вы ничего никогда не должны фиксировать в теги/. Наконец, безопасно предположить, что ответвления являются действительно ответвлениями, которые могут содержать изменения, характерные для той конкретной цели ответвления.
С предложенным расположением, некоторые из этих вещей являются менее бесспорными./development/stable переходится от / тока? Каково отношение между/development/stable и/production/stable? Какой из этих каталогов является тегами, и которые я могу на самом деле проверить материал в?
, Конечно, это поведение может быть зарегистрировано, но путем придерживания принятого расположения, которое все используют, у Вас будет более легкое время, получая новые наймы до скорости о том, как это работает.
Я попытаюсь подвести итог ответов до сих пор:
<час>я сделал это общественным ответом; не стесняйтесь исправлять или расширять любые дефициты, за которые я приношу извинения.
Вы описали две в значительной степени стандартных модели для организации репозитория: dev-test-prod и магистральное ответвление. Eric Sink делает хорошее задание описания их в его ПРАКТИЧЕСКОЕ РУКОВОДСТВО Управления исходным кодом . Одна вещь отметить состоит в том, что способ, которым большинство людей использует магистральное ответвление, состоит в том, чтобы создать ответвление для каждой версии, поскольку это выпущено клиентам, который затем становится ответвлением обслуживания.
я был бы склонен предпочитать магистральное ответвление, так как оно не требует, чтобы миграция каждого изменения от разработки протестировала к производству. Только изменения, которые должны быть бэкпортированы к ответвлениям maintance или bugfixes, которые мигрируют от ответвления maintance до соединительной линии, должны быть перемещены.
Однако одно обстоятельство было dev-test-prod, могло бы быть предпочтительным, находится в веб-разработке, где понятие версий, выпущенных клиентам, действительно не существует. Напоминание, в этом случае, было бы тем, что работает на сервере прямо сейчас, в то время как код работается на в dev и тесте и постоянно перемещается в приложение, вместо того, чтобы быть выпущенным в одном большом блоке.
Я думаю, неоднозначность гибкости и предотвращения является Вашим ответом.
При помощи номеров версий Вы не связываете себя туда, где та версия развертывается.
, Например, у Вас могло бы быть версия 1.3, которая развертывается как разработка, 1.2, который находится в тесте и 1.1, который работает. Если бы Вы хотели Вас, то могла бы легко добавить другая среда подготовки для другой версии, не имея необходимость изменять Ваше расположение подверсии.
Никто не может аргумент, какова версия 1.1 кода, но "стабильная производством" версия неоднозначна.
Каждый раз, когда Вы имеете дело с реальными продуктивными средами, Вы хотели бы, чтобы Ваши разработчики смогли понять Ваш репозиторий максимально легко. Хороший способ сделать это путем соблюдения рекомендуемого расположения стандарта Подверсии.
Хотя я лично использую расположение, рекомендуемое в книге SVN, Вы, вероятно, не должны ограничивать себя им если Ваши разметки лучше для Вас. Я сохранил бы ответвление , каталог начиная с его использования и цели является довольно четким из имени. Кроме этого, действительно, что-либо идет, если это работает на Вас.
Я думаю, что Ваш план довольно хорош, действительно. Как Вы объясните ответвления, где программист блуждает прочь на их собственном просто попытка чего-то? Возможно, как/development/jfm3-messing-around?