braid 1.0.15 → 1.0.16
Sign up to get free protection for your applications and to get access to all the features.
- 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
|