bigkeeper 0.7.8 → 0.8.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 210e43f5a2e17e8284e5ff34e33ed6245459562f
4
- data.tar.gz: aaa8c7f3ba7bda0882febfc1b0c9e548ef5f8512
3
+ metadata.gz: 028f56615f3e793abad38eed28a1f898564632a3
4
+ data.tar.gz: 2143d81a7144a0611bd4bb5ec5ba3fe8d34a032d
5
5
  SHA512:
6
- metadata.gz: cf8770b19b1a77de386b654504e918c84d64e4cba7f4ddfc2ff42be27991365b7fae547f7fbf1143e183b826bdc29afb829be7f3b61d0934573b4ab14e7f927a
7
- data.tar.gz: 10634e889660abeb0d0dbf49ea18e4773034677b1a3f6bacfb01d7a0ac12f0fe7ddd1443875bb5982261ded895a36d22cb1b835e047cfe2864d6fbcf3f5da8db
6
+ metadata.gz: 767a5d482e00d1eefb7a95863d8c1990405656187ee168edb9726ab78e5f8d07398349fac58a52404c3edb9dc6f1296fbd6bbaac22a7da174ae12ae5a90e819e
7
+ data.tar.gz: 2dcd82312c0cb2dc2c387cff5ac9e588f216c70e4ea8311d1b1626c6fb67c84c0fe3f231f4ce4aad260ba29c011a9f71a9e017a4c7e07e5cf0d0ee2757895fd2
data/.travis.yml CHANGED
@@ -1,8 +1,10 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 2.3.4
5
- - 2.2.7
4
+ - 2.5.0
5
+ - 2.4.3
6
+ - 2.3.6
7
+ - 2.2.9
6
8
  - 2.1.10
7
9
 
8
10
  before_install:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bigkeeper (0.7.7)
4
+ bigkeeper (0.7.8)
5
5
  big_stash (~> 0.1)
6
6
  cocoapods
7
7
  colorize
@@ -63,7 +63,7 @@ GEM
63
63
  gh_inspector (1.0.2)
64
64
  gli (2.17.1)
65
65
  i18n (0.7.0)
66
- json (1.8.3)
66
+ json (1.8.6)
67
67
  minitest (5.8.3)
68
68
  molinillo (0.5.7)
69
69
  nanaimo (0.2.3)
@@ -7,6 +7,7 @@ require 'big_keeper/command/feature&hotfix/push'
7
7
  require 'big_keeper/command/feature&hotfix/rebase'
8
8
  require 'big_keeper/command/feature&hotfix/publish'
9
9
  require 'big_keeper/command/feature&hotfix/delete'
10
+ require 'big_keeper/command/feature&hotfix/list'
10
11
 
11
12
  module BigKeeper
12
13
  def self.feature_and_hotfix_command(type)
@@ -127,12 +128,10 @@ module BigKeeper
127
128
  c.desc "List all the #{GitflowType.name(type)}s"
128
129
  c.command :list do |list|
129
130
  list.action do |global_options, options, args|
131
+ Logger.highlight("Generating feature tree of all version...") if args.length < 1
130
132
  path = File.expand_path(global_options[:path])
131
-
132
- branchs = GitService.new.branchs_with_type(File.expand_path(path), type)
133
- branchs.each do |branch|
134
- p branch
135
- end
133
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
134
+ list(path,user,type)
136
135
  end
137
136
  end
138
137
  end
@@ -25,9 +25,14 @@ module BigKeeper
25
25
 
26
26
  modules.each do |module_name|
27
27
  module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
28
- GitService.new.verify_del(module_full_path, branch_name, module_name, type)
28
+
29
+ if FileOperator.definitely_exists?(module_full_path)
30
+ StashService.new.pop_stash(module_full_path, branch_name, module_name)
31
+ GitService.new.verify_del(module_full_path, branch_name, module_name, type)
32
+ end
29
33
  end
30
34
 
35
+ StashService.new.pop_stash(path, branch_name, 'Home')
31
36
  GitService.new.verify_del(path, branch_name, 'Home', type)
32
37
  ensure
33
38
  end
@@ -22,24 +22,30 @@ module BigKeeper
22
22
  branch_name = GitOperator.new.current_branch(path)
23
23
  Logger.error("Not a #{GitflowType.name(type)} branch, exit.") unless branch_name.include? GitflowType.name(type)
24
24
 
25
- ModuleCacheOperator.new(path).cache_path_modules([])
26
- ModuleCacheOperator.new(path).cache_git_modules(modules)
25
+ # Cache git modules
26
+ if ModuleCacheOperator.new(path).all_path_modules.empty?
27
+ Logger.error("Branch '#{branch_name}' is already finished, exit.")
28
+ end
27
29
 
28
- modules = ModuleCacheOperator.new(path).current_path_modules
30
+ ModuleCacheOperator.new(path).cache_git_modules(ModuleCacheOperator.new(path).all_path_modules)
29
31
 
30
- # Rebase modules and modify podfile as git
32
+ modules = ModuleCacheOperator.new(path).remain_git_modules
33
+ # Rebase modules and modify module as git
31
34
  modules.each do |module_name|
32
35
  ModuleService.new.finish(path, user, module_name, branch_name, type)
33
36
  end
34
37
 
35
38
  Logger.highlight("Finish branch '#{branch_name}' for 'Home'")
36
39
 
37
- # pod install
40
+ # Install
38
41
  DepService.dep_operator(path, user).install(false)
39
42
 
40
43
  # Open home workspace
41
44
  DepService.dep_operator(path, user).open
42
45
 
46
+ # Delete all path modules
47
+ ModuleCacheOperator.new(path).cache_path_modules([], [], [])
48
+
43
49
  # Push home changes to remote
44
50
  GitService.new.verify_push(path, "finish branch #{branch_name}", branch_name, 'Home')
45
51
  ensure
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/ruby
2
+ require 'big_keeper/util/bigkeeper_parser'
3
+ require 'big_keeper/util/list_generator'
4
+ require 'big_keeper/service/module_service'
5
+
6
+
7
+ module BigKeeper
8
+ def self.list(path,user,type)
9
+ BigkeeperParser.parse("#{path}/Bigkeeper")
10
+ #get home project branches
11
+ branches = GitService.new.branchs_with_type(File.expand_path(path), type)
12
+ #get modules list
13
+ begin
14
+ modules = BigkeeperParser.module_names
15
+ file = File.new("#{path}/.bigkeeper/feature_list", 'w')
16
+ begin
17
+ #read git info
18
+ git_operator = GitOperator.new
19
+ modules.each do |module_name|
20
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
21
+ #local project verify
22
+ if !File.exist? module_full_path
23
+ Logger.default("No local repository for module '#{module_name}', clone it...")
24
+ module_git = BigkeeperParser.module_git(module_name)
25
+ git_operator.clone(File.expand_path("#{module_full_path}/../"), module_git)
26
+ end
27
+ feature_modules_list = ModuleService.new.list(module_full_path, user, module_name)
28
+ dic = {}
29
+ dic[module_name] = feature_modules_list
30
+ file << dic
31
+ file << "\n\n"
32
+ end
33
+ file.close
34
+ end
35
+
36
+ #print list
37
+ ListGenerator.generate(file,branches)
38
+ ensure
39
+ file.close
40
+ end
41
+ end
42
+ end
@@ -25,26 +25,27 @@ module BigKeeper
25
25
  path_modules = ModuleCacheOperator.new(path).current_path_modules
26
26
  Logger.error("You have unfinished modules #{path_modules}, Use 'finish' first please.") unless path_modules.empty?
27
27
 
28
- ModuleCacheOperator.new(path).cache_git_modules([])
29
-
28
+ # Push modules changes to remote then rebase
30
29
  modules = ModuleCacheOperator.new(path).current_git_modules
30
+ modules.each do |module_name|
31
+ ModuleService.new.pre_publish(path, user, module_name, branch_name, type)
32
+ end
33
+
34
+ # Install
35
+ DepService.dep_operator(path, user).install(false)
31
36
 
32
- # Rebase modules and modify podfile as git
37
+ # Modify module as git
33
38
  modules.each do |module_name|
34
39
  ModuleService.new.publish(path, user, module_name, branch_name, type)
35
40
  end
36
41
 
37
42
  Logger.highlight("Publish branch '#{branch_name}' for 'Home'")
38
43
 
39
- # pod install
40
- DepService.dep_operator(path, user).install(false)
41
-
42
- # Recover podfile
44
+ # Recover home
43
45
  DepService.dep_operator(path, user).recover
44
46
 
45
47
  # Push home changes to remote
46
48
  GitService.new.verify_push(path, "publish branch #{branch_name}", branch_name, 'Home')
47
-
48
49
  # Rebase Home
49
50
  GitService.new.verify_rebase(path, GitflowType.base_branch(type), 'Home')
50
51
 
@@ -28,58 +28,43 @@ module BigKeeper
28
28
 
29
29
  GitService.new.verify_home_branch(path, branch_name, OperateType::START)
30
30
 
31
- stash_modules = ModuleCacheOperator.new(path).current_path_modules
31
+ stash_modules = ModuleCacheOperator.new(path).all_path_modules
32
32
 
33
33
  # Stash current branch
34
34
  StashService.new.stash_all(path, branch_name, user, stash_modules)
35
35
 
36
36
  # Verify input modules
37
- modules = [] unless modules
38
- BigkeeperParser.verify_modules(modules)
39
-
40
- # # Handle modules
41
- # if modules
42
- # # Verify input modules
43
- # BigkeeperParser.verify_modules(modules)
44
- # else
45
- # # Get all modules if not specified
46
- # modules = BigkeeperParser.module_names
47
- # end
37
+ modules = BigkeeperParser.verify_modules(modules)
48
38
 
49
39
  Logger.highlight("Add branch '#{branch_name}' for 'Home'...")
50
40
  # Start home feature
51
41
  GitService.new.start(path, full_name, type)
52
42
 
53
- ModuleCacheOperator.new(path).cache_path_modules(modules)
43
+ # Cache all path modules
44
+ ModuleCacheOperator.new(path).cache_path_modules(modules, modules, [])
45
+ modules = ModuleCacheOperator.new(path).remain_path_modules
54
46
 
55
- # Backup podfile
47
+ # Backup home
56
48
  DepService.dep_operator(path, user).backup
57
49
 
58
- # Modify podfile as path and Start modules feature
50
+ # Start modules feature and modify module as path
59
51
  modules.each do |module_name|
60
52
  ModuleService.new.add(path, user, module_name, full_name, type)
61
53
  end
62
54
 
63
- # pod install
55
+ # install
64
56
  DepService.dep_operator(path, user).install(true)
65
57
 
66
58
  # Open home workspace
67
59
  DepService.dep_operator(path, user).open
68
60
 
69
61
  # Push home changes to remote
70
- GitService.new.verify_push(path,
62
+ Logger.highlight("Push branch '#{branch_name}' for 'Home'...")
63
+ GitService.new.verify_push(
64
+ path,
71
65
  "init #{GitflowType.name(type)} #{full_name}",
72
66
  branch_name,
73
67
  'Home')
74
-
75
- modules.each do |module_name|
76
- module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
77
- # Push home changes to remote
78
- GitService.new.verify_push(module_full_path,
79
- "init #{GitflowType.name(type)} #{full_name}",
80
- branch_name,
81
- module_name)
82
- end
83
68
  ensure
84
69
  end
85
70
  end
@@ -18,7 +18,7 @@ module BigKeeper
18
18
 
19
19
  GitService.new.verify_home_branch(path, branch_name, OperateType::SWITCH)
20
20
 
21
- stash_modules = ModuleCacheOperator.new(path).current_path_modules
21
+ stash_modules = ModuleCacheOperator.new(path).all_path_modules
22
22
 
23
23
  # Stash current branch
24
24
  StashService.new.stash_all(path, branch_name, user, stash_modules)
@@ -30,13 +30,13 @@ module BigKeeper
30
30
  # Apply home stash
31
31
  StashService.new.pop_stash(path, branch_name, 'Home')
32
32
 
33
- modules = ModuleCacheOperator.new(path).current_path_modules
33
+ modules = ModuleCacheOperator.new(path).all_path_modules
34
34
 
35
35
  modules.each do |module_name|
36
36
  ModuleService.new.switch_to(path, user, module_name, branch_name, type)
37
37
  end
38
38
 
39
- # pod install
39
+ # Install
40
40
  DepService.dep_operator(path, user).install(false)
41
41
 
42
42
  # Open home workspace
@@ -30,43 +30,34 @@ module BigKeeper
30
30
  current_modules = ModuleCacheOperator.new(path).current_path_modules
31
31
 
32
32
  # Verify input modules
33
- modules = [] unless modules
34
- BigkeeperParser.verify_modules(modules)
35
-
36
- # # Handle modules
37
- # if modules
38
- # # Verify input modules
39
- # BigkeeperParser.verify_modules(modules)
40
- # else
41
- # # Get all modules if not specified
42
- # modules = BigkeeperParser.module_names
43
- # end
33
+ modules = BigkeeperParser.verify_modules(modules)
44
34
 
45
35
  Logger.highlight("Start to update modules for branch '#{branch_name}'...")
46
36
 
47
37
  add_modules = modules - current_modules
48
38
  del_modules = current_modules - modules
49
39
 
50
- ModuleCacheOperator.new(path).cache_path_modules(modules)
40
+ ModuleCacheOperator.new(path).cache_path_modules(modules, add_modules, del_modules)
41
+ remain_path_modules = ModuleCacheOperator.new(path).remain_path_modules
51
42
 
52
43
  if add_modules.empty? and del_modules.empty?
53
44
  Logger.default("There is nothing changed with modules #{modules}.")
54
45
  else
55
46
  # Modify podfile as path and Start modules feature
56
- add_modules.each do |module_name|
47
+ remain_path_modules.each do |module_name|
57
48
  ModuleService.new.add(path, user, module_name, full_name, type)
58
49
  end
59
50
 
60
51
  del_modules.each do |module_name|
61
52
  ModuleService.new.del(path, user, module_name, full_name, type)
62
53
  end
54
+ end
63
55
 
64
- # pod install
65
- DepService.dep_operator(path, user).install(false)
56
+ # Install
57
+ DepService.dep_operator(path, user).install(false)
66
58
 
67
- # Open home workspace
68
- DepService.dep_operator(path, user).open
69
- end
59
+ # Open home workspace
60
+ DepService.dep_operator(path, user).open
70
61
  ensure
71
62
  end
72
63
  end
@@ -7,47 +7,47 @@ module BigKeeper
7
7
 
8
8
  def backup
9
9
  GradleOperator.new(@path).backup
10
+ modules = ModuleCacheOperator.new(@path).all_path_modules
11
+ modules.each do |module_name|
12
+ module_full_path = BigkeeperParser.module_full_path(@path, @user, module_name)
13
+ GradleOperator.new(module_full_path).backup
14
+ end
10
15
  end
11
16
 
12
17
  def recover
13
- GradleOperator.new(@path).recover
18
+ GradleOperator.new(@path).recover(true, false)
14
19
  end
15
20
 
16
- def update_module_config(module_name, module_type, source)
17
- GradleOperator.new(@path).update_module_config(module_name, module_type, source)
18
-
21
+ def update_module_config(module_name, module_operate_type)
19
22
  module_full_path = BigkeeperParser.module_full_path(@path, @user, module_name)
20
23
 
21
- if ModuleType::PATH == module_type
24
+ # get modules
25
+ if ModuleOperateType::ADD == module_operate_type
22
26
  GradleOperator.new(module_full_path).backup
23
27
 
24
- all_path_modules = ModuleCacheOperator.new(@path).all_path_modules
25
- all_path_modules.each do |path_module_name|
26
- next if path_module_name == module_name
27
- module_full_path = BigkeeperParser.module_full_path(@path, @user, path_module_name)
28
- GradleOperator.new(module_full_path).update_module_config(module_name, module_type, source)
29
- end
30
- elsif ModuleType::GIT == module_type
31
- GradleOperator.new(module_full_path).recover
32
-
33
- all_path_modules = ModuleCacheOperator.new(@path).all_path_modules
34
- all_path_modules.each do |path_module_name|
35
- next if path_module_name == module_name
36
- module_full_path = BigkeeperParser.module_full_path(@path, @user, path_module_name)
37
- GradleOperator.new(module_full_path).update_module_config(module_name, module_type, source)
38
- end
39
- else
28
+ add_modules = ModuleCacheOperator.new(@path).add_path_modules
29
+ GradleOperator.new(module_full_path).update_build_config(module_name, add_modules, ModuleOperateType::ADD)
30
+ GradleOperator.new(module_full_path).update_settings_config(module_name, add_modules, ModuleOperateType::ADD, @user)
31
+
32
+ del_modules = ModuleCacheOperator.new(@path).del_path_modules
33
+ GradleOperator.new(module_full_path).update_build_config(module_name, del_modules, ModuleOperateType::DELETE)
34
+ GradleOperator.new(module_full_path).update_settings_config(module_name, del_modules, ModuleOperateType::DELETE, @user)
35
+ elsif ModuleOperateType::DELETE == module_operate_type
36
+ GradleOperator.new(module_full_path).recover(true, true)
37
+ elsif ModuleOperateType::FINISH == module_operate_type
38
+ modules = ModuleCacheOperator.new(@path).all_path_modules
39
+ GradleOperator.new(module_full_path).update_build_config(module_name, modules, ModuleOperateType::FINISH)
40
+ elsif ModuleOperateType::PUBLISH == module_operate_type
41
+ modules = ModuleCacheOperator.new(@path).all_git_modules
42
+ GradleOperator.new(module_full_path).update_build_config(module_name, modules, ModuleOperateType::PUBLISH)
43
+ GradleOperator.new(module_full_path).recover(true, false)
40
44
  end
45
+
46
+ GradleOperator.new(@path).update_build_config('', [module_name], module_operate_type)
47
+ GradleOperator.new(@path).update_settings_config('', [module_name], module_operate_type, @user)
41
48
  end
42
49
 
43
50
  def install(should_update)
44
- modules = ModuleCacheOperator.new(@path).all_path_modules
45
- GradleOperator.new(@path).update_setting_config('', @user, modules)
46
-
47
- modules.each do |module_name|
48
- module_full_path = BigkeeperParser.module_full_path(@path, @user, module_name)
49
- GradleOperator.new(module_full_path).update_setting_config(module_name, @user, modules)
50
- end
51
51
  end
52
52
 
53
53
  def open
@@ -17,7 +17,7 @@ module BigKeeper
17
17
  raise "You should override this method in subclass."
18
18
  end
19
19
 
20
- def update_module_config(module_name, module_type, source)
20
+ def update_module_config(module_name, module_operate_type)
21
21
  raise "You should override this method in subclass."
22
22
  end
23
23
 
@@ -17,14 +17,14 @@ module BigKeeper
17
17
  cache_operator.clean
18
18
  end
19
19
 
20
- def update_module_config(module_name, module_type, source)
20
+ def update_module_config(module_name, module_operate_type)
21
21
  file = "#{@path}/Podfile"
22
22
  temp_file = Tempfile.new('.Podfile.tmp')
23
23
 
24
24
  begin
25
25
  File.open(file, 'r') do |file|
26
26
  file.each_line do |line|
27
- temp_file.puts generate_module_config(line, module_name, module_type, source)
27
+ temp_file.puts generate_module_config(line, module_name, module_operate_type)
28
28
  end
29
29
  end
30
30
  temp_file.close
@@ -43,30 +43,48 @@ module BigKeeper
43
43
  XcodeOperator.open_workspace(@path)
44
44
  end
45
45
 
46
- def generate_module_config(line, module_name, module_type, source)
46
+ def generate_module_config(line, module_name, module_operate_type)
47
47
  line.sub(/(\s*)pod(\s*)('|")#{module_name}('|")([\s\S]*)/){
48
- if ModuleType::PATH == module_type
49
- "#{$1}pod '#{module_name}', :path => '#{source}'"
50
- elsif ModuleType::GIT == module_type
51
- # puts source.base
52
- # puts source.addition
53
- if GitType::BRANCH == source.type
54
- "#{$1}pod '#{module_name}', :git => '#{source.base}', :branch => '#{source.addition}'"
55
- elsif GitType::TAG == source.type
56
- "#{$1}pod '#{module_name}', :git => '#{source.base}', :tag => '#{source.addition}'"
57
- elsif GitType::COMMIT == source.type
58
- "#{$1}pod '#{module_name}', :git => '#{source.base}', :commit => '#{source.addition}'"
48
+ if ModuleOperateType::ADD == module_operate_type
49
+ module_path = BigkeeperParser.module_path(@user, module_name)
50
+ "#{$1}pod '#{module_name}', :path => '#{module_path}'"
51
+ elsif ModuleOperateType::DELETE == module_operate_type
52
+ origin_config_of_module = origin_config_of_module(module_name)
53
+ if origin_config_of_module.empty?
54
+ line
59
55
  else
60
- "#{$1}pod '#{module_name}', :git => '#{source.base}'"
56
+ origin_config_of_module
61
57
  end
62
- elsif ModuleType::SPEC == module_type
63
- "#{$1}pod '#{module_name}', '#{source}'"
58
+ elsif ModuleOperateType::FINISH == module_operate_type
59
+ module_git = BigkeeperParser.module_git(module_name)
60
+ branch_name = GitOperator.new.current_branch(@path)
61
+ "#{$1}pod '#{module_name}', :git => '#{module_git}', :branch => '#{branch_name}'"
62
+ elsif ModuleOperateType::PUBLISH == module_operate_type
63
+ module_git = BigkeeperParser.module_git(module_name)
64
+ branch_name = GitOperator.new.current_branch(@path)
65
+ base_branch_name = GitflowType.base_branch(GitService.new.current_branch_type(@path))
66
+ "#{$1}pod '#{module_name}', :git => '#{module_git}', :branch => '#{base_branch_name}'"
64
67
  else
65
68
  line
66
69
  end
67
70
  }
68
71
  end
69
72
 
70
- private :generate_module_config
73
+ def origin_config_of_module(module_name)
74
+ origin_config = ''
75
+
76
+ File.open("#{@path}/.bigkeeper/Podfile", 'r') do |file|
77
+ file.each_line do |line|
78
+ if line =~ /(\s*)pod(\s*)('|")#{module_name}('|")([\s\S]*)/
79
+ origin_config = line
80
+ break
81
+ end
82
+ end
83
+ end
84
+
85
+ origin_config.chop
86
+ end
87
+
88
+ private :generate_module_config, :origin_config_of_module
71
89
  end
72
90
  end
@@ -30,35 +30,4 @@ module BigKeeper
30
30
  end
31
31
  end
32
32
  end
33
-
34
- module ModuleType
35
- PATH = 1
36
- GIT = 2
37
- SPEC = 3
38
- end
39
-
40
- module GitType
41
- MASTER = 1
42
- BRANCH = 2
43
- TAG = 3
44
- COMMIT = 4
45
- end
46
-
47
- class GitInfo
48
- def initialize(base, type, addition)
49
- @base, @type, @addition = base, type, addition
50
- end
51
-
52
- def type
53
- @type
54
- end
55
-
56
- def base
57
- @base
58
- end
59
-
60
- def addition
61
- @addition
62
- end
63
- end
64
33
  end
@@ -16,4 +16,12 @@ module BigKeeper
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ module ModuleOperateType
21
+ ADD = 1
22
+ DELETE = 2
23
+ FINISH = 3
24
+ PUBLISH = 4
25
+ RELEASE = 5
26
+ end
19
27
  end
@@ -59,6 +59,10 @@ module BigKeeper
59
59
  verify_checkout(path, name)
60
60
  git.push_to_remote(path, name)
61
61
  end
62
+
63
+ if FileOperator.definitely_exists?("#{path}/.bigkeeper/module.cache")
64
+ Logger.error(%Q('#{name}' has '.bigkeeper/module.cache' cache path, you should fix it manually...))
65
+ end
62
66
  end
63
67
 
64
68
  def verify_home_branch(path, branch_name, type)
@@ -93,6 +97,19 @@ module BigKeeper
93
97
  end
94
98
  end
95
99
 
100
+ def current_branch_type(path)
101
+ branch_name = GitOperator.new.current_branch(path)
102
+ if branch_name =~ /^feature\/S*/
103
+ GitflowType::FEATURE
104
+ elsif branch_name =~ /^hotfix\/S*/
105
+ GitflowType::HOTFIX
106
+ elsif branch_name =~ /^release\/S*/
107
+ GitflowType::RELEASE
108
+ else
109
+ GitflowType::FEATURE
110
+ end
111
+ end
112
+
96
113
  def branchs_with_type(path, type)
97
114
  branchs = []
98
115
  Dir.chdir(path) do
@@ -69,18 +69,27 @@ module BigKeeper
69
69
  verify_module(path, user, module_name, home_branch_name, type)
70
70
  end
71
71
 
72
+ def pre_publish(path, user, module_name, home_branch_name, type)
73
+ Logger.highlight("Prepare to publish branch '#{home_branch_name}' for module '#{module_name}'...")
74
+
75
+ verify_module(path, user, module_name, home_branch_name, type)
76
+
77
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
78
+ GitService.new.verify_push(module_full_path, "prepare to rebase '#{GitflowType.base_branch(type)}'", home_branch_name, module_name)
79
+ GitService.new.verify_rebase(module_full_path, GitflowType.base_branch(type), module_name)
80
+ end
81
+
72
82
  def publish(path, user, module_name, home_branch_name, type)
73
83
  Logger.highlight("Publish branch '#{home_branch_name}' for module '#{module_name}'...")
74
84
 
75
- verify_module(path, user, module_name, home_branch_name, type)
85
+ DepService.dep_operator(path, user).update_module_config(module_name, ModuleOperateType::PUBLISH)
76
86
 
77
87
  module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
78
88
  GitService.new.verify_push(module_full_path, "publish branch #{home_branch_name}", home_branch_name, module_name)
79
- GitService.new.verify_rebase(module_full_path, GitflowType.base_branch(type), module_name)
80
89
 
81
90
  `open #{BigkeeperParser.module_pulls(module_name)}`
82
91
 
83
- ModuleCacheOperator.new(path).del_branch_module(module_name)
92
+ ModuleCacheOperator.new(path).del_git_module(module_name)
84
93
  end
85
94
 
86
95
  def finish(path, user, module_name, home_branch_name, type)
@@ -88,31 +97,25 @@ module BigKeeper
88
97
 
89
98
  verify_module(path, user, module_name, home_branch_name, type)
90
99
 
100
+ DepService.dep_operator(path, user).update_module_config(module_name, ModuleOperateType::FINISH)
101
+
91
102
  module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
92
103
  GitService.new.verify_push(module_full_path, "finish branch #{home_branch_name}", home_branch_name, module_name)
93
104
 
94
- module_git = BigkeeperParser.module_git(module_name)
95
-
96
- DepService.dep_operator(path, user).update_module_config(
97
- module_name,
98
- ModuleType::GIT,
99
- GitInfo.new(module_git, GitType::BRANCH, home_branch_name))
100
-
101
- ModuleCacheOperator.new(path).add_branch_module(module_name)
105
+ ModuleCacheOperator.new(path).add_git_module(module_name)
106
+ ModuleCacheOperator.new(path).del_path_module(module_name)
102
107
  end
103
108
 
104
109
  def add(path, user, module_name, name, type)
105
110
  home_branch_name = "#{GitflowType.name(type)}/#{name}"
106
111
  Logger.highlight("Add branch '#{home_branch_name}' for module '#{module_name}'...")
107
112
 
108
-
109
113
  verify_module(path, user, module_name, home_branch_name, type)
110
114
 
111
- module_path = BigkeeperParser.module_path(user, module_name)
112
- DepService.dep_operator(path, user).update_module_config(
113
- module_name,
114
- ModuleType::PATH,
115
- module_path)
115
+ DepService.dep_operator(path, user).update_module_config(module_name, ModuleOperateType::ADD)
116
+
117
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
118
+ GitService.new.verify_push(module_full_path, "init #{GitflowType.name(type)} #{name}", home_branch_name, module_name)
116
119
 
117
120
  ModuleCacheOperator.new(path).add_path_module(module_name)
118
121
  end
@@ -122,20 +125,28 @@ module BigKeeper
122
125
 
123
126
  Logger.highlight("Delete branch '#{home_branch_name}' for module '#{module_name}'...")
124
127
 
125
- module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
126
-
127
- StashService.new.stash(module_full_path, home_branch_name, module_name)
128
+ module_git = BigkeeperParser.module_git(module_name)
129
+ DepService.dep_operator(path, user).update_module_config(module_name, ModuleOperateType::DELETE)
128
130
 
131
+ # Stash module current branch
132
+ module_full_path = BigkeeperParser.module_full_path(path, user, module_name)
133
+ current_branch_name = GitOperator.new.current_branch(module_full_path)
134
+ StashService.new.stash(module_full_path, current_branch_name, module_name)
129
135
  GitOperator.new.checkout(module_full_path, GitflowType.base_branch(type))
130
- # GitOperator.new.del(module_full_path, home_branch_name)
131
-
132
- module_git = BigkeeperParser.module_git(module_name)
133
- DepService.dep_operator(path, user).update_module_config(
134
- module_name,
135
- ModuleType::GIT,
136
- GitInfo.new(module_git, GitType::BRANCH, GitflowType.base_branch(type)))
137
136
 
138
137
  ModuleCacheOperator.new(path).del_path_module(module_name)
139
138
  end
139
+
140
+ def list(path, user, module_path)
141
+ branches_name = []
142
+ IO.popen("cd #{path}; git branch -a") do |io|
143
+ io.each do |line|
144
+ branches_name << line.strip if line.include? 'feature'
145
+ end
146
+ end
147
+ branches_name
148
+ end
149
+
150
+ private :verify_module
140
151
  end
141
152
  end
@@ -164,9 +164,12 @@ module BigKeeper
164
164
  end
165
165
 
166
166
  def self.verify_modules(modules)
167
+ modules = [] unless modules
168
+ modules = modules.uniq
167
169
  modules.each do |item|
168
170
  Logger.error("Can not find module #{item} in Bigkeeper file") unless @@config[:modules][item]
169
171
  end
172
+ modules
170
173
  end
171
174
 
172
175
  def self.module_names
@@ -26,7 +26,6 @@ module BigKeeper
26
26
  class ModuleCacheOperator
27
27
  def initialize(path)
28
28
  @cache_path = File.expand_path("#{path}/.bigkeeper")
29
- @modules = {"git" => {"all" => [], "current" => []}, "path" => {"all" => [], "current" => []}}
30
29
 
31
30
  FileUtils.mkdir_p(@cache_path) unless File.exist?(@cache_path)
32
31
 
@@ -34,6 +33,8 @@ module BigKeeper
34
33
  file = File.open("#{@cache_path}/module.cache", 'r')
35
34
  @modules = JSON.load(file.read())
36
35
  file.close
36
+ else
37
+ @modules = {"git" => {"all" => [], "current" => []}, "path" => {"all" => [], "add" => [], "del" => [], "current" => []}}
37
38
  end
38
39
  end
39
40
 
@@ -41,10 +42,22 @@ module BigKeeper
41
42
  @modules["path"]["all"]
42
43
  end
43
44
 
45
+ def add_path_modules
46
+ @modules["path"]["add"]
47
+ end
48
+
49
+ def del_path_modules
50
+ @modules["path"]["del"]
51
+ end
52
+
44
53
  def current_path_modules
45
54
  @modules["path"]["current"]
46
55
  end
47
56
 
57
+ def remain_path_modules
58
+ @modules["path"]["all"] - @modules["path"]["current"]
59
+ end
60
+
48
61
  def all_git_modules
49
62
  @modules["git"]["all"]
50
63
  end
@@ -53,35 +66,39 @@ module BigKeeper
53
66
  @modules["git"]["current"]
54
67
  end
55
68
 
56
- def cache_path_modules(modules)
57
- @modules["path"]["all"] = modules
69
+ def remain_git_modules
70
+ @modules["git"]["all"] - @modules["git"]["current"]
71
+ end
72
+
73
+ def cache_path_modules(modules, add_modules, del_modules)
74
+ @modules["path"]["all"] = modules.uniq
75
+ @modules["path"]["add"] = add_modules.uniq
76
+ @modules["path"]["del"] = del_modules.uniq
58
77
  cache_modules
59
78
  end
60
79
 
61
80
  def cache_git_modules(modules)
62
- @modules["git"]["all"] = modules
81
+ @modules["git"]["all"] = modules.uniq
63
82
  cache_modules
64
83
  end
65
84
 
66
- def add_branch_module(module_name)
67
- @modules["path"]["current"].delete(module_name)
68
- @modules["git"]["current"] << module_name
85
+ def add_git_module(module_name)
86
+ @modules["git"]["current"] << module_name unless @modules["git"]["current"].include?(module_name)
69
87
  cache_modules
70
88
  end
71
89
 
72
- def del_branch_module(module_name)
73
- @modules["git"]["current"].delete(module_name)
90
+ def del_git_module(module_name)
91
+ @modules["git"]["current"].delete(module_name) if @modules["git"]["current"].include?(module_name)
74
92
  cache_modules
75
93
  end
76
94
 
77
95
  def add_path_module(module_name)
78
- @modules["git"]["current"].delete(module_name)
79
- @modules["path"]["current"] << module_name
96
+ @modules["path"]["current"] << module_name unless @modules["path"]["current"].include?(module_name)
80
97
  cache_modules
81
98
  end
82
99
 
83
100
  def del_path_module(module_name)
84
- @modules["path"]["current"].delete(module_name)
101
+ @modules["path"]["current"].delete(module_name) if @modules["path"]["current"].include?(module_name)
85
102
  cache_modules
86
103
  end
87
104
 
@@ -13,7 +13,7 @@ module BigKeeper
13
13
  has_branch = false
14
14
  IO.popen("cd #{path}; git branch -r") do |io|
15
15
  io.each do |line|
16
- has_branch = true if line.include? branch_name
16
+ has_branch = true if line =~ /([\s\S]*)#{branch_name}$/
17
17
  end
18
18
  end
19
19
  has_branch
@@ -23,7 +23,7 @@ module BigKeeper
23
23
  has_branch = false
24
24
  IO.popen("cd #{path}; git branch") do |io|
25
25
  io.each do |line|
26
- has_branch = true if line.include? branch_name
26
+ has_branch = true if line =~ /([\s\S]*)#{branch_name}$/
27
27
  end
28
28
  end
29
29
  has_branch
@@ -33,7 +33,7 @@ module BigKeeper
33
33
  has_branch = false
34
34
  IO.popen("cd #{path}; git branch -a") do |io|
35
35
  io.each do |line|
36
- has_branch = true if line.include? branch_name
36
+ has_branch = true if line =~ /([\s\S]*)#{branch_name}$/
37
37
  end
38
38
  end
39
39
  has_branch
@@ -88,7 +88,7 @@ module BigKeeper
88
88
 
89
89
  def has_commits(path, branch_name)
90
90
  has_commits = false
91
- IO.popen("cd #{path}; git log --branches --not --remotes") do |io|
91
+ IO.popen("cd #{path}; git log #{branch_name} --not --remotes") do |io|
92
92
  io.each do |line|
93
93
  has_commits = true if line.include? branch_name
94
94
  end
@@ -4,141 +4,173 @@ module BigKeeper
4
4
  # Operator for podfile
5
5
  class GradleOperator
6
6
  def initialize(path)
7
- @path = File.expand_path(path)
7
+ @path = path
8
8
  end
9
9
 
10
10
  def backup
11
11
  cache_operator = CacheOperator.new(@path)
12
+
12
13
  cache_operator.save('settings.gradle')
14
+
13
15
  Dir.glob("#{@path}/*/build.gradle").each do |build_gradle_file_path|
14
16
  build_gradle_file = build_gradle_file_path.gsub!(/#{@path}/, '')
15
17
  cache_operator.save(build_gradle_file)
16
18
  end
17
19
  end
18
20
 
19
- def recover
21
+ def recover(settings_config, build_config)
20
22
  cache_operator = CacheOperator.new(@path)
21
- cache_operator.load('settings.gradle')
23
+
24
+ cache_operator.load('settings.gradle') if settings_config
25
+
26
+ if build_config
27
+ Dir.glob("#{@path}/*/build.gradle").each do |build_gradle_file_path|
28
+ build_gradle_file = build_gradle_file_path.gsub!(/#{@path}/, '')
29
+ cache_operator.load(build_gradle_file)
30
+ end
31
+ end
32
+
22
33
  cache_operator.clean
23
34
  end
24
35
 
25
- def update_setting_config(current_module_name, user, modules)
26
- CacheOperator.new(@path).load('settings.gradle')
27
- begin
28
- File.open("#{@path}/settings.gradle", 'a') do |file|
29
- modules.each do |module_name|
30
- next if current_module_name == module_name
36
+ def update_settings_config(current_module_name, modules, module_operate_type, user)
37
+ return if modules.empty?
38
+
39
+ if ModuleOperateType::ADD == module_operate_type
40
+ modules.each do |module_name|
41
+ next if current_module_name == module_name
42
+
43
+ File.open("#{@path}/settings.gradle", 'a') do |file|
31
44
  file.puts "\r\ninclude ':module:#{module_name.downcase}'\r\n"
32
45
  file.puts "project(':module:#{module_name.downcase}')." \
33
46
  "projectDir = new File(rootProject.projectDir," \
34
47
  "'#{BigkeeperParser.module_path(user, module_name)}/#{module_name.downcase}-lib')\r\n"
35
48
  end
36
49
  end
37
- ensure
50
+ else
51
+ modules.each do |module_name|
52
+ next if current_module_name == module_name
53
+ temp_file = Tempfile.new('.settings.gradle.tmp')
54
+ begin
55
+ File.open("#{@path}/settings.gradle", 'r') do |file|
56
+ file.each_line do |line|
57
+ unless line =~ /(\s*)include(\s*)('|")(\S*):#{module_name.downcase}('|")(\S*)/ ||
58
+ line =~ /(\s*)project\(('|")(\S*):#{module_name.downcase}('|")\).(\S*)/
59
+ temp_file.puts(line)
60
+ end
61
+ end
62
+ end
63
+ temp_file.close
64
+ FileUtils.mv(temp_file.path, "#{@path}/settings.gradle")
65
+ ensure
66
+ temp_file.close
67
+ temp_file.unlink
68
+ end
69
+ end
38
70
  end
39
71
  end
40
72
 
41
- def update_module_config(module_name, module_type, source)
42
- Dir.glob("#{@path}/*/build.gradle").each do |file|
43
- temp_file = Tempfile.new('.build.gradle.tmp')
44
- begin
45
- version_flag = false
46
- version_index = 0
47
-
48
- File.open(file, 'r') do |file|
49
- file.each_line do |line|
50
- version_flag = true if line.include? 'modifyPom'
51
- if version_flag
52
- version_index += 1 if line.include? '{'
53
- version_index -= 1 if line.include? '}'
54
-
55
- version_flag = false if 0 == version_flag
56
-
57
- temp_file.puts generate_version_config(line, module_name, module_type, source)
58
- else
59
- temp_file.puts generate_compile_config(line, module_name, module_type, source)
73
+ def update_build_config(current_module_name, modules, module_operate_type)
74
+ return if modules.empty?
75
+
76
+ Dir.glob("#{@path}/*/build.gradle").each do |file_path|
77
+ modules.each do |module_name|
78
+ next if current_module_name == module_name
79
+
80
+ temp_file = Tempfile.new('.build.gradle.tmp')
81
+ begin
82
+ version_flag = false
83
+ version_index = 0
84
+
85
+ File.open(file_path, 'r') do |file|
86
+ file.each_line do |line|
87
+ new_line, version_index, version_flag = generate_build_config(
88
+ line,
89
+ module_name,
90
+ module_operate_type,
91
+ version_index,
92
+ version_flag)
93
+
94
+ temp_file.puts(new_line)
60
95
  end
61
96
  end
97
+ temp_file.close
98
+ FileUtils.mv(temp_file.path, file_path)
99
+ ensure
100
+ temp_file.close
101
+ temp_file.unlink
62
102
  end
63
- temp_file.close
64
- FileUtils.mv(temp_file.path, file)
65
- ensure
66
- temp_file.close
67
- temp_file.unlink
68
103
  end
69
104
  end
70
105
  end
71
106
 
72
- def generate_version_config(line, module_name, module_type, source)
73
- if ModuleType::GIT == module_type
107
+ def generate_build_config(line, module_name, module_operate_type, version_index, version_flag)
108
+ new_line = line
109
+
110
+ version_flag = true if line.downcase.include? 'modifypom'
111
+ if version_flag
112
+ version_index += 1 if line.include? '{'
113
+ version_index -= 1 if line.include? '}'
114
+
115
+ version_flag = false if 0 == version_flag
116
+
117
+ new_line = generate_version_config(line, module_name, module_operate_type)
118
+ else
119
+ new_line = generate_compile_config(line, module_name, module_operate_type)
120
+ end
121
+
122
+ [new_line, version_index, version_flag]
123
+ end
124
+
125
+ def generate_version_config(line, module_name, module_operate_type)
126
+ if ModuleOperateType::FINISH == module_operate_type || ModuleOperateType::PUBLISH == module_operate_type
74
127
  branch_name = GitOperator.new.current_branch(@path)
75
128
  full_name = ''
76
129
 
77
130
  # Get version part of source.addition
78
- if 'develop' == source.addition || 'master' == source.addition
131
+ if ModuleOperateType::PUBLISH == module_operate_type
79
132
  full_name = branch_name.sub(/([\s\S]*)\/(\d+.\d+.\d+)_([\s\S]*)/){ $2 }
80
133
  else
81
134
  full_name = branch_name.sub(/([\s\S]*)\/([\s\S]*)/){ $2 }
82
135
  end
136
+
83
137
  line.sub(/(\s*)version ('|")(\S*)('|")([\s\S]*)/){
84
138
  "#{$1}version '#{full_name}'#{$5}"
85
139
  }
86
- elsif ModuleType::SPEC == module_type
87
- line.sub(/(\s*)version ('|")(\S*)('|")([\s\S]*)/){
88
- "#{$1}version '#{source}'#{$5}"
89
- }
90
140
  else
91
141
  line
92
142
  end
93
143
  end
94
144
 
95
- def prefix_of_module(module_name)
96
- prefix = ''
97
- Dir.glob("#{@path}/.bigkeeper/*/build.gradle").each do |file|
98
- File.open(file, 'r') do |file|
99
- file.each_line do |line|
100
- if line =~ /(\s*)([\s\S]*)('|")(\S*)#{module_name.downcase}(\S*)('|")(\S*)/
101
- prefix = line.sub(/(\s*)([\s\S]*)('|")(\S*)#{module_name.downcase}(\S*)('|")(\S*)/){
102
- $4
103
- }
104
- break
105
- end
106
- end
107
- end
108
- break unless prefix.empty?
109
- end
110
-
111
- prefix.chop
112
- end
113
-
114
- def generate_compile_config(line, module_name, module_type, source)
115
- if ModuleType::PATH == module_type
116
- line.sub(/(\s*)compile(\s*)('|")(\S*)#{module_name.downcase}(\S*)('|")(\S*)/){
145
+ def generate_compile_config(line, module_name, module_operate_type)
146
+ if ModuleOperateType::ADD == module_operate_type
147
+ line.sub(/(\s*)compile(\s*)('|")(\S*):#{module_name.downcase}:(\S*)('|")(\S*)/){
117
148
  "#{$1}compile project(':module:#{module_name.downcase}')"
118
149
  }
119
- elsif ModuleType::GIT == module_type
150
+ elsif ModuleOperateType::DELETE == module_operate_type
151
+ line.sub(/(\s*)([\s\S]*)('|")(\S*):#{module_name.downcase}:(\S*)('|")(\S*)/){
152
+ origin_config_of_module = origin_config_of_module(module_name)
153
+ if origin_config_of_module.empty?
154
+ line
155
+ else
156
+ origin_config_of_module
157
+ end
158
+ }
159
+ elsif ModuleOperateType::FINISH == module_operate_type || ModuleOperateType::PUBLISH == module_operate_type
120
160
  branch_name = GitOperator.new.current_branch(@path)
121
161
  full_name = ''
122
162
 
123
163
  # Get version part of source.addition
124
- if 'develop' == source.addition || 'master' == source.addition
164
+ if ModuleOperateType::PUBLISH == module_operate_type
125
165
  full_name = branch_name.sub(/([\s\S]*)\/(\d+.\d+.\d+)_([\s\S]*)/){ $2 }
126
166
  else
127
167
  full_name = branch_name.sub(/([\s\S]*)\/([\s\S]*)/){ $2 }
128
168
  end
129
- line.sub(/(\s*)([\s\S]*)('|")(\S*)#{module_name.downcase}(\S*)('|")(\S*)/){
130
- if $2.include? 'moduleCompile'
131
- "#{$1}moduleCompile '#{prefix_of_module(module_name)}#{module_name.downcase}:#{full_name}-SNAPSHOT'"
132
- else
133
- "#{$1}compile '#{prefix_of_module(module_name)}#{module_name.downcase}:#{full_name}-SNAPSHOT'"
134
- end
135
- }
136
- elsif ModuleType::SPEC == module_type
137
- line.sub(/(\s*)([\s\S]*)('|")(\S*)#{module_name.downcase}(\S*)('|")(\S*)/){
138
- if $2.include? 'moduleCompile'
139
- "#{$1}moduleCompile '#{prefix_of_module(module_name)}#{module_name.downcase}:#{source}'"
169
+ line.sub(/(\s*)([\s\S]*)('|")(\S*):#{module_name.downcase}(:\S*)*('|")(\S*)/){
170
+ if $2.downcase.include? 'modulecompile'
171
+ "#{$1}moduleCompile '#{prefix_of_module(module_name)}:#{module_name.downcase}:#{full_name}-SNAPSHOT'"
140
172
  else
141
- "#{$1}compile '#{prefix_of_module(module_name)}#{module_name.downcase}:#{source}'"
173
+ "#{$1}compile '#{prefix_of_module(module_name)}:#{module_name.downcase}:#{full_name}-SNAPSHOT'"
142
174
  end
143
175
  }
144
176
  else
@@ -146,6 +178,32 @@ module BigKeeper
146
178
  end
147
179
  end
148
180
 
149
- private :generate_compile_config, :generate_version_config, :prefix_of_module
181
+ def origin_config_of_module(module_name)
182
+ origin_config = ''
183
+
184
+ Dir.glob("#{@path}/.bigkeeper/*/build.gradle").each do |file|
185
+ File.open(file, 'r') do |file|
186
+ file.each_line do |line|
187
+ if line =~ /(\s*)([\s\S]*)('|")(\S*):#{module_name.downcase}:(\S*)('|")(\S*)/
188
+ origin_config = line
189
+ break
190
+ end
191
+ end
192
+ end
193
+ break unless origin_config.empty?
194
+ end
195
+
196
+ origin_config.chop
197
+ end
198
+
199
+ def prefix_of_module(module_name)
200
+ origin_config = origin_config_of_module(module_name)
201
+ prefix = origin_config.sub(/(\s*)([\s\S]*)('|")(\S*)#{module_name.downcase}(\S*)('|")(\S*)/){
202
+ $4
203
+ }
204
+ prefix.chop
205
+ end
206
+
207
+ private :generate_build_config, :generate_compile_config, :generate_version_config, :origin_config_of_module, :prefix_of_module
150
208
  end
151
209
  end
@@ -0,0 +1,29 @@
1
+ require 'big_keeper/util/logger'
2
+
3
+ module BigKeeper
4
+ class ListGenerator
5
+ def self.generate(file_path,branches_name)
6
+ module_branches_dic = {}
7
+ home_name = BigkeeperParser.home_name
8
+ File.open(file_path, 'r') do |file|
9
+ file.each_line do |line|
10
+ if /=>/ =~ line.delete('{}"')
11
+ module_branches_dic[$~.pre_match] = $~.post_match.delete('[]"').split(',')
12
+ end
13
+ end
14
+ end
15
+
16
+ branches_name.each do |branch_name|
17
+ Logger.highlight(" #{home_name} - #{branch_name} ")
18
+ module_branches_dic.keys.each do |module_name|
19
+ module_branches_dic[module_name].each do |module_branch|
20
+ if module_branch.include?(branch_name.strip.delete('*'))
21
+ Logger.default(" |_ _ _ #{module_name} - #{branch_name}")
22
+ break
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module BigKeeper
2
- VERSION = "0.7.8"
2
+ VERSION = "0.8.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.8
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mmoaay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-08 00:00:00.000000000 Z
11
+ date: 2018-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -227,6 +227,7 @@ files:
227
227
  - lib/big_keeper/command/feature&hotfix.rb
228
228
  - lib/big_keeper/command/feature&hotfix/delete.rb
229
229
  - lib/big_keeper/command/feature&hotfix/finish.rb
230
+ - lib/big_keeper/command/feature&hotfix/list.rb
230
231
  - lib/big_keeper/command/feature&hotfix/publish.rb
231
232
  - lib/big_keeper/command/feature&hotfix/pull.rb
232
233
  - lib/big_keeper/command/feature&hotfix/push.rb
@@ -257,6 +258,7 @@ files:
257
258
  - lib/big_keeper/util/gitflow_operator.rb
258
259
  - lib/big_keeper/util/gradle_operator.rb
259
260
  - lib/big_keeper/util/info_plist_operator.rb
261
+ - lib/big_keeper/util/list_generator.rb
260
262
  - lib/big_keeper/util/logger.rb
261
263
  - lib/big_keeper/util/pod_operator.rb
262
264
  - lib/big_keeper/util/podfile_detector.rb