Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
SVN с TortiseSVN (в Windows) превосходен. Я настоятельно рекомендую его.
в нашей компании мы используем alienbrain, но мы мигрируем на По необходимости. По необходимости имеет все, что Вы хотите: это код hadles и данные, он интегрирует инструменты для непрерывной интеграции, это обрабатывает локальный (на разработчика) репозиторий, таким образом, Вы можете регистрация в своем локальном репозитории прежде, чем фиксировать на сервере.
я голосую за По необходимости
Подрывную деятельность легко масштабироваться и распасться. По необходимости затраты тысячи долларов только для горстки сотрудников, пути к дорогому, и кроме того, это не предлагает ничего, что не предлагает подрывная деятельность.
Подрывная деятельность действительно легка, лучше, чем cvs.
я рекомендовал бы мерзавцу, если только их поддержка окон была лучше
Если они все работают над тем же продуктом, вероятно, По необходимости.
, Если существует много меньших проектов (2 - 50), я выполнил несколько полей Subversion (SVN).
Давайте посмотрим опции.
1 - По необходимости. Используемый партиями компаний (поскольку люди сказали там), Adobe, Amazon, Миссисипи, Google Companies, которая стала, усовершенствованной, и зависят от продажи программного обеспечения каждый день для помещения еды на таблицу, это - их выбор. Я предполагаю, что это - путь, которым я пошел бы, если бы мне было нужно поддерживаемое "глобальное решение" для множества сайтов, и т.д. Хороших для Победы/Linux (не уверенный в Macs хотя)
2 - SVN. Используемый многочисленными командами также, KDE использует его (огромный, огромный проект) в настоящее время в пересмотре 880,000 (да!) Очень практичный и для Windows и для использования Linux (даже при том, что я назвал бы TortoiseSVN ниже среднего числа в некоторых аспектах) Коммерческая поддержка может быть законтрактована также. Хороший для Windows / Linux / Macs также.
3 - Accurev, Если я пытался быть "острым". Я не развернул бы его на целой компании без некоторого тестирования и привыкания к нему сначала.
4 - Основа Команды MS Это может быть хорошее решение, но я никогда не пробовал и являюсь, вероятно, Windows только.
5 - Мерзавец / Bzr / Hg - Bzr и Hg имеют их "черепах" так, хороший для Windows (даже при том, что я не уверен в зрелости), Мерзавцем был бы Linux только в настоящее время, даже при том, что это ОЧЕНЬ ХОРОШО (и намного лучше и легче использовать, чем несколько лет назад).
я никогда не был бы, АБСОЛЮТНО НИКАКОЙ СПОСОБ, которым JOSE используют Clearcase. ПЕРИОД Это - пустая трата общих денег и время и исправность.
Избегайте: CVS / Clearcase / что-либо более старое
По необходимости получает мой голос также. Я не использовал его на таких крупных проектах, но это - абсолютно горное тело в моей среде. Это также имеет впечатляющее резюме о крупных проектах, также.
[слух] я услышал, говорят, что Microsoft использовала его для Vista. [/rumor], По-видимому, это была настроенная версия для них, но это не становится намного больше, чем это.
По необходимости, как доказывают, масштабируем к 5 000 + пользователи на единственном сервере в Google, видит: Жизнь на Краю: Контроль и Выполнение Очень Большого По необходимости Установка
казалось бы, что многие крупнейшие компании-разработчики программного обеспечения используют По необходимости или исключительно или как их основной SCM. Например: Adobe, Cisco, SAP, Symantec, EA, Ubisoft и Autodesk - все По необходимости пользователи. Это не прекрасно, но это все еще превосходит SVN или TFS (Ни один из которых не плох в своем собственном праве)
По необходимости и TFS являются единственными опциями, о которых я знаю. Я знаю, что они оба использовались на крупномасштабных проектах в Microsoft. Хранилище может масштаб, настолько большой, но я не знаю, идет ли это вне 500-1000 пользователей.
Я на самом деле проверил бы Сервер Основы Команды. Это - очень хорошая система, которая может масштабироваться, и, вероятно, легко пройти внутренний это отделы. Я знаю, что это - центральный Windows, но можно использовать дополнения для Linux/Mac также, и можно использовать прокси для некоторых сайтов с медленными соединениями.
И я думал бы о наличии 2 систем в крупной организации, оно может помочь получению лучшего в некоторых отдельных случаях.
Если Вы имеете в виду 3000 + разработчики wokring на той же кодовой базе, у меня нет подсказки. Если бы Вы означаете работать над несколькими сотнями проектов на различных местоположениях, и у Вас должен быть стандарт, я пошел бы для somethins, популярного у серьезной поддержки подключенного пользователя, т.е. не что-то затеняют, который дает Вам 10 хитов на Google.
Лично я согласился бы на SVN, я нахожусь на DEP IT с несколькими сотнями devs и предпочтительного приложения управления исходным кодом, там SVN.
:)
//W
По необходимости достойная система и масштабируется хорошо.
я работаю в организации приблизительно 5 000 сотрудников, и по необходимости являюсь быстрой и эффективной системой. Это масштабируется хорошо, имеет хорошую поддержку ответвления, имеет атомарные фиксации. Каждое изменение имеет число изменения, которое может использоваться для "археологии программного обеспечения" и хоста других замечательных особенностей.
Кроме того, это имеет хорошую поддержку окон, Mac и Unix, включая хорошую командную строку и имеет хорошую поддержку сценария.
я использовал CVS прежде, и он не масштабируется хорошо группам, больше, чем приблизительно 25-50 инженеров (главным образом из-за атомарных операций и производительности)
Я использовал бы любой SCM, который не имеет пессимистической блокировки ( http://old.davidtanzer.net/?q=node/118 ) механизмами. Особенно, потому что Вы хотите, чтобы люди были в состоянии "отредактировать" тот же файл одновременно в любом значительном проекте.
Лично я выбрал бы SVN с некоторым решением для распределения, но с тех пор в SVN Вы только отправляете то, что Вы изменяете (который должен быть очень мало для каждой фиксации так или иначе), сеть наверху является очень маленькой. Также загрузка сервера может быть обработана с большим количеством аппаратных средств к некоторой точке. Я еще не нашел потолок для аппаратного масштабирования при использовании SVN.
Другой выбор может включать "мерзавца", которого используют люди Ядра Linux, но у меня действительно нет опыта с этим.
Не используйте CVS!! Если Вы хотите модель CVS, Подрывная деятельность является намного лучшей альтернативой.
Я сомневаюсь, есть ли у Вас 3 000 разработчиков в Вашей организации вся работа над той же кодовой базой. Я работаю на среднюю крупную компанию-разработчика программного обеспечения, и у нас, вероятно, нет этого многими во всей компании, но существует также много независимых проектов.
Внутренне некоторые группы поставляют выпуски другим группам для использования в их продуктах; этим не управляют через систему SCM.
у Нашей собственной группы есть свой собственный SCM, но существует только приблизительно 25 активных разработчиков. Мы используем CVS, и быть довольно честным это не действительно до него (мы переместили бы, но имели бы много сценариев / рычаги фиксации и другие биты & части, которым нужна большая работа для изменения). Проблема с использованием CVS на разумной кодовой базе размера состоит в том, что много операций являются очень медленными и включают блокирование других разработчиков.
Я использовал бы AccuRev. Я использовал svn, cvs, clearcase (основа, ucm), ccc/harvest, но ни один из них не может разбить преимущества AccuRev. "3000 + организация разработчика с несколькими сайтами"? можно использовать распределенное решение Accurev (AccuReplica) для того - которые означают, что у Вас есть один единственный главный сервер и столько, сколько Вы хотите копии на удаленных сайтах (таким образом, те с "медленным каналом" не пострадают очень)
, Прежде всего, AccuRev приносит уникальный подход - действительно новое понятие/дизайн/реализация инструмента SCM на основе потоков. Не (плохим) способом ClearCase-UCM сделал это (потому что ClearCase "потоки" были в конечном счете ответвлениями), но гладким современным способом.
лучшее должно попробовать его самостоятельно, я знаю, что они предлагают суд над 30 днями с достаточным количеством лицензий для играния с инструментом - пробуют его, и Вы не захотите рассматривать другие инструменты. Мое обещание.
Если Вы имеете 1000 + разработчики, работающие над единственной частью программного обеспечения, у Вас есть ресурсы для инвестирования в большое количество собственных инструментов. Независимо от того, что Вы выбираете, Вы, вероятно, сделаете много работы для адаптации его к ситуации.
Сервер Основы Команды Microsoft используется в Microsoft в некоторых очень многочисленных командах, и команда TFS работает над тем, чтобы заставлять его увеличиться хорошо. Кроме того, интеграция управления исходным кодом & отслеживание ошибок привлекательно. Это не дешево, и администрирование является действительно стычкой, которую это не масштабирует вниз хорошо малочисленным командам, но для Вашей ситуации, можно предоставить те затраты. Вы, вероятно, также хотите быть в состоянии обратиться к крупной организации поддержки как Microsoft, имеет, когда Вы входите для беспокойства (но если Вы идете с бесплатным программным обеспечением, тогда у Вас есть опция выполнения той внутренней поддержки).
, Если Вы имеете 1000 + инженеры в Вашей компании, но они работают над частями программного обеспечения, которые поставлются отдельно, я думаю, что Вы хотели бы поместить каждого на его собственный сервер. Это заставляет производительность масштабироваться лучше, а также администрирование. Я настоял бы на том, чтобы иметь всего одну технологию для управления исходным кодом, как бы то ни было.
Я использовал бы bitkeeper. Я использовал bitkeeper, clearcase, accurev, по необходимости, подрывная деятельность, cvs, sccs и rcs, и изо всех тех bitkeeper были далеки и выше лучшего. Я играл с мерзавцем, и был впечатлен его скоростью, но я думал, что его UI был немного громоздким (хотя то мнение было сформировано только после использования его в течение нескольких неполных рабочих дней).
bitkeeper имеет довольно неуклюже выглядящие графический интерфейсы пользователя, но они исключительно функциональны. bitkeeper инструменты командной строки возможно лучше среди аналогов, и ее возможности слияния были абсолютно фантастическими.
, Что я наиболее любивший о bitkeeper (и это, вероятно, верно для всех распределенных систем) - то, что ответвления были очень дешевы. Создание ответвлений было образом жизни, а не чем-то для боязни.
По необходимости
, Что я люблю приблизительно по необходимости, говорят по сравнению с CVS, то, что управление ответвлением, должен более сложный (но все еще довольно легкий), и Вы не должны прослушивать центральную бюрократию для создания ответвлений/маркировок и т.п.. Другими словами, это позволяет отдельной команде (или разработчик) управлять их исходными компонентами, как им нравится перед представлением к магистрали, централизованно администрируемой кем-то еще.
, О, я также сказал бы, что это имеет один из лучших графический интерфейсов пользователя там, все еще имея 1-й интерфейс командной строки гражданина класса. Я обычно ненавижу графический интерфейсы пользователя, но их работы.
Если у Вас есть такая крупная организация, тогда не передают под мандат единственный определенный SCM.
я уверен, что они все не работают над тем же кодом, и имело бы смысл позволять самим командам выбрать то, чем они являются самыми довольными.
(Вы, возможно, должны обеспечить некоторое обучение так понимание, как выбрать между Мерзавцем, SVN, некоторой внутренней унаследованной системой.)
Хорошо, прямая правовая оговорка: я - разработчик для компании, названной MKS, который делает систему управления версиями для компаний "предприятия" как часть платформы управления конфигурированием ПО названной Целостность . И тому подобное, очевидный разъем.
, Таким образом, я не могу честно ответить на вопрос.
Однако я хотел бы указать, что люди, предлагающие распределенное управление версиями, пропускают что-то поразительно важное для крупных компаний. Для них менее важно, сколько имеют разработчики гибкости, когда контакт с их системой управления версиями, чем он состоит в том, что они имеют неограниченный контроль над каждой строкой кода, который поставляется. Регулирующее соответствие и аудиты являются путем больше центрального беспокойства, чем, как болезненные слияния.
компания А с 1 000 + разработчики хотят знать, что все делают то, что они, как предполагается, делают и что никто не делает то, что они, как предполагается, не делают, все прослежено, и менеджеры получают прекрасные отчеты и графики, которые они могут вставить в слайды PowerPoint для их менеджеры.
, Если крупная компания особенно не заботится о тех вещах, они, намного более вероятно, оставят ее до отдельных команд разработчиков для выяснения их собственной вещи, в этом случае, 1000 +, разработчики используют мешанину различных инструментов на основе того, что казалось самым удобным в то время.
Во-первых, большой НЕ на CVS. Используя CVS в 2008 похож на управление 92 Isuzu Trooper. Единственная причина они находятся на дороге и этом люди, тратит деньги для поддержания их, по чисто сентиментальным причинам. CVS является старой шляпой, мудрой технологией, и Вы будете сожалеть о нем.
я обычно держался бы далеко от инструментов с открытым исходным кодом в том размере компании, также. Подрывная деятельность является превосходным небольшим инструментом и довольно серьезна, но на всякий случай что Вы спускаетесь или сталкиваетесь с ошибкой, о которой Вы не знали, бремя находится на Вас для фиксации ее, в то время как 3 000 человек сидят сложа руки. По необходимости является дешевым, когда вставлено, что перспектива и я настоятельно рекомендуем его.
меня удивляет, сколько людей, которые подразумевают быть профессионалами SCM, идет со 'свободным'. На поверхности выглядит замечательным к управлению, но когда Вы находитесь под оружием, это помогает иметь высококачественную службу поддержки на Вашей стороне. То, когда Вы разбужены в 3:00 в воскресенье, потому что Ваша команда в Сингапуре не может сделать никакой работы, Вы не будете думать 'свободные', было хорошей идеей.
инструменты Управления исходным кодом в жестком реальном времени, Вы говорите об активах компании и интеллектуальной собственности. Не экономьте на инструментах управления исходным кодом, никогда!
Любой DVCS (BitKeeper, мерзавец, Базар, Подвижный, и т.д.), потому что быть распределенным сократит нагрузку на центральный 'канонический' сервер SCM. Протест состоит в том, что они - довольно новая технология, и не многие люди будет знакомо с их использованием.
, Если бы Вы хотите придерживаться более старой, централизованной модели, я рекомендовал бы По необходимости, если можно предоставить ее, или Подрывная деятельность, если Вы не хотите платить за По необходимости. Я рекомендовал бы подрывную деятельность по CVS, потому что это имеет достаточно функций для создания его стоящим, но достаточно подобно, что devs, кто уже знает CVS, все еще будет удобен.
По состоянию на 2015 наиболее важный фактор должен использовать Распределенный Система управления версиями (DVCS). Основное преимущество использования DVCS: разрешение сотрудничества исходного кода на многих уровнях путем сокращения трения управления исходным кодом. Это особенно важно для 1000 + организация разработчика.
Отдельный разработчик checkins разъединяются от операций сотрудничества. Легкие checkins поощряют чистые единицы независимой работы над кратковременным масштабом (много checkins в час или в день). Сотрудничество естественно обрабатывается в различном, обычно дольше, масштаб времени (синхронизация с другими ежедневно, еженедельно, ежемесячно), поскольку система создается в распределенной организации.
Из опций DVCS, Вы должны, вероятно просто использование Мерзавец и обманывать великие сообщества в GitHub или Битоприемник . Для крупных частных организаций внутреннее сообщество и внутренний исходный код, размещающий , может быть важным (существуют поставщики, продающие частные системы хостинга такой в качестве Притон Atlassian и вероятно другие).
главная причина использовать Мерзавца состоит в том, что это - самый популярный DVCS. Из-за этого:
Мерзавец хорошо интегрируется в широкий спектр наборов инструментальных средств разработки
, Мерзавец известен и используется большинством разработчиков
, Мерзавец хорошо зарегистрирован
, Поскольку альтернатива Мерзавцу, Подвижный также очень хороша. Подвижный имеет немного инструмент для очистки, больше ортогонального набора команд, чем Мерзавец. В конце 2000-х, это раньше лучше поддерживалось, чем Мерзавец в системах Windows главным образом из-за наличия базовых разработчиков, которые заботились больше о Windows.
Для тех, кто хотел бы использовать GUI вместо git
и hg
на командной строке, SourceTree, является большим Windows и приложением OS X, которое представляет чистый интерфейс и Мерзавцу и Подвижный.
По состоянию на 2010, я рекомендовал Подвижный с [1 110] TortoiseHG. Это - лучшая комбинация поддержки Windows и распределенной функциональности управления версиями.
С 2006-2009, я рекомендовал Подрывная деятельность (SVN), потому что это свободно и имеет большую интеграцию с большинством IDE. Для тех в организации, кто перемещается или предпочитает более распределенную модель, они могут использовать Мерзавца для всей своей локальной работы, но все еще согласиться на репозиторий SVN, когда они хотят совместно использовать код. Это - большой баланс между централизованной и распределенной системой. См. Интенсивный курс Мерзавца-SVN для начала работы. Финал и возможно самая важная причина использовать SVN TortoiseSVN, клиент Windows для SVN, который делает репозитории доступа щелчком правой кнопкой далеко для любого. В моей компании это доказало отличный способ дать доступ к репозиторию неразработчикам.
Я хочу сказать мерзавца, но не думаю, что компания того размера будет всем Linux (поддержка Windows мерзавца все еще сосет). Поэтому пойдите с SCM, который Linux использовал перед мерзавцем т.е. BitKeeper
Мерзавец был записан для ядра Linux, которое могло бы быть самым близким примером к такой ситуации, о которой можно найти общедоступную информацию.
Работая в нескольких компаниях с 1 000 + рабочие, я нашел, что в общем и целом, они все используют По необходимости.
я спросил, "Почему Вы не используете что-то еще? SVN? Мерзавец? Подвижный? Darcs?" - и они сказали, что (это - то же для всех компаний) - когда они приняли решение пойти с По необходимости, это было или что, или SourceSafe или CVS - и честно, учитывая те три варианта, я пойду с По необходимости, также.
'более трудным' системам управления версиями трудно нарастить обороты с таким количеством людей, и много преимуществ DCVS менее выгодно, когда у Вас есть объем Ваших команд программного обеспечения, работающих в 18 футах друг из друга.
По необходимости имеет много рычагов API для разработчиков для использования, и для централизованной системы, она имеет много наглости.
я не говорю, что это - лучшее решение - но я, по крайней мере, видел некоторые очень крупные компании, где По необходимости работает, и достаточно хорошо что это почти повсеместно.
Я настоятельно рекомендовал бы SVN с клиентом TortiseSVN и Визуальным-SVN дополнением для разработчиков, использующих Visual Studio.
Я использовал бы Подрывную деятельность. Подрывная деятельность была доказана на многих больших, распределенных, проектах с открытым исходным кодом с многочисленными сообществами разработчиков. Кроме того, транзакционная природа фиксаций Подрывной деятельности делает его идеальным для ситуаций, где соединение не может быть надежным.