Repository is archived
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Простой набор правил и комманд, заточеных для работы в git-flow с использование в качестве удаленного репозитория github
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

 Project Readme

Abak-flow

Code Climate Dependency Status Gem Version

Нет, это не новая идеология ведения разработки в проекте, это всего лишь набор утилит которые помогают связать использование git-flow и github flow

Начиная с версии v0.2.1 используется авторизация OAuth2. Как ей пользоваться?

Начиная с версии v1.0.0 используется новый формат конфигурации. Как мигрировать старую?

Начиная с версии v1.1.0 используется новый формат токена для Github API. Как обновить?

Установка

$ gem install abak-flow -v '>= 1.1.0'
$ git config --global alias.request '!request'
$ git request configure
$ git remote add upstream git://github.com/GITHUB_PROJECT_USER/GITHUB_PROJECT_NAME.git

А если я использую прокси, как быть?

При конфигурации вас спросят о прокси сервере. Если его нет, оставьте поле пустым

Далее по приоритету идут переменные окружения. Сначала http_proxy, затем HTTP_PROXY

Т.е если вы используете переменные окружения, то просто не указывайте прокси в конфиге


Важно: Пароль никогда и нигде не будет сохранен. Он будет использован для создания персонального токена

Заметьте: При конфигурации необходимо указать email адрес под которым вы заходите на github

Обратите внимание: В данном контексте под upstream подразумевается адрес репозитория в который будут оформляться пул реквесты. А репозиторием origin будет являться ваш форк

С чего начать?

$ git request checkup

или

$ git request help

Примечание: Вообще-то все комманды поддерживают опцию --help, но вот именно git request --help успевает перехватиться самим git и он конечно неодумевает как ему показать хэлп по внешней комманде

Список команд

$ git request configure
$ git request checkup
$ git request compare [--base <имя ветки>] [--head <имя ветки>]
$ git request publish [--base <имя ветки>] [--head <имя ветки>] [--title <заголовок>] [--body <описание>]
$ git request done

Концепция

Идеология git-flow использует следующий набор веток:

  • master - всегда пригодна для развертывания
  • develop - основная ветка разработки
  • hotfix - ветка для изменений которые попадут на продакшен сервер
  • feature - ветки для крупных задач

Github-flow же наоборот ведет основную разработку в ветке master, но при этом master является пригодным для развертывания в любой момент.

После долгих раздумий было принято применить следующий набор правил, для разработки на github:

  1. Вся разработка любой задачи и функционала ведется только в ветках feature
  2. Разработаный функционал из ветки feature оформляется pull request только в ветку develop
  3. Все исправления ошибок, которые должны попасть на продакшен сервер делаются только в ветках hotfix
  4. Исправленные ошибки из ветки hotfix фофрмляются pull request только в ветку master
  5. После получения исправлений на текущий момент в репозитории инициируется merge ветки master в develop

Примеры использования

Самый простой способ начать новую задачу:

$ git checkout develop
$ git checkout -b feature/TASK-001
$ touch 'hello.txt' && echo 'Hello world!' > hello.txt
$ git commit -a -m 'Hello world commit'
$ git request publish

Внимание: Не нужно называться ветку TASK. Используйте префикс задач из jira

Теперь то же самое, только словами:

  • Переключимся в ветку develop
  • Создадим ветку в которй будем выполнять задачу
  • Простое создание нового файла
  • Git процедуры добавления своих изменений в индекс
  • Затем публикация вашей ветки на вашем форке (если таковая уже есть, то просто обновление), затем оформление пул реквеста из этой ветки в соответствующую правилам ветку на upstream (в данном случае это будет ветка develop)

Для задач, которые должны быть выполнены в виде hotfix принцип тот же:

$ git checkout master
$ git checkout -b hotfix/TASK-001
$ …
$ git request publish

На самом деле переключаться на master или develop в самом начале вовсе не обязательно, этот шаг был приведен для ясности

Маленькие хитрости

Если сразу правильно именовать ветки, т.е ветку с задачей создавать с именем, такого формата TASK-001, то, в описание pull request автоматически вставится ссылка на задачу в jira, а в имя pull request сразу вставится название, состоящее из имени задачи, т.е TASK-001

Если делать реквест из ветки не соответствующей формату TASK-001, то в название подставится последний commit message. Если вы считаете, что нужно указать, что-то другое - всегда можно воспользоваться опцией --title

А помощь?

Многие команды имеют какие-то дополнительные опции. Но они нужны только в экзотических случаях. Но при любом раскладе подсказку и тонкий намек всегда можно получить воспользовавших такой командой:

$ git request publish --help

В заключении

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

Лицензия

Abak-flow выпускается под лицензией MIT.