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 +4 -4
- data/.gitbugtraq +3 -0
- data/.multirepo.lock +3 -3
- data/.multirepo.meta +1 -1
- data/README.md +1 -0
- data/git-multirepo.gemspec +1 -0
- data/lib/git-multirepo.rb +3 -2
- data/lib/info.rb +1 -1
- data/lib/multirepo/commands/checkout-command.rb +3 -2
- data/lib/multirepo/commands/clean-command.rb +1 -1
- data/lib/multirepo/commands/merge-command.rb +60 -20
- data/lib/multirepo/files/config-entry.rb +10 -6
- data/lib/multirepo/files/lock-entry.rb +1 -1
- data/lib/multirepo/files/lock-file.rb +0 -1
- data/lib/multirepo/files/meta-file.rb +0 -1
- data/lib/multirepo/files/tracking-files.rb +5 -5
- data/lib/multirepo/git/branch.rb +6 -6
- data/lib/multirepo/git/commit.rb +2 -2
- data/lib/multirepo/git/{git.rb → git-runner.rb} +1 -2
- data/lib/multirepo/git/remote.rb +2 -2
- data/lib/multirepo/git/repo.rb +8 -8
- data/lib/multirepo/logic/merge-descriptor.rb +13 -0
- data/lib/multirepo/logic/performer.rb +4 -0
- data/lib/multirepo/logic/revision-selector.rb +8 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 422c984238cb4049bcededa9a63ac57ca1d13445
|
4
|
+
data.tar.gz: f9e95a0941a9160fc5b714d76bd5c3664c35ba67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73835b202c7a7d5e0104cca153488d57bc3173f30efcb04cea4f0a277f4c522215de0e50dcbeab6cd4216987f794268b6e8fd852d4b62bdbdefd6793ad6878ff
|
7
|
+
data.tar.gz: 7590706f24a5ca82f2275dbeb361fe251223ccdb6797f959a9fbeb941c0f0b7d852958ca2e01586bdac2be10ccd33a2c4627c732b9e7aadc5ccdebf86b405be9
|
data/.gitbugtraq
ADDED
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:
|
6
|
-
branch:
|
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:
|
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.
|
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. |
|
data/git-multirepo.gemspec
CHANGED
data/lib/git-multirepo.rb
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
require "multirepo/
|
2
|
-
require "multirepo/hooks/
|
1
|
+
require "multirepo/utility/console"
|
2
|
+
require "multirepo/hooks/pre-commit-hook"
|
3
|
+
require "multirepo/hooks/post-commit-hook"
|
data/lib/info.rb
CHANGED
@@ -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)
|
@@ -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
|
-
|
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
|
-
|
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
|
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
|
-
|
102
|
+
descriptors.push(MergeDescriptor.new(config_entry.name, config_entry.path, revision))
|
87
103
|
end
|
88
|
-
|
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
|
-
|
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
|
@@ -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
|
-
|
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 =
|
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 =
|
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
|
-
|
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
|
data/lib/multirepo/git/branch.rb
CHANGED
@@ -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 =
|
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
|
-
|
20
|
-
|
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
|
-
|
25
|
-
|
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
|
data/lib/multirepo/git/commit.rb
CHANGED
@@ -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 =
|
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
|
data/lib/multirepo/git/remote.rb
CHANGED
@@ -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 =
|
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
|
data/lib/multirepo/git/repo.rb
CHANGED
@@ -17,25 +17,25 @@ module MultiRepo
|
|
17
17
|
|
18
18
|
def exists?
|
19
19
|
return false unless Dir.exist?("#{@path}/.git")
|
20
|
-
return
|
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 =
|
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 =
|
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
|
-
|
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 =
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
|
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.
|
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
|
+
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
|