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