braid 1.0.15 → 1.0.16
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/README.md +6 -0
- data/bin/braid +12 -2
- data/lib/braid/command.rb +3 -3
- data/lib/braid/commands/add.rb +2 -1
- data/lib/braid/commands/diff.rb +2 -4
- data/lib/braid/commands/push.rb +4 -2
- data/lib/braid/commands/setup.rb +1 -1
- data/lib/braid/commands/status.rb +1 -1
- data/lib/braid/commands/update.rb +6 -8
- data/lib/braid/mirror.rb +14 -7
- data/lib/braid/operations.rb +2 -2
- data/lib/braid/version.rb +1 -1
- data/spec/integration/adding_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78d66492c589068152aee142e694bf02ee1201bd
|
4
|
+
data.tar.gz: 54d080bf631011a6c09e8882337539eaed2b510f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbde11ac65aae3c78581e0d99e90def3b997d72929723abcb9fb097d7743cd8ebb8697a8ae161a5af1795fdc632745f86928bddae45b08cc847d6ded37dbdebb
|
7
|
+
data.tar.gz: 1e52e6ad9304532cf6c8e340b9b57643e5550e9f4858ac1d798abcc116d1cc1e45355ada3b92cd76ac3d60ffcb9b4ad0c03650ea3b3550032b26fb1d24c83a6d
|
data/README.md
CHANGED
@@ -76,6 +76,12 @@ to the grit project:
|
|
76
76
|
|
77
77
|
braid diff lib/grit > grit.patch
|
78
78
|
|
79
|
+
Alternatively you can push changes back to the source directory directly using the following command. The command
|
80
|
+
will push the changes to the branch `myproject_customizations` that has been branched off the source branch (`master`
|
81
|
+
in this example). Omit the `--branch` argument to push directly to the source branch.
|
82
|
+
|
83
|
+
braid push lib/grit --branch myproject_customizations
|
84
|
+
|
79
85
|
Once those changes have been applied to grit you probably want to update your local version of grit again.
|
80
86
|
|
81
87
|
braid update lib/grit
|
data/bin/braid
CHANGED
@@ -40,11 +40,11 @@ Main {
|
|
40
40
|
. braid add http://remote/path local/dir
|
41
41
|
TXT
|
42
42
|
|
43
|
-
mixin :argument_url, :optional_path, :option_branch, :option_revision, :option_full, :option_verbose
|
43
|
+
mixin :argument_url, :optional_path, :option_branch, :option_revision, :option_full, :option_verbose, :option_remote_path
|
44
44
|
|
45
45
|
run {
|
46
46
|
Braid.verbose = verbose
|
47
|
-
Braid::Command.run(:add, url, {'path' => path, 'branch' => branch, 'revision' => revision, 'full' => full})
|
47
|
+
Braid::Command.run(:add, url, {'path' => path, 'branch' => branch, 'revision' => revision, 'full' => full, 'remote_path' => remote_path})
|
48
48
|
}
|
49
49
|
}
|
50
50
|
|
@@ -113,6 +113,7 @@ Main {
|
|
113
113
|
options = {
|
114
114
|
'keep' => keep
|
115
115
|
}
|
116
|
+
Braid.verbose = verbose
|
116
117
|
Braid::Command.run(:diff, path, options)
|
117
118
|
}
|
118
119
|
}
|
@@ -206,6 +207,15 @@ Main {
|
|
206
207
|
}
|
207
208
|
}
|
208
209
|
|
210
|
+
mixin(:option_remote_path) {
|
211
|
+
option(:remote_path, :p) {
|
212
|
+
optional
|
213
|
+
argument :required
|
214
|
+
desc 'remote path'
|
215
|
+
attr
|
216
|
+
}
|
217
|
+
}
|
218
|
+
|
209
219
|
mixin(:option_revision) {
|
210
220
|
option(:revision, :r) {
|
211
221
|
optional
|
data/lib/braid/command.rb
CHANGED
@@ -89,7 +89,7 @@ module Braid
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def validate_new_revision(mirror, new_revision)
|
92
|
-
return git.rev_parse(mirror.remote) unless new_revision
|
92
|
+
return git.rev_parse("#{mirror.remote}/#{mirror.branch}") unless new_revision
|
93
93
|
|
94
94
|
new_revision = git.rev_parse(new_revision)
|
95
95
|
old_revision = mirror.revision
|
@@ -101,8 +101,8 @@ module Braid
|
|
101
101
|
new_revision
|
102
102
|
end
|
103
103
|
|
104
|
-
def determine_target_revision(new_revision)
|
105
|
-
git.rev_parse(new_revision)
|
104
|
+
def determine_target_revision(mirror, new_revision)
|
105
|
+
git.rev_parse(mirror.versioned_path(new_revision))
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
data/lib/braid/commands/add.rb
CHANGED
@@ -4,6 +4,7 @@ module Braid
|
|
4
4
|
def run(url, options = {})
|
5
5
|
with_reset_on_error do
|
6
6
|
mirror = config.add_from_options(url, options)
|
7
|
+
add_config_file
|
7
8
|
|
8
9
|
branch_message = (mirror.branch == 'master') ? '' : " branch '#{mirror.branch}'"
|
9
10
|
revision_message = options['revision'] ? " at #{display_revision(mirror, options['revision'])}" : ''
|
@@ -16,7 +17,7 @@ module Braid
|
|
16
17
|
mirror.fetch
|
17
18
|
|
18
19
|
new_revision = validate_new_revision(mirror, options['revision'])
|
19
|
-
target_revision = determine_target_revision(new_revision)
|
20
|
+
target_revision = determine_target_revision(mirror, new_revision)
|
20
21
|
|
21
22
|
unless mirror.squashed?
|
22
23
|
git.merge_ours(target_revision)
|
data/lib/braid/commands/diff.rb
CHANGED
@@ -2,14 +2,12 @@ module Braid
|
|
2
2
|
module Commands
|
3
3
|
class Diff < Command
|
4
4
|
def run(path = nil, options = {})
|
5
|
-
|
6
|
-
path ? diff_one(path, options) : diff_all(options)
|
7
|
-
end
|
5
|
+
path ? diff_one(path, options) : diff_all(options)
|
8
6
|
end
|
9
7
|
|
10
8
|
protected
|
11
9
|
|
12
|
-
|
10
|
+
def diff_all(options = {})
|
13
11
|
print "\n"
|
14
12
|
msg "Diffing all mirrors.\n=======================================================\n"
|
15
13
|
config.mirrors.each do |path|
|
data/lib/braid/commands/push.rb
CHANGED
@@ -12,7 +12,7 @@ module Braid
|
|
12
12
|
setup_remote(mirror)
|
13
13
|
mirror.fetch
|
14
14
|
|
15
|
-
base_revision = git.rev_parse(mirror.remote)
|
15
|
+
base_revision = git.rev_parse("#{mirror.remote}/#{mirror.branch}")
|
16
16
|
unless mirror.merged?(base_revision)
|
17
17
|
msg 'Mirror is not up to date. Stopping.'
|
18
18
|
clear_remote(mirror, options)
|
@@ -40,7 +40,9 @@ module Braid
|
|
40
40
|
git.fetch(mirror.cached_url) if File.exist?(mirror.cached_url)
|
41
41
|
git.fetch(remote_url, "+refs/heads/#{mirror.branch}")
|
42
42
|
git.checkout(base_revision)
|
43
|
-
|
43
|
+
args =[]
|
44
|
+
args << "--directory=#{mirror.remote_path}" if mirror.remote_path
|
45
|
+
git.apply(diff, args)
|
44
46
|
system('git commit -v')
|
45
47
|
msg "Pushing changes to remote branch #{branch}."
|
46
48
|
git.push(remote_url, "HEAD:refs/heads/#{branch}")
|
data/lib/braid/commands/setup.rb
CHANGED
@@ -29,7 +29,7 @@ module Braid
|
|
29
29
|
|
30
30
|
msg "Setup: Creating remote for '#{mirror.path}'." if verbose?
|
31
31
|
url = use_local_cache? ? git_cache.path(mirror.url) : mirror.url
|
32
|
-
git.remote_add(mirror.remote, url
|
32
|
+
git.remote_add(mirror.remote, url)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -45,19 +45,17 @@ module Braid
|
|
45
45
|
rescue InvalidRevision
|
46
46
|
# Ignored as it means the revision matches expected
|
47
47
|
end
|
48
|
-
target_revision = determine_target_revision(new_revision)
|
48
|
+
target_revision = determine_target_revision(mirror, new_revision)
|
49
|
+
current_revision = determine_target_revision(mirror, mirror.base_revision)
|
49
50
|
|
50
|
-
if (options['revision'] && was_locked && target_revision ==
|
51
|
-
(options['revision'].nil? && !was_locked && mirror.merged?(
|
51
|
+
if (options['revision'] && was_locked && target_revision == current_revision) ||
|
52
|
+
(options['revision'].nil? && !was_locked && mirror.merged?(git.rev_parse(new_revision)))
|
52
53
|
msg "Mirror '#{mirror.path}' is already up to date."
|
53
54
|
clear_remote(mirror, options)
|
54
55
|
return
|
55
56
|
end
|
56
57
|
|
57
|
-
if mirror.squashed?
|
58
|
-
diff = mirror.diff
|
59
|
-
base_revision = mirror.base_revision
|
60
|
-
end
|
58
|
+
base_revision = mirror.base_revision if mirror.squashed?
|
61
59
|
|
62
60
|
mirror.revision = new_revision
|
63
61
|
mirror.lock = new_revision if options['revision']
|
@@ -67,7 +65,7 @@ module Braid
|
|
67
65
|
begin
|
68
66
|
if mirror.squashed?
|
69
67
|
local_hash = git.rev_parse('HEAD')
|
70
|
-
base_hash = generate_tree_hash(mirror, base_revision)
|
68
|
+
base_hash = generate_tree_hash(mirror, mirror.versioned_path(base_revision))
|
71
69
|
remote_hash = generate_tree_hash(mirror, target_revision)
|
72
70
|
ENV["GITHEAD_#{local_hash}"] = 'HEAD'
|
73
71
|
ENV["GITHEAD_#{remote_hash}"] = target_revision
|
data/lib/braid/mirror.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Braid
|
2
2
|
class Mirror
|
3
|
-
ATTRIBUTES = %w(url branch squashed revision lock)
|
3
|
+
ATTRIBUTES = %w(url branch squashed revision lock remote_path)
|
4
4
|
|
5
5
|
class UnknownType < BraidError
|
6
6
|
def message
|
@@ -32,7 +32,9 @@ module Braid
|
|
32
32
|
|
33
33
|
squashed = !options['full']
|
34
34
|
|
35
|
-
|
35
|
+
remote_path = options['remote_path']
|
36
|
+
|
37
|
+
attributes = {'url' => url, 'branch' => branch, 'squashed' => squashed, 'remote_path' => remote_path}
|
36
38
|
self.new(path, attributes)
|
37
39
|
end
|
38
40
|
|
@@ -59,9 +61,13 @@ module Braid
|
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
64
|
+
def versioned_path(revision)
|
65
|
+
"#{revision}:#{self.remote_path}"
|
66
|
+
end
|
67
|
+
|
62
68
|
def diff
|
63
69
|
fetch
|
64
|
-
remote_hash = git.rev_parse(
|
70
|
+
remote_hash = git.rev_parse(versioned_path(base_revision))
|
65
71
|
local_hash = git.tree_hash(path)
|
66
72
|
remote_hash != local_hash ? git.diff_tree(remote_hash, local_hash) : ''
|
67
73
|
end
|
@@ -95,10 +101,10 @@ module Braid
|
|
95
101
|
|
96
102
|
def method_missing(name, *args)
|
97
103
|
if ATTRIBUTES.find { |attribute| name.to_s =~ /^(#{attribute})(=)?$/ }
|
98
|
-
|
99
|
-
attributes[$1]
|
100
|
-
else
|
104
|
+
if $2
|
101
105
|
attributes[$1] = args[0]
|
106
|
+
else
|
107
|
+
attributes[$1]
|
102
108
|
end
|
103
109
|
else
|
104
110
|
raise NameError, "unknown attribute `#{name}'"
|
@@ -113,7 +119,8 @@ module Braid
|
|
113
119
|
hash = nil
|
114
120
|
local_commits.each do |local_commit|
|
115
121
|
local_tree = git.tree_hash(path, local_commit)
|
116
|
-
|
122
|
+
match = remote_hashes.find { |_, remote_tree| local_tree == remote_tree }
|
123
|
+
if match
|
117
124
|
hash = match[0]
|
118
125
|
break
|
119
126
|
end
|
data/lib/braid/operations.rb
CHANGED
@@ -219,8 +219,8 @@ module Braid
|
|
219
219
|
end
|
220
220
|
|
221
221
|
# Implies tracking.
|
222
|
-
def remote_add(remote, path
|
223
|
-
invoke(:remote, 'add',
|
222
|
+
def remote_add(remote, path)
|
223
|
+
invoke(:remote, 'add', remote, path)
|
224
224
|
true
|
225
225
|
end
|
226
226
|
|
data/lib/braid/version.rb
CHANGED
@@ -31,7 +31,7 @@ describe 'Adding a mirror in a clean repository' do
|
|
31
31
|
run_command("#{BRAID_BIN} add #{@skit1}")
|
32
32
|
end
|
33
33
|
|
34
|
-
braids = YAML::load_file("#{@shiny}
|
34
|
+
braids = YAML::load_file("#{@shiny}/.braids.json")
|
35
35
|
braids['skit1']['squashed'].should == true
|
36
36
|
braids['skit1']['url'].should == @skit1
|
37
37
|
braids['skit1']['revision'].should_not be_nil
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: braid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cristi Balan
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-03-
|
13
|
+
date: 2017-03-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: main
|