realityforge-braid 0.9.4 → 0.9.5
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.
- data/.travis.yml +1 -0
- data/bin/braid +3 -3
- data/lib/braid/mirror.rb +14 -16
- data/lib/braid/operations.rb +17 -9
- data/lib/braid/version.rb +1 -1
- data/lib/braid.rb +6 -6
- data/spec/integration_helper.rb +2 -1
- data/spec/mirror_spec.rb +3 -1
- metadata +15 -6
- checksums.yaml +0 -15
data/.travis.yml
CHANGED
data/bin/braid
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) +
|
3
|
+
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
|
4
4
|
require 'braid'
|
5
5
|
|
6
6
|
require 'rubygems'
|
@@ -44,7 +44,7 @@ Main {
|
|
44
44
|
|
45
45
|
run {
|
46
46
|
Braid.verbose = verbose
|
47
|
-
Braid::Command.run(:add, url, {
|
47
|
+
Braid::Command.run(:add, url, {'path' => path, 'branch' => branch, 'revision' => revision, 'full' => full})
|
48
48
|
}
|
49
49
|
}
|
50
50
|
|
@@ -68,7 +68,7 @@ Main {
|
|
68
68
|
|
69
69
|
run {
|
70
70
|
Braid.verbose = verbose
|
71
|
-
Braid::Command.run(:update, path, {
|
71
|
+
Braid::Command.run(:update, path, {'revision' => revision, 'head' => head})
|
72
72
|
}
|
73
73
|
}
|
74
74
|
|
data/lib/braid/mirror.rb
CHANGED
@@ -9,7 +9,7 @@ module Braid
|
|
9
9
|
end
|
10
10
|
class PathRequired < BraidError
|
11
11
|
def message
|
12
|
-
|
12
|
+
'path is required'
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -25,16 +25,16 @@ module Braid
|
|
25
25
|
def self.new_from_options(url, options = {})
|
26
26
|
url = url.sub(/\/$/, '')
|
27
27
|
|
28
|
-
branch = options[
|
28
|
+
branch = options['branch'] || 'master'
|
29
29
|
|
30
|
-
unless path = options[
|
30
|
+
unless path = options['path'] || extract_path_from_url(url)
|
31
31
|
raise PathRequired
|
32
32
|
end
|
33
33
|
|
34
34
|
remote = "#{branch}/braid/#{path}"
|
35
|
-
squashed = !options[
|
35
|
+
squashed = !options['full']
|
36
36
|
|
37
|
-
attributes = {
|
37
|
+
attributes = {'url' => url, 'remote' => remote, 'branch' => branch, 'squashed' => squashed}
|
38
38
|
self.new(path, attributes)
|
39
39
|
end
|
40
40
|
|
@@ -57,14 +57,15 @@ module Braid
|
|
57
57
|
if squashed?
|
58
58
|
!!base_revision && git.merge_base(commit, base_revision) == commit
|
59
59
|
else
|
60
|
-
git.merge_base(commit,
|
60
|
+
git.merge_base(commit, 'HEAD') == commit
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
64
|
def diff
|
65
|
+
fetch
|
65
66
|
remote_hash = git.rev_parse("#{base_revision}:")
|
66
67
|
local_hash = git.tree_hash(path)
|
67
|
-
remote_hash != local_hash ? git.diff_tree(remote_hash, local_hash) :
|
68
|
+
remote_hash != local_hash ? git.diff_tree(remote_hash, local_hash) : ''
|
68
69
|
end
|
69
70
|
|
70
71
|
def fetch
|
@@ -89,10 +90,10 @@ module Braid
|
|
89
90
|
end
|
90
91
|
|
91
92
|
def remote
|
92
|
-
if (attributes[
|
93
|
-
attributes[
|
93
|
+
if (attributes['remote'] && attributes['remote'] =~ /^braid\//)
|
94
|
+
attributes['remote'] = "#{branch}/#{attributes['remote']}"
|
94
95
|
else
|
95
|
-
attributes[
|
96
|
+
attributes['remote']
|
96
97
|
end
|
97
98
|
end
|
98
99
|
|
@@ -111,8 +112,8 @@ module Braid
|
|
111
112
|
end
|
112
113
|
|
113
114
|
def inferred_revision
|
114
|
-
local_commits = git.rev_list(
|
115
|
-
remote_hashes = git.rev_list("--pretty=format:\"%T\"", remote).split(
|
115
|
+
local_commits = git.rev_list('HEAD', "-- #{path}").split("\n")
|
116
|
+
remote_hashes = git.rev_list("--pretty=format:\"%T\"", remote).split('commit ').map do |chunk|
|
116
117
|
chunk.split("\n", 2).map { |value| value.strip }
|
117
118
|
end
|
118
119
|
hash = nil
|
@@ -130,12 +131,9 @@ module Braid
|
|
130
131
|
return nil unless url
|
131
132
|
name = File.basename(url)
|
132
133
|
|
133
|
-
if File.extname(name) ==
|
134
|
+
if File.extname(name) == '.git'
|
134
135
|
# strip .git
|
135
136
|
name[0..-5]
|
136
|
-
elsif name == "trunk"
|
137
|
-
# use parent
|
138
|
-
File.basename(File.dirname(url))
|
139
137
|
else
|
140
138
|
name
|
141
139
|
end
|
data/lib/braid/operations.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
require 'singleton'
|
2
2
|
require 'rubygems'
|
3
|
+
if defined?(JRUBY_VERSION) || Gem.win_platform?
|
4
|
+
require'open3'
|
5
|
+
else
|
6
|
+
require 'open4'
|
7
|
+
end
|
3
8
|
require defined?(JRUBY_VERSION) ? 'open3' : 'open4'
|
4
9
|
require 'tempfile'
|
5
10
|
|
@@ -103,14 +108,15 @@ module Braid
|
|
103
108
|
ENV['LANG'] = 'C'
|
104
109
|
|
105
110
|
out, err = nil
|
111
|
+
status, pid = 0
|
106
112
|
log(cmd)
|
107
113
|
|
108
|
-
if defined?(JRUBY_VERSION)
|
109
|
-
Open3.popen3(cmd) do |stdin, stdout, stderr|
|
114
|
+
if defined?(JRUBY_VERSION) || Gem.win_platform?
|
115
|
+
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
|
110
116
|
out = stdout.read
|
111
117
|
err = stderr.read
|
118
|
+
status = wait_thr.value # Process::Status object returned.
|
112
119
|
end
|
113
|
-
status = $?.exitstatus
|
114
120
|
else
|
115
121
|
status = Open4.popen4(cmd) do |pid, stdin, stdout, stderr|
|
116
122
|
out = stdout.read
|
@@ -176,7 +182,7 @@ module Braid
|
|
176
182
|
def fetch(remote = nil, *args)
|
177
183
|
args.unshift "-n #{remote}" if remote
|
178
184
|
# open4 messes with the pipes of index-pack
|
179
|
-
sh("git fetch #{args.join(' ')} 2>&1
|
185
|
+
sh("git fetch #{args.join(' ')} 2>&1 > #{Gem.win_platform? ? 'nul' : '/dev/null'}")
|
180
186
|
end
|
181
187
|
|
182
188
|
def checkout(treeish)
|
@@ -284,17 +290,19 @@ module Braid
|
|
284
290
|
end
|
285
291
|
|
286
292
|
def apply(diff, *args)
|
287
|
-
err = nil
|
293
|
+
status, err = nil, nil
|
294
|
+
|
295
|
+
command = "git apply --index --whitespace=nowarn #{args.join(' ')} -"
|
288
296
|
|
289
|
-
if defined?(JRUBY_VERSION)
|
290
|
-
Open3.popen3(
|
297
|
+
if defined?(JRUBY_VERSION) || Gem.win_platform?
|
298
|
+
Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
|
291
299
|
stdin.puts(diff)
|
292
300
|
stdin.close
|
293
301
|
err = stderr.read
|
302
|
+
status = wait_thr.value # Process::Status object returned.
|
294
303
|
end
|
295
|
-
status = $?.exitstatus
|
296
304
|
else
|
297
|
-
status = Open4.popen4(
|
305
|
+
status = Open4.popen4(command) do |pid, stdin, stdout, stderr|
|
298
306
|
stdin.puts(diff)
|
299
307
|
stdin.close
|
300
308
|
err = stderr.read
|
data/lib/braid/version.rb
CHANGED
data/lib/braid.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'braid/version'
|
2
2
|
|
3
3
|
module Braid
|
4
|
-
CONFIG_FILE =
|
5
|
-
REQUIRED_GIT_VERSION =
|
4
|
+
CONFIG_FILE = '.braids'
|
5
|
+
REQUIRED_GIT_VERSION = '1.6'
|
6
6
|
|
7
7
|
def self.verbose
|
8
|
-
|
8
|
+
!!@verbose
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.verbose=(new_value)
|
@@ -13,7 +13,7 @@ module Braid
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.force
|
16
|
-
|
16
|
+
!!@force
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.force=(new_value)
|
@@ -21,11 +21,11 @@ module Braid
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.use_local_cache
|
24
|
-
[nil,
|
24
|
+
[nil, 'true', '1'].include?(ENV['BRAID_USE_LOCAL_CACHE'])
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.local_cache_dir
|
28
|
-
File.expand_path(ENV[
|
28
|
+
File.expand_path(ENV['BRAID_LOCAL_CACHE_DIR'] || "#{ENV['HOME']}/.braid/cache")
|
29
29
|
end
|
30
30
|
|
31
31
|
class BraidError < StandardError
|
data/spec/integration_helper.rb
CHANGED
@@ -11,7 +11,8 @@ BRAID_PATH = Pathname.new(File.dirname(__FILE__)).parent.realpath
|
|
11
11
|
FIXTURE_PATH = File.join(BRAID_PATH, "spec", "fixtures")
|
12
12
|
FileUtils.rm_rf(TMP_PATH)
|
13
13
|
FileUtils.mkdir_p(TMP_PATH)
|
14
|
-
|
14
|
+
|
15
|
+
BRAID_BIN = ((defined?(JRUBY_VERSION) || Gem.win_platform?) ? 'ruby ' : '') + File.join(BRAID_PATH, 'bin', 'braid')
|
15
16
|
|
16
17
|
def in_dir(dir = TMP_PATH)
|
17
18
|
Dir.chdir(dir)
|
data/spec/mirror_spec.rb
CHANGED
@@ -14,7 +14,7 @@ end
|
|
14
14
|
|
15
15
|
describe "Braid::Mirror#diff" do
|
16
16
|
before(:each) do
|
17
|
-
@mirror = build_mirror(
|
17
|
+
@mirror = build_mirror('revision' => 'a' * 40, 'url' => 'git://path')
|
18
18
|
@mirror.stubs(:base_revision).returns(@mirror.revision) # bypass rev_parse
|
19
19
|
end
|
20
20
|
|
@@ -25,6 +25,7 @@ describe "Braid::Mirror#diff" do
|
|
25
25
|
|
26
26
|
it "should return an empty string when the hashes match" do
|
27
27
|
set_hashes('b' * 40, 'b' * 40)
|
28
|
+
git.expects(:fetch)
|
28
29
|
git.expects(:diff_tree).never
|
29
30
|
@mirror.diff.should == ""
|
30
31
|
end
|
@@ -32,6 +33,7 @@ describe "Braid::Mirror#diff" do
|
|
32
33
|
it "should generate a diff when the hashes do not match" do
|
33
34
|
set_hashes('b' * 40, 'c' * 40)
|
34
35
|
diff = "diff --git a/path b/path\n"
|
36
|
+
git.expects(:fetch)
|
35
37
|
git.expects(:diff_tree).with('b' * 40, 'c' * 40).returns(diff)
|
36
38
|
@mirror.diff.should == diff
|
37
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: realityforge-braid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Cristi Balan
|
@@ -9,11 +10,12 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
13
|
+
date: 2014-04-24 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: main
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
20
|
- - ! '>='
|
19
21
|
- !ruby/object:Gem::Version
|
@@ -21,6 +23,7 @@ dependencies:
|
|
21
23
|
type: :runtime
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
28
|
- - ! '>='
|
26
29
|
- !ruby/object:Gem::Version
|
@@ -28,6 +31,7 @@ dependencies:
|
|
28
31
|
- !ruby/object:Gem::Dependency
|
29
32
|
name: open4
|
30
33
|
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
31
35
|
requirements:
|
32
36
|
- - ! '>='
|
33
37
|
- !ruby/object:Gem::Version
|
@@ -35,6 +39,7 @@ dependencies:
|
|
35
39
|
type: :runtime
|
36
40
|
prerelease: false
|
37
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
38
43
|
requirements:
|
39
44
|
- - ! '>='
|
40
45
|
- !ruby/object:Gem::Version
|
@@ -42,6 +47,7 @@ dependencies:
|
|
42
47
|
- !ruby/object:Gem::Dependency
|
43
48
|
name: rspec
|
44
49
|
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
45
51
|
requirements:
|
46
52
|
- - '='
|
47
53
|
- !ruby/object:Gem::Version
|
@@ -49,6 +55,7 @@ dependencies:
|
|
49
55
|
type: :development
|
50
56
|
prerelease: false
|
51
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
52
59
|
requirements:
|
53
60
|
- - '='
|
54
61
|
- !ruby/object:Gem::Version
|
@@ -56,6 +63,7 @@ dependencies:
|
|
56
63
|
- !ruby/object:Gem::Dependency
|
57
64
|
name: mocha
|
58
65
|
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
59
67
|
requirements:
|
60
68
|
- - ! '>='
|
61
69
|
- !ruby/object:Gem::Version
|
@@ -63,6 +71,7 @@ dependencies:
|
|
63
71
|
type: :development
|
64
72
|
prerelease: false
|
65
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
66
75
|
requirements:
|
67
76
|
- - ! '>='
|
68
77
|
- !ruby/object:Gem::Version
|
@@ -111,7 +120,6 @@ files:
|
|
111
120
|
- spec/test_helper.rb
|
112
121
|
homepage: http://evil.che.lu/projects/braid
|
113
122
|
licenses: []
|
114
|
-
metadata: {}
|
115
123
|
post_install_message:
|
116
124
|
rdoc_options:
|
117
125
|
- --line-numbers
|
@@ -122,20 +130,21 @@ rdoc_options:
|
|
122
130
|
require_paths:
|
123
131
|
- lib
|
124
132
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
+
none: false
|
125
134
|
requirements:
|
126
135
|
- - ! '>='
|
127
136
|
- !ruby/object:Gem::Version
|
128
137
|
version: '0'
|
129
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
130
140
|
requirements:
|
131
141
|
- - ! '>='
|
132
142
|
- !ruby/object:Gem::Version
|
133
143
|
version: '0'
|
134
144
|
requirements: []
|
135
145
|
rubyforge_project: braid
|
136
|
-
rubygems_version:
|
146
|
+
rubygems_version: 1.8.23
|
137
147
|
signing_key:
|
138
|
-
specification_version:
|
148
|
+
specification_version: 3
|
139
149
|
summary: A simple tool for tracking vendor branches in git.
|
140
150
|
test_files: []
|
141
|
-
has_rdoc: false
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
YmEwNDIxOTcxMzU5YzI5Nzc1NTg3MGI4NDRhMDQ1Nzk5YTAyZDZiYg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NDhiN2ZiYzE5MTM4MmRkYWNiZTMzMTAxMGRhMGFjZjM0OWY5MjBhZA==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
Y2Y4M2JlMGVhZDViZjk4ZmM5ODQ3OThjZmM4ODliNTNmZDAzMTRiZTI3YTFm
|
10
|
-
OGY0Yjc4NTFkODNlMjA3MDU2M2Y0MmJjNjFiYTk3MzNhODE4YTg1ODlmM2Mx
|
11
|
-
MzBjNzZkNWY2Mzc5NmM3MzIyZTRmZTg5YjY3YTg1MDNjZjg3MGY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OTg3YWI1ZTZmNTFkY2Y2NWMxNTAyODQ1MjFiMWVhZDc4Mzk5NDAyZmJjYTRh
|
14
|
-
MjBmOGZjMjE3OGQwYzVjMGJhYzc3NmU2OTdiMDliZjE1Mjg2MjgwMmQ2Mjg5
|
15
|
-
YTNmOWU0ZDMwMWRkZDU0NTU2NGVmYWViZDMyZGVhNjEzMjgyYzU=
|