git-multirepo 1.0.0.beta37 → 1.0.0.beta38

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: 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