abak-flow 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +63 -5
- data/VERSION +1 -1
- data/lib/abak-flow/request.rb +42 -1
- data/lib/abak-flow/version.rb +1 -1
- metadata +6 -6
data/README.md
CHANGED
@@ -3,12 +3,12 @@ Abak-flow
|
|
3
3
|
Нет, это не новая идеология ведения проекта, это всего лишь набор утилит которые помогают связать использование git-flow и github
|
4
4
|
|
5
5
|
# Концепция
|
6
|
-
Идеология git-flow использует
|
6
|
+
Идеология git-flow использует следующий набор веток:
|
7
7
|
|
8
8
|
* *master* - всегда пригодна для развертывания
|
9
9
|
* *develop* - основная ветка разработки
|
10
10
|
* *hotfix* - ветка для изменений которые попадут на продакшен сервер
|
11
|
-
* *feature* - ветки для крупных
|
11
|
+
* *feature* - ветки для крупных задач
|
12
12
|
|
13
13
|
Github-flow же наоборот ведет основную разработку в ветке master, но при этом master является пригодным для развертывания в любой момент.
|
14
14
|
|
@@ -22,13 +22,71 @@ Github-flow же наоборот ведет основную разработк
|
|
22
22
|
|
23
23
|
|
24
24
|
# Установка
|
25
|
-
|
25
|
+
|
26
|
+
$ gem install abak-flow
|
27
|
+
$ git config --global alias.request '!request'
|
28
|
+
$ git config --global github.user AwesomeCoder
|
29
|
+
$ git config --global github.token 0123456789yourf0123456789token
|
30
|
+
$ git remote add upstream git://github.com/anonimus/example.git
|
26
31
|
|
27
32
|
# С чего начать?
|
28
|
-
|
33
|
+
|
34
|
+
$ git request --help
|
29
35
|
|
30
36
|
# Примеры использования
|
31
|
-
|
37
|
+
### Самый простой способ начать новую задачу:
|
38
|
+
|
39
|
+
$ git checkout develop
|
40
|
+
$ git request feature
|
41
|
+
$ touch 'hello.txt' && echo 'Hello world!' > hello.txt
|
42
|
+
$ git commit -a -m 'Hello world commit'
|
43
|
+
$ git request publish
|
44
|
+
|
45
|
+
Теперь то же самое, только словами:
|
46
|
+
|
47
|
+
* Переключимся в ветку develop
|
48
|
+
* Abak-flow создаст ветку, пригодную для оформления pull request (правила именования и правила самого реквеста)
|
49
|
+
* Простое создание нового файла
|
50
|
+
* Git процедуры добавления своих изменений в репозиторий
|
51
|
+
* Затем публикация вашей ветки на вашем форке (если таковая уже есть, то просто обновление), затем оформление pull request из этой ветки в соответствующую правилам ветку на upstream (в данном случае это будет ветка develop)
|
52
|
+
|
53
|
+
Для задач, которые должны быть выполнены в виде hotfix принцип тот же:
|
54
|
+
|
55
|
+
$ git checkout master
|
56
|
+
$ git request hotfix
|
57
|
+
$ …
|
58
|
+
$ git request publish
|
59
|
+
|
60
|
+
*На самом деле переключаться на master или develop в самом начале вовсе не обязательно, этот шаг был приведен для пущей ясности*
|
61
|
+
|
62
|
+
### Обновление ветки на удаленном репозитории:
|
63
|
+
|
64
|
+
$ git checkout feature/TASK-001
|
65
|
+
$ git request update
|
66
|
+
|
67
|
+
### Завершение текущей задачи:
|
68
|
+
Вообще, завершать задачу лучше только после того, как ваш pull request был принят. Почему? На самом деле по ряду причин. По умолчанию эта команда удаляет как вашу текущую ветку с задачей в локальном репозитории и в добавок ко всему - на вашем удаленном репозитории (форке)
|
69
|
+
|
70
|
+
$ git co feature/TASK-001
|
71
|
+
$ git request done
|
72
|
+
|
73
|
+
Чтобы оставить какую либо ветку в живых возможно напрямую указать, какую копию ветки **удалить**, локальную или же удаленную (на origin)
|
74
|
+
|
75
|
+
$ git co feature/TASK-001
|
76
|
+
$ git request done --origin
|
77
|
+
|
78
|
+
Или же так
|
79
|
+
|
80
|
+
$ git co feature/TASK-001
|
81
|
+
$ git request done --local
|
82
|
+
|
83
|
+
### Маленькие хитрости
|
84
|
+
Если сразу правильно именовать ветки, т.е ветку с задачей создавать с именем, такого формата TASK-001, то, в описание pull request автоматически вставится ссылка на задачу в jira
|
85
|
+
|
86
|
+
### А помощь?
|
87
|
+
Многие команды имеют какие-то дополнительные опции. Но они нужны только в экзотических случаях. Но при любом раскладе подсказку и тонкий намек всегда можно получить воспользовавших такой командой:
|
88
|
+
|
89
|
+
$ git request done --help
|
32
90
|
|
33
91
|
# В заключении
|
34
92
|
Данный репозиторий и изложенные в нем идеи ни в коем случае не претендуют на идеал и совершенство. Это всего лишь узко заточенная комбинация гемов
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/abak-flow/request.rb
CHANGED
@@ -57,7 +57,7 @@ module Abak::Flow
|
|
57
57
|
Hub::Runner.execute('push', repository.main_project.remote.name, current_branch)
|
58
58
|
|
59
59
|
# Запостим pull request на upstream
|
60
|
-
command_options = ['pull-request', args.first, '-b', base, '-h', head
|
60
|
+
command_options = ['pull-request', args.first, '-b', base, '-h', head]
|
61
61
|
command_options |= ['-d', jira_browse_url + task] if task =~ /^\w+\-\d{1,}$/
|
62
62
|
|
63
63
|
say '=> Делаю pull request на upstream'
|
@@ -82,6 +82,46 @@ module Abak::Flow
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
command :feature do |c|
|
86
|
+
c.syntax = 'git request feature <Название задачи>'
|
87
|
+
c.description = 'Создать ветку для выполнения задачи. Лучше всего, если название задачи, будет ее номером из jira'
|
88
|
+
|
89
|
+
c.action do |args, options|
|
90
|
+
task = args.shift.to_s
|
91
|
+
|
92
|
+
if task.empty?
|
93
|
+
say 'Необходимо указать имя задачи, а лучше всего ее номер из jira'
|
94
|
+
exit
|
95
|
+
end
|
96
|
+
|
97
|
+
unless task =~ /^\w+\-\d{1,}$/
|
98
|
+
say '=> Вы приняли верное решение :)' && exit unless agree("Лучше всего завести задачу с именем примерно такого формата PC-001, может попробуем заного? [yes/no/y/n]:")
|
99
|
+
end
|
100
|
+
|
101
|
+
Hub::Runner.execute('flow', 'feature', 'start', task)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
command :hotfix do |c|
|
106
|
+
c.syntax = 'git request hotfix <Название задачи>'
|
107
|
+
c.description = 'Создать ветку для выполнения bugfix задачи. Лучше всего, если название задачи, будет ее номером из jira'
|
108
|
+
|
109
|
+
c.action do |args, options|
|
110
|
+
task = args.shift.to_s
|
111
|
+
|
112
|
+
if task.empty?
|
113
|
+
say 'Необходимо указать имя задачи, а лучше всего ее номер из jira'
|
114
|
+
exit
|
115
|
+
end
|
116
|
+
|
117
|
+
unless task =~ /^\w+\-\d{1,}$/
|
118
|
+
say '=> Вы приняли верное решение :)' && exit unless agree("Лучше всего завести задачу с именем примерно такого формата PC-001, может попробуем заного? [yes/no/y/n]:")
|
119
|
+
end
|
120
|
+
|
121
|
+
Hub::Runner.execute('flow', 'hotfix', 'start', task)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
85
125
|
command :done do |c|
|
86
126
|
c.syntax = 'git request done'
|
87
127
|
c.description = 'Завершить pull request. По умолчанию удаляются ветки как локальная (local), так и удаленная (origin)'
|
@@ -106,6 +146,7 @@ module Abak::Flow
|
|
106
146
|
say '=> Вы приняли верное решение :)' && exit unless agree("#{warning} [yes/no/y/n]:")
|
107
147
|
end
|
108
148
|
|
149
|
+
# @TODO Проверку на наличие ветки на origin
|
109
150
|
if [:all, :origin].include? type
|
110
151
|
say "=> Удаляю ветку #{branch} на origin"
|
111
152
|
Hub::Runner.execute('push', repository.main_project.remote.name, ':' + branch)
|
data/lib/abak-flow/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abak-flow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-06 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hub
|
16
|
-
requirement: &
|
16
|
+
requirement: &70312825724080 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70312825724080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: commander
|
27
|
-
requirement: &
|
27
|
+
requirement: &70312825723660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70312825723660
|
36
36
|
description: Простой набор правил и комманд, заточеных для работы в git-flow с использование
|
37
37
|
в качестве удаленного репозитория github
|
38
38
|
email:
|