abak-flow 1.0.1 → 1.0.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/Gemfile +1 -10
- data/README.md +9 -5
- data/abak-flow.gemspec +2 -0
- data/lib/abak-flow/branch.rb +25 -5
- data/lib/abak-flow/configuration.rb +1 -0
- data/lib/abak-flow/locales/en.yml +10 -0
- data/lib/abak-flow/locales/ru.yml +10 -0
- data/lib/abak-flow/pull_request.rb +1 -1
- data/lib/abak-flow/request.rb +57 -35
- data/lib/abak-flow/version.rb +1 -1
- data/lib/abak-flow/visitor.rb +12 -3
- metadata +65 -24
- checksums.yaml +0 -15
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -32,10 +32,10 @@ Github-flow же наоборот ведет основную разработк
|
|
32
32
|
$ git config --global abak-flow.oauth-user YOUR_GITHUB_MAIL@gmail.com
|
33
33
|
$ git config --global abak-flow.oauth-token 0123456789YOUR_GITHUB_API_TOKEN
|
34
34
|
$ git remote add upstream git://github.com/GITHUB_PROJECT_USER/GITHUB_PROJECT_NAME.git
|
35
|
-
|
35
|
+
|
36
36
|
### А если я использую прокси, как быть?
|
37
37
|
$ git config --global abak-flow.http-proxy http://my-proxy.com:3129
|
38
|
-
|
38
|
+
|
39
39
|
Далее по приоритету идут переменные окружения. Сначала **http_proxy**, затем **HTTP_PROXY**
|
40
40
|
|
41
41
|
Т.е если вы используете переменные окружения, то просто не указывайте прокси в конфиге
|
@@ -44,16 +44,16 @@ Github-flow же наоборот ведет основную разработк
|
|
44
44
|
|
45
45
|
**Заметьте:** В конфиге git, значением *abak.oauth-user* должен являться тот email адрес, под которым вы заходите на github
|
46
46
|
|
47
|
-
**Обратите внимание:** В данном контексте под **upstream** подразумевается адрес репозитория в который будут оформляться pull request. А репозиторием **origin** будет являться ваш форк
|
47
|
+
**Обратите внимание:** В данном контексте под **upstream** подразумевается адрес репозитория в который будут оформляться pull request. А репозиторием **origin** будет являться ваш форк
|
48
48
|
|
49
49
|
# С чего начать?
|
50
50
|
|
51
51
|
$ git request checkup
|
52
52
|
|
53
53
|
или
|
54
|
-
|
54
|
+
|
55
55
|
$ git request help
|
56
|
-
|
56
|
+
|
57
57
|
**Примечание:** Вообще-то все комманды поддерживают опцию *--help*, но вот именно *git request --help* успевает перехватиться самим git и он конечно неодумевает как ему показать хэлп по внешней комманде
|
58
58
|
|
59
59
|
# Примеры использования
|
@@ -96,3 +96,7 @@ Github-flow же наоборот ведет основную разработк
|
|
96
96
|
|
97
97
|
# В заключении
|
98
98
|
Данный репозиторий и изложенные в нем идеи ни в коем случае не претендуют на идеал и совершенство. Это всего лишь узко заточенная комбинация гемов
|
99
|
+
|
100
|
+
## Лицензия
|
101
|
+
|
102
|
+
Abak-flow выпускается под лицензией [MIT](http://www.opensource.org/licenses/MIT).
|
data/abak-flow.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.homepage = "https://github.com/Strech/abak-flow"
|
12
12
|
gem.summary = "Совмещение 2-х подходов разработки Git-flow & Github-flow"
|
13
13
|
gem.description = "Простой набор правил и комманд, заточеных для работы в git-flow с использование в качестве удаленного репозитория github"
|
14
|
+
gem.license = "MIT"
|
14
15
|
|
15
16
|
gem.rubyforge_project = "abak-flow"
|
16
17
|
|
@@ -20,6 +21,7 @@ Gem::Specification.new do |gem|
|
|
20
21
|
gem.require_paths = ["lib"]
|
21
22
|
|
22
23
|
gem.add_runtime_dependency "octokit", "~> 1.19.0"
|
24
|
+
gem.add_dependency "faraday", "= 0.8.9" # TODO : remove after octokit upgrade
|
23
25
|
gem.add_runtime_dependency "git", "~> 1.2.5"
|
24
26
|
gem.add_runtime_dependency "commander", ">= 4.1.3"
|
25
27
|
gem.add_runtime_dependency "ruler", ">= 1.4.2"
|
data/lib/abak-flow/branch.rb
CHANGED
@@ -24,6 +24,7 @@ module Abak::Flow
|
|
24
24
|
@branch.full
|
25
25
|
end
|
26
26
|
|
27
|
+
# TODO : Брать коммит мессадж до перевода строки
|
27
28
|
def message
|
28
29
|
@branch.gcommit.message
|
29
30
|
end
|
@@ -51,9 +52,18 @@ module Abak::Flow
|
|
51
52
|
@manager.git.push(origin, @branch)
|
52
53
|
end
|
53
54
|
|
54
|
-
def
|
55
|
+
def delete_on_remote
|
56
|
+
origin = @manager.repository.origin.repo
|
57
|
+
@manager.git.push(origin, ":#{@branch}")
|
58
|
+
end
|
59
|
+
|
60
|
+
def delete_on_local
|
61
|
+
@branch.delete
|
62
|
+
end
|
63
|
+
|
64
|
+
def pick_up_base_name(options = Hash.new)
|
55
65
|
mappable? ? MAPPING[folder]
|
56
|
-
: name
|
66
|
+
: options.fetch(:or_use, name)
|
57
67
|
end
|
58
68
|
|
59
69
|
def pick_up_title
|
@@ -61,10 +71,20 @@ module Abak::Flow
|
|
61
71
|
: message
|
62
72
|
end
|
63
73
|
|
64
|
-
# TODO :
|
74
|
+
# TODO : Сделать настраевыемым трекер и формат задачи
|
75
|
+
# TODO : Смотреть в коммит мессадж и искать там Fixes/Closes/Close/Fix
|
65
76
|
def pick_up_body
|
66
|
-
|
67
|
-
|
77
|
+
head.mappable? &&
|
78
|
+
head.tracker_task? ? "http://jira.railsc.ru/browse/#{task}"
|
79
|
+
: I18n.t("commands.publish.nothing")
|
80
|
+
end
|
81
|
+
|
82
|
+
def develop?
|
83
|
+
@branch.name == DEVELOPMENT
|
84
|
+
end
|
85
|
+
|
86
|
+
def master?
|
87
|
+
@branch.name == MASTER
|
68
88
|
end
|
69
89
|
|
70
90
|
def hotfix?
|
@@ -15,6 +15,11 @@ en:
|
|
15
15
|
|
16
16
|
pull_request:
|
17
17
|
name: Pull Request
|
18
|
+
errors:
|
19
|
+
head_is_incorrect: Something wrong with 'head' branch
|
20
|
+
base_is_incorrect: Something wrong with 'base' branch
|
21
|
+
title_is_incorrect: Title is not specified
|
22
|
+
body_is_incorrect: Message body is not specified
|
18
23
|
|
19
24
|
commands:
|
20
25
|
checkup:
|
@@ -30,3 +35,8 @@ en:
|
|
30
35
|
requesting: "Creating pull request %{branch} → %{upstream}"
|
31
36
|
updating: "Updating %{branch} → %{upstream}"
|
32
37
|
nothing: I have nothing to say ...
|
38
|
+
done:
|
39
|
+
fail: Something goes wrong!
|
40
|
+
deleting: "Deleting %{branch} in %{upstream}"
|
41
|
+
errors:
|
42
|
+
branch_is_incorrect: "You can't delete %{branch}"
|
@@ -15,6 +15,11 @@ ru:
|
|
15
15
|
|
16
16
|
pull_request:
|
17
17
|
name: Пулл реквест
|
18
|
+
errors:
|
19
|
+
head_is_incorrect: Что-то не так с 'head' веткой
|
20
|
+
base_is_incorrect: Что-то не так с 'base' веткой
|
21
|
+
title_is_incorrect: Не указан заголовок
|
22
|
+
body_is_incorrect: Не указано содержание
|
18
23
|
|
19
24
|
commands:
|
20
25
|
checkup:
|
@@ -30,3 +35,8 @@ ru:
|
|
30
35
|
requesting: "Создание пулл реквеста %{branch} → %{upstream}"
|
31
36
|
updating: "Обновление %{branch} → %{upstream}"
|
32
37
|
nothing: Мне нечего добавить ...
|
38
|
+
done:
|
39
|
+
fail: Что-то пошло не так!
|
40
|
+
deleting: "Удаление %{branch} из %{upstream}"
|
41
|
+
errors:
|
42
|
+
branch_is_incorrect: "Вы не можете удалить %{branch}"
|
@@ -24,7 +24,7 @@ module Abak::Flow
|
|
24
24
|
fact(:head_is_incorrect) { not @head.valid? }
|
25
25
|
fact(:base_is_incorrect) { not @base.valid? }
|
26
26
|
fact(:title_is_incorrect) { @title.empty? }
|
27
|
-
fact(:body_is_incorrect) { @body.empty? }
|
27
|
+
fact(:body_is_incorrect) { @head.tracker_task? ? @body.empty? : false }
|
28
28
|
|
29
29
|
rule([:head_is_incorrect]) { @errors << I18n.t("pull_request.errors.head_is_incorrect") }
|
30
30
|
rule([:base_is_incorrect]) { @errors << I18n.t("pull_request.errors.base_is_incorrect") }
|
data/lib/abak-flow/request.rb
CHANGED
@@ -9,20 +9,17 @@ module Abak::Flow
|
|
9
9
|
|
10
10
|
default_command :help
|
11
11
|
|
12
|
+
# TODO : Заменить команды классами
|
12
13
|
command :checkup do |c|
|
13
14
|
c.syntax = "git request checkup"
|
14
15
|
c.description = "Проверить все ли настроено для работы с github и удаленными репозиториями"
|
15
16
|
|
16
17
|
c.action do |args, options|
|
17
18
|
m = Manager.new
|
18
|
-
v = Visitor.new(m.configuration, m.repository, call: :ready?,
|
19
|
+
v = Visitor.new(m.configuration, m.repository, call: :ready?, inspect: :errors)
|
20
|
+
v.exit_on_fail(:checkup, 1)
|
19
21
|
|
20
|
-
|
21
|
-
say ANSI.green { I18n.t("commands.checkup.success") }
|
22
|
-
else
|
23
|
-
say ANSI.red { I18n.t("commands.checkup.fail") }
|
24
|
-
say ANSI.yellow { v.output }
|
25
|
-
end
|
22
|
+
say ANSI.green { I18n.t("commands.checkup.success") }
|
26
23
|
end
|
27
24
|
end # command :checkup
|
28
25
|
|
@@ -34,16 +31,9 @@ module Abak::Flow
|
|
34
31
|
c.option "--head STRING", String, "Имя ветки которую нужно сравнить"
|
35
32
|
|
36
33
|
c.action do |args, options|
|
37
|
-
# TODO : Вот это дубль, хочется его как-то более красиво
|
38
34
|
m = Manager.new
|
39
|
-
v = Visitor.new(m.configuration, m.repository, call: :ready?,
|
40
|
-
|
41
|
-
unless v.ready?
|
42
|
-
say ANSI.red { I18n.t("commands.compare.fail") }
|
43
|
-
say ANSI.yellow { v.output }
|
44
|
-
|
45
|
-
exit 1
|
46
|
-
end
|
35
|
+
v = Visitor.new(m.configuration, m.repository, call: :ready?, inspect: :errors)
|
36
|
+
v.exit_on_fail(:compare, 1)
|
47
37
|
|
48
38
|
current = m.git.current_branch
|
49
39
|
head = Branch.new(options.head || current, m)
|
@@ -81,20 +71,12 @@ module Abak::Flow
|
|
81
71
|
base = Branch.new(options.base || head.pick_up_base_name, m)
|
82
72
|
|
83
73
|
title = options.title || head.pick_up_title
|
84
|
-
body
|
85
|
-
options.body || (head.mappable? ? nil : I18n.t("commands.publish.nothing")),
|
86
|
-
head.pick_up_body
|
87
|
-
].compact * "\n\n"
|
74
|
+
body = options.body || head.pickup_up_body
|
88
75
|
|
89
76
|
p = PullRequest.new({base: base, head: head, title: title, body: body}, m)
|
90
|
-
v = Visitor.new(m.configuration, m.repository, p, call: :ready?, look_for: :errors)
|
91
|
-
|
92
|
-
unless v.ready?
|
93
|
-
say ANSI.red { I18n.t("commands.publish.fail") }
|
94
|
-
say ANSI.yellow { v.output }
|
95
77
|
|
96
|
-
|
97
|
-
|
78
|
+
v = Visitor.new(m.configuration, m.repository, p, call: :ready?, inspect: :errors)
|
79
|
+
v.exit_on_fail(:publish, 1)
|
98
80
|
|
99
81
|
say ANSI.white {
|
100
82
|
I18n.t("commands.publish.updating",
|
@@ -108,15 +90,55 @@ module Abak::Flow
|
|
108
90
|
branch: ANSI.bold { "#{m.repository.origin.owner}:#{head}" },
|
109
91
|
upstream: ANSI.bold { "#{m.repository.upstream.owner}:#{base}" }) }
|
110
92
|
|
111
|
-
v = Visitor.new(p, call: :publish,
|
112
|
-
|
113
|
-
say ANSI.green { I18n.t("commands.publish.success", link: p.link) }
|
114
|
-
else
|
115
|
-
say ANSI.red { I18n.t("commands.publish.fail") }
|
116
|
-
say ANSI.yellow { v.output }
|
93
|
+
v = Visitor.new(p, call: :publish, inspect: :errors)
|
94
|
+
v.exit_on_fail(:publish, 2)
|
117
95
|
|
118
|
-
|
119
|
-
end
|
96
|
+
say ANSI.green { I18n.t("commands.publish.success", link: p.link) }
|
120
97
|
end
|
121
98
|
end # command :publish
|
99
|
+
|
100
|
+
command :done do |c|
|
101
|
+
c.syntax = "git request done"
|
102
|
+
c.description = "Удалить ветки (local и origin) в которых велась работа"
|
103
|
+
|
104
|
+
c.action do |args, options|
|
105
|
+
m = Manager.new
|
106
|
+
v = Visitor.new(m.configuration, m.repository, call: :ready?, inspect: :errors)
|
107
|
+
v.exit_on_fail(:done, 1)
|
108
|
+
|
109
|
+
branch = Branch.new(m.git.current_branch, m)
|
110
|
+
|
111
|
+
if branch.develop? || branch.master?
|
112
|
+
say ANSI.red {
|
113
|
+
I18n.t("commands.done.errors.branch_is_incorrect",
|
114
|
+
branch: ANSI.bold { branch }) }
|
115
|
+
exit 2
|
116
|
+
end
|
117
|
+
|
118
|
+
say ANSI.white {
|
119
|
+
I18n.t("commands.done.deleting",
|
120
|
+
branch: ANSI.bold { branch },
|
121
|
+
upstream: ANSI.bold { "#{m.repository.origin}" }) }
|
122
|
+
|
123
|
+
# FIXME : Исправить молчаливую ситуацию
|
124
|
+
# Возможно стоит предупредить о ее отсутствии
|
125
|
+
branch.delete_on_remote rescue nil
|
126
|
+
|
127
|
+
say ANSI.white {
|
128
|
+
I18n.t("commands.done.deleting",
|
129
|
+
branch: ANSI.bold { branch },
|
130
|
+
upstream: ANSI.bold { "working tree" }) }
|
131
|
+
|
132
|
+
# TODO : Добавить проверку, что ветка,
|
133
|
+
# в которую надо попасть (master/develop)
|
134
|
+
# существует
|
135
|
+
|
136
|
+
# TODO : Быть может стоит вынести это в настройки
|
137
|
+
# и позволить выбирать, куда отправлять
|
138
|
+
# при удалении ветки, а по умолчанию использовать master
|
139
|
+
m.git.checkout(
|
140
|
+
branch.pick_up_base_name(or_use: Branch::DEVELOPMENT))
|
141
|
+
branch.delete_on_local
|
142
|
+
end
|
143
|
+
end # command :done
|
122
144
|
end
|
data/lib/abak-flow/version.rb
CHANGED
data/lib/abak-flow/visitor.rb
CHANGED
@@ -7,7 +7,7 @@ module Abak::Flow
|
|
7
7
|
|
8
8
|
@objects = args
|
9
9
|
@call = options.fetch(:call)
|
10
|
-
@
|
10
|
+
@inspect = options.fetch(:inspect)
|
11
11
|
|
12
12
|
@asked = false
|
13
13
|
end
|
@@ -23,11 +23,11 @@ module Abak::Flow
|
|
23
23
|
ready? unless asked?
|
24
24
|
|
25
25
|
@objects.map do |o|
|
26
|
-
next if o.send(@
|
26
|
+
next if o.send(@inspect).empty?
|
27
27
|
|
28
28
|
info = ""
|
29
29
|
name = o.respond_to?(:display_name) ? o.display_name : o.class.name
|
30
|
-
o.send(@
|
30
|
+
o.send(@inspect).each_with_index do |inf, idx|
|
31
31
|
info << "\n #{idx + 1}. #{inf}"
|
32
32
|
end
|
33
33
|
|
@@ -35,6 +35,15 @@ module Abak::Flow
|
|
35
35
|
end * "\n"
|
36
36
|
end
|
37
37
|
|
38
|
+
def exit_on_fail(command, code = 1)
|
39
|
+
return if ready?
|
40
|
+
|
41
|
+
say ANSI.red { I18n.t("commands.#{command}.fail") }
|
42
|
+
say ANSI.yellow { output }
|
43
|
+
|
44
|
+
exit(code)
|
45
|
+
end
|
46
|
+
|
38
47
|
private
|
39
48
|
def asked?
|
40
49
|
@asked
|
metadata
CHANGED
@@ -1,99 +1,128 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abak-flow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 1.0.2
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Strech (aka Sergey Fedorov)
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2014-02-10 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
name: octokit
|
14
16
|
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
15
18
|
requirements:
|
16
19
|
- - ~>
|
17
20
|
- !ruby/object:Gem::Version
|
18
21
|
version: 1.19.0
|
19
|
-
type: :runtime
|
20
|
-
prerelease: false
|
21
|
-
name: octokit
|
22
22
|
requirement: !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
23
24
|
requirements:
|
24
25
|
- - ~>
|
25
26
|
- !ruby/object:Gem::Version
|
26
27
|
version: 1.19.0
|
28
|
+
type: :runtime
|
29
|
+
prerelease: false
|
27
30
|
- !ruby/object:Gem::Dependency
|
31
|
+
name: faraday
|
28
32
|
version_requirements: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
29
34
|
requirements:
|
30
|
-
- -
|
35
|
+
- - '='
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
37
|
+
version: 0.8.9
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - '='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.8.9
|
33
44
|
type: :runtime
|
34
45
|
prerelease: false
|
46
|
+
- !ruby/object:Gem::Dependency
|
35
47
|
name: git
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.2.5
|
36
54
|
requirement: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
37
56
|
requirements:
|
38
57
|
- - ~>
|
39
58
|
- !ruby/object:Gem::Version
|
40
59
|
version: 1.2.5
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
41
62
|
- !ruby/object:Gem::Dependency
|
63
|
+
name: commander
|
42
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
43
66
|
requirements:
|
44
67
|
- - ! '>='
|
45
68
|
- !ruby/object:Gem::Version
|
46
69
|
version: 4.1.3
|
47
|
-
type: :runtime
|
48
|
-
prerelease: false
|
49
|
-
name: commander
|
50
70
|
requirement: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
51
72
|
requirements:
|
52
73
|
- - ! '>='
|
53
74
|
- !ruby/object:Gem::Version
|
54
75
|
version: 4.1.3
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
55
78
|
- !ruby/object:Gem::Dependency
|
79
|
+
name: ruler
|
56
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
57
82
|
requirements:
|
58
83
|
- - ! '>='
|
59
84
|
- !ruby/object:Gem::Version
|
60
85
|
version: 1.4.2
|
61
|
-
type: :runtime
|
62
|
-
prerelease: false
|
63
|
-
name: ruler
|
64
86
|
requirement: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
65
88
|
requirements:
|
66
89
|
- - ! '>='
|
67
90
|
- !ruby/object:Gem::Version
|
68
91
|
version: 1.4.2
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
69
94
|
- !ruby/object:Gem::Dependency
|
95
|
+
name: i18n
|
70
96
|
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
71
98
|
requirements:
|
72
99
|
- - ! '>='
|
73
100
|
- !ruby/object:Gem::Version
|
74
101
|
version: 0.6.1
|
75
|
-
type: :runtime
|
76
|
-
prerelease: false
|
77
|
-
name: i18n
|
78
102
|
requirement: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
79
104
|
requirements:
|
80
105
|
- - ! '>='
|
81
106
|
- !ruby/object:Gem::Version
|
82
107
|
version: 0.6.1
|
108
|
+
type: :runtime
|
109
|
+
prerelease: false
|
83
110
|
- !ruby/object:Gem::Dependency
|
111
|
+
name: ansi
|
84
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
85
114
|
requirements:
|
86
115
|
- - ! '>='
|
87
116
|
- !ruby/object:Gem::Version
|
88
117
|
version: 1.4.3
|
89
|
-
type: :runtime
|
90
|
-
prerelease: false
|
91
|
-
name: ansi
|
92
118
|
requirement: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
93
120
|
requirements:
|
94
121
|
- - ! '>='
|
95
122
|
- !ruby/object:Gem::Version
|
96
123
|
version: 1.4.3
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
97
126
|
description: Простой набор правил и комманд, заточеных для работы в git-flow с использование
|
98
127
|
в качестве удаленного репозитория github
|
99
128
|
email:
|
@@ -133,26 +162,38 @@ files:
|
|
133
162
|
- spec/abak-flow/system_spec.rb
|
134
163
|
- spec/spec_helper.rb
|
135
164
|
homepage: https://github.com/Strech/abak-flow
|
136
|
-
licenses:
|
137
|
-
|
165
|
+
licenses:
|
166
|
+
- MIT
|
138
167
|
post_install_message:
|
139
168
|
rdoc_options: []
|
140
169
|
require_paths:
|
141
170
|
- lib
|
142
171
|
required_ruby_version: !ruby/object:Gem::Requirement
|
172
|
+
none: false
|
143
173
|
requirements:
|
144
174
|
- - ! '>='
|
145
175
|
- !ruby/object:Gem::Version
|
146
176
|
version: '0'
|
147
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
+
none: false
|
148
179
|
requirements:
|
149
180
|
- - ! '>='
|
150
181
|
- !ruby/object:Gem::Version
|
151
182
|
version: '0'
|
152
183
|
requirements: []
|
153
184
|
rubyforge_project: abak-flow
|
154
|
-
rubygems_version:
|
185
|
+
rubygems_version: 1.8.25
|
155
186
|
signing_key:
|
156
|
-
specification_version:
|
187
|
+
specification_version: 3
|
157
188
|
summary: Совмещение 2-х подходов разработки Git-flow & Github-flow
|
158
|
-
test_files:
|
189
|
+
test_files:
|
190
|
+
- spec/abak-flow/branch_spec.rb
|
191
|
+
- spec/abak-flow/branches_spec.rb
|
192
|
+
- spec/abak-flow/configuration_spec.rb
|
193
|
+
- spec/abak-flow/git_spec.rb
|
194
|
+
- spec/abak-flow/github_client_spec.rb
|
195
|
+
- spec/abak-flow/messages_spec.rb
|
196
|
+
- spec/abak-flow/project_spec.rb
|
197
|
+
- spec/abak-flow/pull_request_spec.rb
|
198
|
+
- spec/abak-flow/system_spec.rb
|
199
|
+
- spec/spec_helper.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
MDFkNDI2YTZiMTk4Y2Q4YTQxNzlmMzc3MGMzOGNmOTk5ODg3ZWM3Nw==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YjMxMzFkNjQ1MWNlMTZkZjMxMmY5ZDZkMGYwYzk2NmYyNzZjNTQ2Zg==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZWI2OTM3ZTlmY2I4NWE0NTUxMDYzODY2OTBjMDZmZDQ4Yzk5NjFjZmM4Y2U3
|
10
|
-
YmM0NjE2MDFkM2M2NjRjNzE5MTg3MmU1ODJiZjI4OGE3ZDAzNjAxMzNhYzMx
|
11
|
-
NWRhYmU0YmVhZTRmMTY0YmZiNDRiOTQyYjY3YTk1OGY0Y2EzZDA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ODEwY2Y3YWQyNzc5NzYzMmJjMzE4MDI5MTYxNjJhMDY3MTM5NGIyM2E4NmMz
|
14
|
-
MmZiMzhkYTdlOWQwN2QxOGIyN2MwNDMyNWJmN2NjZWJhNDRjNzE5NWExNzUx
|
15
|
-
NWEzZTdiMGNkMzI3ZDc4Yjg0ZDhhNTUyOGNkMTdkMjdiODBiNTc=
|