git-multirepo 1.0.0.beta37 → 1.0.0.beta38

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7dfb2bbd05db8f1fc690a93f9e4d8dd5af2ac2b3
4
- data.tar.gz: 94aaeaeaed6f949e5be90b5dd530f4d0e45d04b9
3
+ metadata.gz: 422c984238cb4049bcededa9a63ac57ca1d13445
4
+ data.tar.gz: f9e95a0941a9160fc5b714d76bd5c3664c35ba67
5
5
  SHA512:
6
- metadata.gz: 12a9685e601c9e08fea6294a5ae6467cc46e6d467e110a7dbf4f6448b178b0a130c4962d3e396046e3a2046379932ac81da47a2bce26cdb42ed897984abc13d9
7
- data.tar.gz: 5d8d985bd4266d03b0b3a909a31f13c1121c12504618afe5a30f5eb0230284e651002caee6c90c381957dc515fd002f7555566ab6f1d04ef1a991089d25e6842
6
+ metadata.gz: 73835b202c7a7d5e0104cca153488d57bc3173f30efcb04cea4f0a277f4c522215de0e50dcbeab6cd4216987f794268b6e8fd852d4b62bdbdefd6793ad6878ff
7
+ data.tar.gz: 7590706f24a5ca82f2275dbeb361fe251223ccdb6797f959a9fbeb941c0f0b7d852958ca2e01586bdac2be10ccd33a2c4627c732b9e7aadc5ccdebf86b405be9
data/.gitbugtraq ADDED
@@ -0,0 +1,3 @@
1
+ [bugtraq "pivotal"]
2
+ url = https://www.pivotaltracker.com/story/show/%BUGID%
3
+ logRegex = (\\b\\d{8}\\b)
data/.multirepo.lock CHANGED
@@ -2,8 +2,8 @@
2
2
  - !ruby/object:MultiRepo::LockEntry
3
3
  name: git-multirepo-dummy
4
4
  id: e27695e9-e21d-4ad1-81b8-0ed587574c38
5
- head: a2d5471317b1c8510f4b9fb69fb1904c88eec4f8
6
- branch: master
5
+ head: 7b9066617b1fa03b3bf2daecf0d3aea92cf2606a
6
+ branch:
7
7
  - !ruby/object:MultiRepo::LockEntry
8
8
  name: git-multirepo-dummy-dep1
9
9
  id: dcb567d6-7456-494a-b7b5-adc208a87f2f
@@ -17,5 +17,5 @@
17
17
  - !ruby/object:MultiRepo::LockEntry
18
18
  name: git-multirepo-migrations
19
19
  id: ad6472a5-7238-447f-a54e-50f50197e21e
20
- head: 160b6a15d9bed989abbcf81d2a91cb4a226f4482
20
+ head: 15ee465101c368193a052cd1f5b0c5accc6fb9fa
21
21
  branch: master
data/.multirepo.meta CHANGED
@@ -1,2 +1,2 @@
1
1
  --- !ruby/object:MultiRepo::MetaFile
2
- version: 1.0.0.beta34
2
+ version: 1.0.0.beta37
data/README.md CHANGED
@@ -124,6 +124,7 @@ Here is a quick rundown of commands available to you in git-multirepo:
124
124
  | clone | Clones the specified repository in a subfolder, then installs it. |
125
125
  | fetch | Performs a git fetch on all dependencies. |
126
126
  | install | Clones and checks out dependencies as defined in the version-controlled multirepo metadata files and installs git-multirepo's local git hooks. |
127
+ | merge | Performs a git merge on all dependencies and the main repo, in the proper order. |
127
128
  | open | Opens all dependencies in the current OS's file explorer. |
128
129
  | remove | Removes the specified dependency from multirepo. |
129
130
  | update | Force-updates the multirepo tracking files. |
@@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
26
26
  spec.add_runtime_dependency "claide", "~> 0.8", ">= 0.8.0"
27
27
  spec.add_runtime_dependency "colored", "~> 1.2"
28
28
  spec.add_runtime_dependency "os", "~> 0.9.6"
29
+ spec.add_runtime_dependency "terminal-table", "~> 1.4.5"
29
30
  end
data/lib/git-multirepo.rb CHANGED
@@ -1,2 +1,3 @@
1
- require "multirepo/hooks/pre-commit-hook.rb"
2
- require "multirepo/hooks/post-commit-hook.rb"
1
+ require "multirepo/utility/console"
2
+ require "multirepo/hooks/pre-commit-hook"
3
+ require "multirepo/hooks/post-commit-hook"
data/lib/info.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module MultiRepo
2
2
  NAME = "git-multirepo"
3
- VERSION = "1.0.0.beta37"
3
+ VERSION = "1.0.0.beta38"
4
4
  DESCRIPTION = "Track multiple Git repositories side-by-side."
5
5
  end
@@ -32,11 +32,12 @@ module MultiRepo
32
32
  super
33
33
  ensure_in_work_tree
34
34
 
35
- Console.log_step("Checking out #{@ref} and its dependencies...")
36
-
37
35
  # Find out the checkout mode based on command-line options
38
36
  mode = RevisionSelector.mode_for_args(@checkout_latest, @checkout_exact)
39
37
 
38
+ strategy_name = RevisionSelectionMode.name_for_mode(mode)
39
+ Console.log_step("Checking out #{@ref} and its dependencies using the '#{strategy_name}' strategy...")
40
+
40
41
  main_repo = Repo.new(".")
41
42
 
42
43
  unless proceed_if_merge_commit?(main_repo, @ref, mode)
@@ -26,7 +26,7 @@ module MultiRepo
26
26
  end
27
27
 
28
28
  def clean(repo_path)
29
- Git.run_in_working_dir(repo_path, "clean -df", Runner::Verbosity::OUTPUT_ALWAYS)
29
+ GitRunner.run_in_working_dir(repo_path, "clean -df", Runner::Verbosity::OUTPUT_ALWAYS)
30
30
  end
31
31
  end
32
32
  end
@@ -1,7 +1,10 @@
1
+ require "terminal-table"
2
+
1
3
  require "multirepo/utility/console"
2
4
  require "multirepo/logic/node"
3
5
  require "multirepo/logic/revision-selector"
4
6
  require "multirepo/logic/performer"
7
+ require "multirepo/logic/merge-descriptor"
5
8
 
6
9
  module MultiRepo
7
10
  class MergeCommand < Command
@@ -34,20 +37,25 @@ module MultiRepo
34
37
  ensure_in_work_tree
35
38
  ensure_multirepo_enabled
36
39
 
37
- Console.log_step("Merging #{@ref} ...")
40
+ # Find out the checkout mode based on command-line options
41
+ mode = RevisionSelector.mode_for_args(@checkout_latest, @checkout_exact)
42
+
43
+ strategy_name = RevisionSelectionMode.name_for_mode(mode)
44
+ Console.log_step("Merging #{@ref} with '#{strategy_name}' strategy...")
38
45
 
39
46
  main_repo = Repo.new(".")
40
47
 
41
48
  # Keep the initial revision because we're going to need to come back to it later
42
49
  initial_revision = main_repo.current_branch || main_repo.head_hash
43
50
 
44
- # Find out the checkout mode based on command-line options
45
- mode = RevisionSelector.mode_for_args(@checkout_latest, @checkout_exact)
46
-
47
51
  begin
48
52
  merge_core(main_repo, initial_revision, mode)
49
53
  rescue MultiRepoException => e
50
- Performer.perform_main_repo_checkout(main_repo, initial_revision)
54
+ # Revert to the initial revision only if necessary
55
+ unless main_repo.current_branch == initial_revision || main_repo.head_hash == initial_revision
56
+ Console.log_substep("Restoring working copy to #{initial_revision}")
57
+ main_repo.checkout(initial_revision)
58
+ end
51
59
  raise e
52
60
  end
53
61
 
@@ -70,22 +78,34 @@ module MultiRepo
70
78
  raise MultiRepoException, "Dependencies are not clean; merge aborted"
71
79
  end
72
80
 
81
+ # Fetch repos to make sure we have the latest history in each.
82
+ # Fetching pre-checkout dependency repositories is sufficient because
83
+ # we make sure that the same dependencies are configured post-checkout.
84
+ Console.log_substep("Fetching repositories before proceeding with merge...")
85
+ main_repo.fetch
86
+ pre_checkout_config_entries.each { |e| e.repo.fetch }
87
+
73
88
  # Checkout the specified main repo ref to find out which dependency refs to merge
74
89
  Performer.perform_main_repo_checkout(main_repo, @ref)
75
90
 
76
91
  # Load config entries for the ref we're going to merge
77
92
  post_checkout_config_entries = config_file.load_entries
78
93
 
79
- # Auto-merge would be too complex if the specified ref does not have the same dependencies
94
+ # Auto-merge would be too complex to implement (due to lots of edge cases)
95
+ # if the specified ref does not have the same dependencies
80
96
  ensure_dependencies_match(pre_checkout_config_entries, post_checkout_config_entries)
81
-
82
- Console.log_substep("Merging would do the following:")
83
97
 
98
+ # Create a merge descriptor for each would-be merge
99
+ descriptors = []
84
100
  Performer.perform_on_dependencies do |config_entry, lock_entry|
85
101
  revision = RevisionSelector.revision_for_mode(mode, @ref, lock_entry)
86
- Console.log_info("#{lock_entry.name}: Merge #{revision} into current branch")
102
+ descriptors.push(MergeDescriptor.new(config_entry.name, config_entry.path, revision))
87
103
  end
88
- Console.log_info("[main repo]: Merge #{@ref} into current branch")
104
+ descriptors.push(MergeDescriptor.new("Main Repo", main_repo.path, @ref))
105
+
106
+ # Log merge operations to the console before the fact
107
+ Console.log_warning("Merging would #{message_for_mode(mode, @ref)}:")
108
+ log_merges(descriptors)
89
109
 
90
110
  raise MultiRepoException, "Merge aborted" unless Console.ask_yes_no("Proceed?")
91
111
 
@@ -94,16 +114,8 @@ module MultiRepo
94
114
  # Checkout the initial revision to perform the merge in it
95
115
  Performer.perform_main_repo_checkout(main_repo, initial_revision)
96
116
 
97
- # Merge dependencies
98
- Performer.perform_on_dependencies do |config_entry, lock_entry|
99
- revision = RevisionSelector.revision_for_mode(mode, @ref, lock_entry)
100
- Console.log_substep("#{lock_entry.name}: Merging #{revision} into current branch...")
101
- Git.run_in_working_dir(config_entry.path, "merge #{revision}", Runner::Verbosity::OUTPUT_ALWAYS)
102
- end
103
-
104
- # Merge the main repo
105
- Console.log_substep("[main repo]: Merging #{@ref} into current branch...")
106
- Git.run_in_current_dir("merge #{@ref}", Runner::Verbosity::OUTPUT_ALWAYS)
117
+ # Merge dependencies and the main repo
118
+ perform_merges(descriptors)
107
119
  end
108
120
 
109
121
  def ensure_dependencies_match(pre_checkout_config_entries, post_checkout_config_entries)
@@ -122,5 +134,33 @@ module MultiRepo
122
134
  raise MultiRepoException, "There are more dependencies in the specified ref, please merge manually"
123
135
  end
124
136
  end
137
+
138
+ def log_merges(descriptors)
139
+ table = Terminal::Table.new do |t|
140
+ descriptors.reverse.each_with_index do |descriptor, index|
141
+ t.add_row [descriptor.name, "Merge '#{descriptor.revision}'"]
142
+ t.add_separator unless index == descriptors.count - 1
143
+ end
144
+ end
145
+ puts table
146
+ end
147
+
148
+ def message_for_mode(mode, ref)
149
+ case mode
150
+ when RevisionSelectionMode::AS_LOCK
151
+ "merge specific commits as stored in the lock file for main repo revision #{ref}"
152
+ when RevisionSelectionMode::LATEST
153
+ "merge each branch as stored in the lock file of main repo revision #{ref}"
154
+ when RevisionSelectionMode::EXACT
155
+ "merge #{ref} for each repository, ignoring the contents of the lock file"
156
+ end
157
+ end
158
+
159
+ def perform_merges(descriptors)
160
+ descriptors.each do |descriptor|
161
+ Console.log_substep("#{descriptor.name} : Merging #{descriptor.revision} into current branch...")
162
+ GitRunner.run_in_working_dir(descriptor.path, "merge #{descriptor.revision}", Runner::Verbosity::OUTPUT_ALWAYS)
163
+ end
164
+ end
125
165
  end
126
166
  end
@@ -16,20 +16,24 @@ module MultiRepo
16
16
  coder["url"] = @url
17
17
  end
18
18
 
19
- def ==(entry)
20
- entry_path = Pathname.new(entry.path)
21
- self_path = Pathname.new(self.path)
22
- entry_path.exist? && self_path.exist? && entry_path.realpath == self_path.realpath
23
- end
24
-
25
19
  def initialize(repo)
26
20
  @id = SecureRandom.uuid
27
21
  @path = repo.path
28
22
  @url = repo.exists? ? repo.remote('origin').url : nil
29
23
  end
30
24
 
25
+ def ==(entry)
26
+ entry_path = Pathname.new(entry.path)
27
+ self_path = Pathname.new(self.path)
28
+ entry_path.exist? && self_path.exist? && entry_path.realpath == self_path.realpath
29
+ end
30
+
31
31
  def repo
32
32
  Repo.new(path)
33
33
  end
34
+
35
+ def name
36
+ repo.basename
37
+ end
34
38
  end
35
39
  end
@@ -16,7 +16,7 @@ module MultiRepo
16
16
  end
17
17
 
18
18
  def initialize(config_entry)
19
- @name = config_entry.repo.basename
19
+ @name = config_entry.name
20
20
  @id = config_entry.id
21
21
  @head = config_entry.repo.head_hash
22
22
  @branch = config_entry.repo.current_branch
@@ -1,7 +1,6 @@
1
1
  require "pathname"
2
2
  require "psych"
3
3
 
4
- require "multirepo/git/git"
5
4
  require_relative "tracking-file"
6
5
  require_relative "lock-entry"
7
6
  require_relative "config-file"
@@ -2,7 +2,6 @@ require "pathname"
2
2
  require "psych"
3
3
 
4
4
  require "info"
5
- require "multirepo/git/git"
6
5
  require_relative "tracking-file"
7
6
  require_relative "lock-entry"
8
7
  require_relative "config-file"
@@ -1,4 +1,4 @@
1
- require "multirepo/git/git"
1
+ require "multirepo/git/git-runner"
2
2
  require_relative "meta-file"
3
3
  require_relative "lock-file"
4
4
 
@@ -13,20 +13,20 @@ module MultiRepo
13
13
  end
14
14
 
15
15
  def self.stage
16
- Git.run_in_current_dir("add --force -- #{files_pathspec}", Runner::Verbosity::OUTPUT_ON_ERROR)
16
+ GitRunner.run_in_current_dir("add --force -- #{files_pathspec}", Runner::Verbosity::OUTPUT_ON_ERROR)
17
17
  end
18
18
 
19
19
  def self.commit(message)
20
20
  stage
21
21
 
22
- output = Git.run_in_current_dir("ls-files --modified --others -- #{files_pathspec}", Runner::Verbosity::OUTPUT_NEVER)
22
+ output = GitRunner.run_in_current_dir("ls-files --modified --others -- #{files_pathspec}", Runner::Verbosity::OUTPUT_NEVER)
23
23
  files_are_untracked_or_modified = output.strip != ""
24
24
 
25
- output = Git.run_in_current_dir("diff --name-only --cached -- #{files_pathspec}", Runner::Verbosity::OUTPUT_NEVER)
25
+ output = GitRunner.run_in_current_dir("diff --name-only --cached -- #{files_pathspec}", Runner::Verbosity::OUTPUT_NEVER)
26
26
  files_are_staged = output.strip != ""
27
27
 
28
28
  must_commit = files_are_untracked_or_modified || files_are_staged
29
- Git.run_in_current_dir("commit -m \"#{message}\" --only -- #{files_pathspec}", Runner::Verbosity::OUTPUT_ON_ERROR) if must_commit
29
+ GitRunner.run_in_current_dir("commit -m \"#{message}\" --only -- #{files_pathspec}", Runner::Verbosity::OUTPUT_ON_ERROR) if must_commit
30
30
 
31
31
  return must_commit
32
32
  end
@@ -1,4 +1,4 @@
1
- require_relative "git"
1
+ require_relative "git-runner"
2
2
 
3
3
  module MultiRepo
4
4
  class Branch
@@ -10,19 +10,19 @@ module MultiRepo
10
10
  end
11
11
 
12
12
  def exists?
13
- lines = Git.run_in_working_dir(@repo.path, "branch", Runner::Verbosity::OUTPUT_NEVER).split("\n")
13
+ lines = GitRunner.run_in_working_dir(@repo.path, "branch", Runner::Verbosity::OUTPUT_NEVER).split("\n")
14
14
  branch_names = lines.map { |line| line.tr("* ", "")}
15
15
  branch_names.include?(@name)
16
16
  end
17
17
 
18
18
  def create(remote_tracking = false)
19
- Git.run_in_working_dir(@repo.path, "branch #{@name}", Runner::Verbosity::OUTPUT_ON_ERROR)
20
- Git.run_in_working_dir(@repo.path, "push -u origin #{name}", Runner::Verbosity::OUTPUT_ON_ERROR) if remote_tracking
19
+ GitRunner.run_in_working_dir(@repo.path, "branch #{@name}", Runner::Verbosity::OUTPUT_ON_ERROR)
20
+ GitRunner.run_in_working_dir(@repo.path, "push -u origin #{name}", Runner::Verbosity::OUTPUT_ON_ERROR) if remote_tracking
21
21
  end
22
22
 
23
23
  def checkout
24
- Git.run_in_working_dir(@repo.path, "checkout #{@name}", Runner::Verbosity::OUTPUT_ON_ERROR)
25
- Git.last_command_succeeded
24
+ GitRunner.run_in_working_dir(@repo.path, "checkout #{@name}", Runner::Verbosity::OUTPUT_ON_ERROR)
25
+ GitRunner.last_command_succeeded
26
26
  end
27
27
  end
28
28
  end
@@ -1,4 +1,4 @@
1
- require_relative "git"
1
+ require_relative "git-runner"
2
2
 
3
3
  module MultiRepo
4
4
  class Commit
@@ -10,7 +10,7 @@ module MultiRepo
10
10
  end
11
11
 
12
12
  def is_merge?
13
- lines = Git.run_in_working_dir(@repo.path, "cat-file -p #{@ref}", Runner::Verbosity::OUTPUT_NEVER).split("\n")
13
+ lines = GitRunner.run_in_working_dir(@repo.path, "cat-file -p #{@ref}", Runner::Verbosity::OUTPUT_NEVER).split("\n")
14
14
  parents = lines.grep(/^parent /)
15
15
  return parents.count > 1
16
16
  end
@@ -1,9 +1,8 @@
1
1
  require "multirepo/utility/runner"
2
- require "multirepo/git/git"
3
2
  require "multirepo/config"
4
3
 
5
4
  module MultiRepo
6
- class Git
5
+ class GitRunner
7
6
  class << self
8
7
  attr_accessor :last_command_succeeded
9
8
  end
@@ -1,4 +1,4 @@
1
- require_relative "git"
1
+ require_relative "git-runner"
2
2
 
3
3
  module MultiRepo
4
4
  class Remote
@@ -10,7 +10,7 @@ module MultiRepo
10
10
  end
11
11
 
12
12
  def url
13
- output = Git.run_in_working_dir(@repo.path, "config --get remote.#{@name}.url", Runner::Verbosity::OUTPUT_NEVER).strip
13
+ output = GitRunner.run_in_working_dir(@repo.path, "config --get remote.#{@name}.url", Runner::Verbosity::OUTPUT_NEVER).strip
14
14
  return output == "" ? nil : output
15
15
  end
16
16
  end
@@ -17,25 +17,25 @@ module MultiRepo
17
17
 
18
18
  def exists?
19
19
  return false unless Dir.exist?("#{@path}/.git")
20
- return Git.run_in_working_dir(@path, "rev-parse --is-inside-work-tree", Runner::Verbosity::OUTPUT_NEVER).strip == "true"
20
+ return GitRunner.run_in_working_dir(@path, "rev-parse --is-inside-work-tree", Runner::Verbosity::OUTPUT_NEVER).strip == "true"
21
21
  end
22
22
 
23
23
  def head_born?
24
- result = Git.run_in_working_dir(@path, "rev-parse HEAD --", Runner::Verbosity::OUTPUT_NEVER).strip
24
+ result = GitRunner.run_in_working_dir(@path, "rev-parse HEAD --", Runner::Verbosity::OUTPUT_NEVER).strip
25
25
  return !result.start_with?("fatal: bad revision")
26
26
  end
27
27
 
28
28
  def current_branch
29
- branch = Git.run_in_working_dir(@path, "rev-parse --abbrev-ref HEAD", Runner::Verbosity::OUTPUT_NEVER).strip
29
+ branch = GitRunner.run_in_working_dir(@path, "rev-parse --abbrev-ref HEAD", Runner::Verbosity::OUTPUT_NEVER).strip
30
30
  branch != "HEAD" ? branch : nil
31
31
  end
32
32
 
33
33
  def head_hash
34
- Git.run_in_working_dir(@path, "rev-parse HEAD", Runner::Verbosity::OUTPUT_NEVER).strip
34
+ GitRunner.run_in_working_dir(@path, "rev-parse HEAD", Runner::Verbosity::OUTPUT_NEVER).strip
35
35
  end
36
36
 
37
37
  def changes
38
- output = Git.run_in_working_dir(@path, "status --porcelain", Runner::Verbosity::OUTPUT_NEVER)
38
+ output = GitRunner.run_in_working_dir(@path, "status --porcelain", Runner::Verbosity::OUTPUT_NEVER)
39
39
  lines = output.split("\n").each{ |f| f.strip }.delete_if{ |f| f == "" }
40
40
  lines.map { |l| Change.new(l) }
41
41
  end
@@ -47,17 +47,17 @@ module MultiRepo
47
47
  # Operations
48
48
 
49
49
  def fetch
50
- Git.run_in_working_dir(@path, "fetch --progress", Runner::Verbosity::OUTPUT_ALWAYS)
50
+ GitRunner.run_in_working_dir(@path, "fetch --prune --progress", Runner::Verbosity::OUTPUT_ALWAYS)
51
51
  Runner.last_command_succeeded
52
52
  end
53
53
 
54
54
  def clone(url)
55
- Git.run_in_current_dir("clone #{url} #{@path} --progress", Runner::Verbosity::OUTPUT_ALWAYS)
55
+ GitRunner.run_in_current_dir("clone #{url} #{@path} --progress", Runner::Verbosity::OUTPUT_ALWAYS)
56
56
  Runner.last_command_succeeded
57
57
  end
58
58
 
59
59
  def checkout(ref)
60
- Git.run_in_working_dir(@path, "checkout #{ref}", Runner::Verbosity::OUTPUT_ON_ERROR)
60
+ GitRunner.run_in_working_dir(@path, "checkout #{ref}", Runner::Verbosity::OUTPUT_ON_ERROR)
61
61
  Runner.last_command_succeeded
62
62
  end
63
63
 
@@ -0,0 +1,13 @@
1
+ module MultiRepo
2
+ class MergeDescriptor
3
+ attr_accessor :name
4
+ attr_accessor :path
5
+ attr_accessor :revision
6
+
7
+ def initialize(name, path, revision)
8
+ @name = name
9
+ @path = path
10
+ @revision = revision
11
+ end
12
+ end
13
+ end
@@ -38,6 +38,10 @@ module MultiRepo
38
38
  ordered_pairs.each { |pair| operation.call(pair.config_entry, pair.lock_entry) }
39
39
  end
40
40
 
41
+ def self.dependencies
42
+
43
+ end
44
+
41
45
  private
42
46
 
43
47
  def self.build_config_lock_pairs(config_entries, lock_entries)
@@ -3,6 +3,14 @@ module MultiRepo
3
3
  AS_LOCK = 0
4
4
  LATEST = 1
5
5
  EXACT = 2
6
+
7
+ def self.name_for_mode(mode)
8
+ case mode
9
+ when AS_LOCK; "as-lock"
10
+ when LATEST; "latest"
11
+ when EXACT; "exact"
12
+ end
13
+ end
6
14
  end
7
15
 
8
16
  class RevisionSelector
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-multirepo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta37
4
+ version: 1.0.0.beta38
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michaël Fortin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-11 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,6 +100,20 @@ dependencies:
100
100
  - - ~>
101
101
  - !ruby/object:Gem::Version
102
102
  version: 0.9.6
103
+ - !ruby/object:Gem::Dependency
104
+ name: terminal-table
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.4.5
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ~>
115
+ - !ruby/object:Gem::Version
116
+ version: 1.4.5
103
117
  description: Track multiple Git repositories side-by-side.
104
118
  email:
105
119
  - fortinmike@irradiated.net
@@ -109,6 +123,7 @@ extensions: []
109
123
  extra_rdoc_files: []
110
124
  files:
111
125
  - .gitattributes
126
+ - .gitbugtraq
112
127
  - .gitignore
113
128
  - .multirepo
114
129
  - .multirepo.lock
@@ -154,11 +169,12 @@ files:
154
169
  - lib/multirepo/git/branch.rb
155
170
  - lib/multirepo/git/change.rb
156
171
  - lib/multirepo/git/commit.rb
157
- - lib/multirepo/git/git.rb
172
+ - lib/multirepo/git/git-runner.rb
158
173
  - lib/multirepo/git/remote.rb
159
174
  - lib/multirepo/git/repo.rb
160
175
  - lib/multirepo/hooks/post-commit-hook.rb
161
176
  - lib/multirepo/hooks/pre-commit-hook.rb
177
+ - lib/multirepo/logic/merge-descriptor.rb
162
178
  - lib/multirepo/logic/node.rb
163
179
  - lib/multirepo/logic/performer.rb
164
180
  - lib/multirepo/logic/revision-selector.rb