Там какой-либо путь состоит в том, чтобы изменить конфигурацию центрального репозитория для запрещения какого-либо удаленного продвижения к основному ответвлению (использующий мерзавца)? Это было бы только обновлено через ответвление, объединяющееся владельцем выпуска.
Возможно сделать в дочерних репозиториях, но к сожалению это является не всегда достаточно надежным, легким забыть делать это на новой машине - никакой способ защитить от случайных нажатий. Разработчики должны смочь вытянуть от любого ответвления и пододвинуть обратно к любому ответвлению, за исключением master
, который мы хотим рассматривать как только для чтения. Действительно ли это возможно с git
? Или мы пробуем неправильный рабочий процесс.
Обновление tl; доктор: благодаря Charles Bailey ответ проверяет ведущее устройство и добавляет следующую конфигурацию:
receive.denyCurrentBranch = true
+ 1 для Spreedly.com
Также существует Chargify.com, Recurly.com и некоторые другие. См.: http://buyersvote.com/categories/the-best-subscription-billing-systems
-121--4999619-Я думаю, что вы слишком амбициозны . Просто показать людям новый и незнакомый синтаксис, скорее всего, немного «потеряет» их, поэтому добавление еще более резких изменений может быть шагом слишком далеко. Не забывайте: вы всегда можете сделать вторую презентацию, если первая популярна!
Я сделал это довольно много в моей компании некоторое время назад; это было только , когда я давал презентацию, что я вдруг понял, как странно и непонятно какой-то scala синтаксис появляется для аудитории (или, возможно, это был мой стиль доставки!). Я обнаружил, что следующее хорошо пошло вниз:
итеративный подход - возьмите один метод Java (не целая программа), а затем конвертируйте в действительно тупой подобно-для-типа Scala (объявления типов и все). Теперь примените один набор замещений scala (например, вывод типа), затем другой (например, псевдонимы типа), затем другой (например, закрытия) и т.д. Конечным результатом этого, вероятно, будет около трети кода Java, гораздо более читаемого и лаконичного, что можно противопоставить, поскольку люди теперь знакомы с происходящим. Удивительно, в какой степени Java - это просто перепутанная куча типов и ключевых слов, если смотреть в сравнении с чем-то вроде scala.
Найдите время, чтобы объяснить все стороны - например, пройти сопоставление шаблонов в некоторых деталях и как это работает. Не пропускайте экстракторы или случай x:: xs
. Я обнаружил, что люди действительно были заинтересованы в этом и что было так здорово в этом!
Функциональное программирование style занимает некоторое время. Неразумно заставлять людей сразу же это понимать. Я программировал в Скале больше года, и меня все еще смущают некоторые из них.
Использование REPL действительно круто для некоторых низкоуровневых вещей, таких как демонстрация того, как все в scala (включая синхронизированное, try-catch
и т.д.) является выражением с типом.
Когда вы оправдываете удивительность вещей более низкого уровня, надеюсь, у вас будет аппетит людей к большему. (Я смотрел на реализации троичного оператора со знакомым коллегой буквально на прошлой неделе, и он счел это немного запутанным. Попытка представить целое приложение группе новичков пути слишком велика!)
-121--4268620- Необходимо просмотреть образец hook обновления
, называемый update-paranoid
, в каталоге contrib
дистрибутива git. Он позволяет настраивать списки ACL для отдельных ветвей, ограничивающие количество пользователей, которым разрешен доступ к каким ветвям. Таким образом, обновление основных данных может быть ограничено только владельцами деблокирования.
Я не совсем уверен, что вы имеете в виду под «обновлением только путем слияния ветвей». Я предполагаю, что ваше центральное хранилище голое,в этом случае ветви обычно обновляются только нажатием. Нет никакой концептуальной разницы в гите между толчком фиксатора, который является слиянием, и таковым, который не является, поэтому я не уверен, какими должны быть ваши критерии ограничения типа обновления для мастера.
В случае, если вы нажимаете на неоголенный центральный репозиторий, а master
всегда является извлеченной ветвью, вы можете просто установить для конфигурационной переменной receive.denyCurrentBranch
значение true
или отклонить
.