Ничего себе, я почти очень не хочу добавить другой ответ, когда у нас есть 57 различных способов рекомендовать эти NullObject pattern
, но я думаю, что некоторые люди, заинтересованные этим вопросом, хотели бы знать, что существует предложение по таблице для Java 7 для добавления "пустая безопасная обработка" — оптимизированный синтаксис для if-not-equal-null логики.
пример, данный Alex Miller, похож на это:
public String getPostcode(Person person) {
return person?.getAddress()?.getPostcode();
}
?.
средства только разыменовывают левый идентификатор, если это не является пустым, иначе оцените остаток от выражения как null
. Некоторые люди, как член Отряда Java Dick Wall и эти избиратели в Devoxx действительно любят это предложение, но также существует оппозиция, на том основании, что это на самом деле поощрит больше использования null
как значение сигнальной метки.
Обновление: официальное предложение по пустому безопасному оператору в Java 7 было отправлено под Монета Проекта. синтаксис немного отличается, чем пример выше, но это - то же понятие.
Обновление: пустое безопасное предложение по оператору не превращало его в Монету Проекта. Так, Вы не будете видеть этот синтаксис в Java 7.
Я использую Git непосредственно в представлении ClearCase.
Тогда я мог бы git2svn
вернуть контент в SVN, если бы у меня был репозиторий SVN для синхронизации.
Примечание: чтобы инструмент работал непосредственно в представлении ClearCase, я должен использовать представление моментальных снимков в для записи в файлы, даже если они еще не извлечены. Затем для любого действия, которое я считаю завершенным, я обновляю представление снимка, которое позволяет мне перечислить все "захваченные" файлы. Я проверяю их, а затем возвращаю.
Проблема, с которой я столкнулся бы при работе с SVN в этом случае (репозиторий ClearCase для клиента), заключалась в следующем:
По крайней мере, с Git у вас есть:
Просто к сведению: Это может быть вам чем-то полезно: Переход с SVN на ClearCase
Это не синхронизирует данные, но если вам нужно выполнить миграцию, это может помочь.
Если clearcase поддерживает командную строку, вы сможете написать сценарий для проверки в clearcase и настроить svn для его автоматического выполнения при фиксации кода ( обработчик post-commit ])
В этой статье описано несколько способов для этого:
http://www-01.ibm.com/support/docview.wss?ratlid=cctocbody&rs=984&uid=swg21258843 .
В основном варианты:
1) Если вы не заинтересованы в ведении истории версий и просто хотите начать с последней версии или предварительно выбранной конфигурации, вы можете использовать команду clearfsimport . Для получения дополнительной информации см. Справочное руководство по командам ClearCase по теме clearfsimport (cleartool man clearfsimport).
2) Если вам требуется история версий, вы можете оценить инструмент с открытым исходным кодом svn2cc .
] РЕШЕНИЯ:
В Subversion можно создавать представления, представляющие определенные этапы в потоке разработки. Оттуда вы можете последовательно импортировать версии из каждого представления, используя вышеупомянутую команду clearfsimport. Команда clearfsimport в этом сценарии будет создавать новую версию элемента при каждом запуске, автоматически применяя метку к импортированным версиям.
Вы можете попробовать использовать clearexport_cvs, поскольку репозиторий Subversion очень похож на репозиторий CVS (Concurrent Versions System), для получения дополнительных сведений об этой утилите экспорта см. Справочник команд IBM Rational ClearCase.
Да, CollabNet предлагает коммерческий продукт специально для этой цели, который называется CollabNet Subversion Connector.
Нам нужно было именно это для проекта, над которым я работал. Команде было удобнее в svn, а корпоративным стандартом был ClearCase. Итак, я написал сценарий для непрерывной миграции транка в clearcase и запустил его на нашем сервере сборки.
Я поместил сценарий здесь: http://dvae.net/blog/2009/09/clearcase- to-svn /
Мы настроили задание на нашем сервере сборки, которое периодически запускалось и выполняло миграцию с использованием clearfsimport. В качестве сервера сборки мы использовали Luntbuild, но круиз-контроль тоже подойдет. Как и при обычной сборке, мы устанавливаем запуск скрипта только при обнаружении изменений svn. У нас задание запускалось каждые 20 минут, поскольку сервер ClearCase находился в другой стране, и все операции выполнялись медленно, а синхронизация занимала 40 минут. Я предлагаю бегать как можно чаще.
Сценарий основан на ClearCase UCM, если вы не должны удалить 'cleartool mkact' и в конце создать метку вместо базовой линии.
Я установил комментарий в прозрачном регистре как объединение всего SVN фиксируется с момента последней синхронизации.
Я считаю его надежным, и единственная причина, по которой он завершился неудачей, заключалась в том, что триггер Clearcase (например, триггер «злой близнец») остановил проверку. Когда это происходит, сборка завершается ошибкой, Lunbuild отправляет электронное письмо, и затем мне приходится вручную выполнить обратное слияние истории, чтобы избавиться от проблемы злого близнеца, зафиксировать и перезапустить.
и единственная причина, по которой это не удалось, заключалась в том, что триггеры Clearcase (например, триггер «злой близнец») останавливали проверку. Когда это происходит, сборка завершается неудачно, Lunbuild отправляет электронное письмо, и затем мне приходится вручную выполнить обратное слияние истории, чтобы избавиться от проблемы злого близнеца, зафиксировать и перезапустить. и единственная причина, по которой он потерпел неудачу, заключалась в том, что триггеры Clearcase (например, триггер «злой близнец») останавливали проверку. Когда это происходит, сборка завершается неудачно, Lunbuild отправляет электронное письмо, и затем мне приходится вручную выполнить обратное слияние истории, чтобы избавиться от проблемы злого близнеца, зафиксировать и перезапустить.