imageГитхаб — великолепный агрегатор репозиториев и инструмент для коллективной работы. К сожалению, многие возможности конфигурирования на стороне сервера (вроде коммит хуков) остаются недоступными. Но ситуация постепенно меняется в лучшую сторону.

Случилось то, чего многие ждали довольно долго. А именно: недавно была анонсирована фича, под названием protected branches, которая позволяет настроить правила работы с ветками в рамках репозитория. Да, теперь можно запретить force push в master!

Под катом скриншоты и выдержки из блога разработчиков.

Функция защищенных веток (protected branches) дает возможность администраторам репозиториев запретить операцию force push в заданные ветки.

Если опция активна для ваших репозиториев, мы можете настроить ее на вкладке в настройках репозитория:

скриншот настроек ветки



В дополнение к возможности блокировки force push, можно выставить список обязательных проверок (status checks). Эта функциональность работает благодаря Status API, соответственно поставить на проверку можно любое интегрируемое действие, такое как запуск сборщика, прогон тестов, прогон статического анализатора и т.п.

Если хотя бы одна из обязательных проверок не проходит, кнопка «Merge» не будет активна:



Чтобы статусам можно было верить, ветка должна быть актуальной. Это позволяет гарантировать, что после слияния ничего не сломается. Новая кнопка «Update branch» позволяет одним нажатием влить последнее состояние базовой ветки (например master) в текущую, а затем выполнить проверки:



Больше информации по теме можно получить на странице помощи.

От себя добавлю, что запрет на force push, с моей точки зрения — это самое толковое, что появилось на гитхабе за последнее время. Теперь можно не переживать, что джуниор испортит мастер ветку неаккуратным пушем. Конечно, данная проблема решалась и другими способами. Запретить форс пуш можно было в корпоративных репозиториях, но только для основной ветки, либо на весь репозиторий целиком.

До появления защищенных веток, отдельным разработчикам рекомендовали выставлять хуки на операцию push, чтобы локально предотвратить святотатство. Понятное дело, что это все равно не давало 100% гарантий.

В иных коллективах бывает принята модель, при которой каждый сотрудник должен сделать форк репозитория и выставлять пул реквесты из него. Соответственно, прямой доступ к репозиторию дается только избранным. Однако это не всегда оказывается удобным.

Будем надеяться, что гитхаб будет радовать нас и впредь.

P.S.: Опция была анонсирована 3 сентября. На данный момент у меня в публичном репозитории она работает (кстати, мы выпустили очередной релиз).

Комментарии (8)


  1. putnik
    07.09.2015 20:00
    +4

    Тот редкий случай, когда в Bitbucket'е что-то появилось намного раньше.


    1. Halt
      07.09.2015 20:15
      +1

      Как говорится, лучше поздно, чем никогда :)


    1. creker
      07.09.2015 21:09
      +8

      Да и в gitlab давно это есть


      1. monah_tuk
        08.09.2015 05:53

        В гитлабе к интерфейсу малость привыкнуть не могу. А так, доставляет что там Asciidoc поддерживается :) Ну и приватные репозитории в свободное пользование.


        1. Borz
          08.09.2015 12:01
          +1

          в GitHub как бы тоже Asciidoc поддерживается. создайте в корне не README.md, а README.adoc к примеру


          1. monah_tuk
            08.09.2015 13:09

            Не знал, спасибо!


        1. wrewolf
          08.09.2015 12:29

          интерфейс там да, сделал шаг вперед. я тоже первое время никак не мог привыкнуть, а потом втянулся. но не хватает дерева файлов как плагин для хрома под гитхаб Octotree


  1. mifki
    07.09.2015 23:58
    +5

    Лучше б они сделали возможность давать выборочный доступ подключенным приложениям. А то или ничего, или на запись ко всему.