ext 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/lib/externals/ext.rb +1 -1
- data/lib/externals/scms/git_project.rb +11 -4
- data/lib/externals/scms/svn_project.rb +16 -8
- data/test/test_checkout_with_subprojects_svn.rb +68 -31
- data/test/test_freeze_to_revision.rb +2 -2
- data/test/test_svn_branches.rb +3 -1
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
January 13, 2012 Version 1.1.2 released
|
2
|
+
- Fixes export problem with newer versions of git.
|
3
|
+
- Fixes build on Windows, along with a bug that can prevent svn branches from
|
4
|
+
working.
|
5
|
+
|
1
6
|
January 1, 2012 Version 1.1.1 released
|
2
7
|
- Fixes a bug preventing proper rails 3 project detection
|
3
8
|
|
data/lib/externals/ext.rb
CHANGED
@@ -9,7 +9,7 @@ Dir.entries(File.join(File.dirname(__FILE__), 'extensions')).each do |extension|
|
|
9
9
|
end
|
10
10
|
|
11
11
|
module Externals
|
12
|
-
VERSION = '1.1.
|
12
|
+
VERSION = '1.1.2'
|
13
13
|
PROJECT_TYPES_DIRECTORY = File.join(File.dirname(__FILE__), '..', 'externals','project_types')
|
14
14
|
|
15
15
|
# Full commands operate on the main project as well as the externals
|
@@ -136,10 +136,17 @@ module Externals
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def ex *args
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
139
|
+
if revision
|
140
|
+
# No clean reliable way to clone something that's not a branch or tag.
|
141
|
+
# just call up instead.
|
142
|
+
up *args
|
143
|
+
else
|
144
|
+
clone_opts = "--depth 1"
|
145
|
+
if branch
|
146
|
+
clone_opts << " -b #{branch}"
|
147
|
+
end
|
148
|
+
do_clone "ex", clone_opts
|
149
|
+
end
|
143
150
|
end
|
144
151
|
|
145
152
|
def up *args
|
@@ -8,10 +8,14 @@ module Externals
|
|
8
8
|
|
9
9
|
public
|
10
10
|
def co *args
|
11
|
-
# delete path if
|
12
|
-
rmdir_ie path
|
11
|
+
# delete path if empty
|
12
|
+
rmdir_ie path unless path == "."
|
13
13
|
|
14
|
-
|
14
|
+
dest = path
|
15
|
+
dest = '' if dest == '.'
|
16
|
+
dest = "\"#{dest}\"" if dest && !dest.empty?
|
17
|
+
|
18
|
+
if File.exists? dest
|
15
19
|
up
|
16
20
|
else
|
17
21
|
opts = resolve_opts "co"
|
@@ -23,7 +27,7 @@ module Externals
|
|
23
27
|
url = [url, branch].join("/")
|
24
28
|
end
|
25
29
|
|
26
|
-
puts(svncocmd = "svn #{opts} co #{url} #{
|
30
|
+
puts(svncocmd = "svn #{opts} co #{url} #{dest}")
|
27
31
|
puts `#{svncocmd}`
|
28
32
|
unless $? == 0
|
29
33
|
raise
|
@@ -45,8 +49,12 @@ module Externals
|
|
45
49
|
end
|
46
50
|
|
47
51
|
def ex *args
|
48
|
-
# delete path if
|
49
|
-
rmdir_ie path
|
52
|
+
# delete path if empty
|
53
|
+
rmdir_ie path unless path == "."
|
54
|
+
|
55
|
+
dest = path
|
56
|
+
dest = '' if dest == '.'
|
57
|
+
dest = "\"#{dest}\"" if dest && !dest.empty?
|
50
58
|
|
51
59
|
url = repository
|
52
60
|
|
@@ -59,7 +67,7 @@ module Externals
|
|
59
67
|
url += "@#{revision}"
|
60
68
|
end
|
61
69
|
|
62
|
-
puts(svncocmd = "svn #{scm_opts_ex} export #{url} #{
|
70
|
+
puts(svncocmd = "svn #{scm_opts_ex} export #{url} #{dest}")
|
63
71
|
puts `#{svncocmd}`
|
64
72
|
end
|
65
73
|
|
@@ -152,7 +160,7 @@ module Externals
|
|
152
160
|
def current_branch
|
153
161
|
require_repository
|
154
162
|
|
155
|
-
branch = info_url.gsub(/\/+/, "/").gsub(repository.gsub(/\/+/, "/"), "")
|
163
|
+
branch = info_url.downcase.gsub(/\/+/, "/").gsub(repository.downcase.gsub(/\/+/, "/"), "")
|
156
164
|
if branch == repository
|
157
165
|
raise "Could not determine branch from URL #{info_url}.
|
158
166
|
Does not appear have a substring of #{repository}"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if $0 == __FILE__
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), 'support') if $0 == __FILE__
|
2
3
|
|
3
4
|
require 'ext_test_case'
|
4
5
|
require 'externals/ext'
|
@@ -292,51 +293,87 @@ module Externals
|
|
292
293
|
end
|
293
294
|
|
294
295
|
assert File.exists?(File.join('vendor', 'rails', 'activerecord', 'lib'))
|
296
|
+
|
297
|
+
# Check that engines subproject has content expected for edge branch
|
298
|
+
ext = Ext.new
|
299
|
+
|
300
|
+
assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["branch"], "edge")
|
301
|
+
assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["revision"], nil)
|
302
|
+
|
303
|
+
Dir.chdir File.join("vendor", "plugins", "some_subproject_with_edge") do
|
304
|
+
assert(File.read(File.join("lib", "somelib.rb")) =~ /living on the edge/)
|
305
|
+
end
|
295
306
|
end
|
296
307
|
end
|
297
308
|
end
|
298
309
|
|
299
|
-
def
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
Dir.chdir 'checkout' do
|
305
|
-
#source = File.join(root_dir, 'test', 'workdir', 'rails_app')
|
306
|
-
source = repository_dir('svn')
|
307
|
-
|
308
|
-
if windows?
|
309
|
-
source = source.gsub(/\\/, "/")
|
310
|
-
#source.gsub!(/^[A-Z]:[\/\\]/, "")
|
311
|
-
end
|
312
|
-
source = "file:///#{source}"
|
310
|
+
def test_export_with_subproject_by_revision
|
311
|
+
# figure out the revision to set it to.
|
312
|
+
sub_project_revision = nil
|
313
|
+
sub_repository = SomeSubprojectWithEdge.new
|
314
|
+
sub_repository.prepare
|
313
315
|
|
314
|
-
|
315
|
-
|
316
|
+
workdir = File.join(root_dir, 'test', "tmp", "workdir", "export")
|
317
|
+
rm_rf_ie workdir
|
318
|
+
mkdir_p workdir
|
316
319
|
|
317
|
-
|
318
|
-
|
320
|
+
Dir.chdir workdir do
|
321
|
+
`git clone #{sub_repository.clean_dir}`
|
322
|
+
raise unless $? == 0
|
323
|
+
|
324
|
+
Dir.chdir sub_repository.name do
|
325
|
+
git_show = `git show origin/master`
|
326
|
+
raise unless $? == 0
|
327
|
+
|
328
|
+
sub_project_revision = /^commit:?\s*([a-f\d]+)$/.match(git_show)[1]
|
329
|
+
assert(sub_project_revision =~ /^[a-f\d]+$/)
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
# Change the project to use a revision instead of a branch
|
334
|
+
repository = RailsAppSvnRepository.new
|
335
|
+
repository.prepare
|
336
|
+
repository.mark_dirty
|
319
337
|
|
320
|
-
|
321
|
-
|
322
|
-
projs_ni = []
|
338
|
+
rm_rf_ie workdir
|
339
|
+
mkdir_p workdir
|
323
340
|
|
324
|
-
|
325
|
-
|
341
|
+
Dir.chdir workdir do
|
342
|
+
Ext.run "checkout", "--svn", repository.clean_url
|
343
|
+
|
344
|
+
Dir.chdir repository.name do
|
345
|
+
assert(sub_project_revision)
|
346
|
+
Ext.run "freeze", "some_subproject_with_edge", sub_project_revision
|
347
|
+
ext = Ext.new
|
348
|
+
ext.configuration["vendor/plugins/some_subproject_with_edge"].rm_setting("branch")
|
349
|
+
ext.configuration.write
|
350
|
+
|
351
|
+
SvnProject.add_all
|
352
|
+
`svn commit -m "changed some_subproject_with_edge to use a revision instead"`
|
353
|
+
raise unless $? == 0
|
354
|
+
end
|
355
|
+
end
|
326
356
|
|
327
|
-
|
357
|
+
rm_rf_ie workdir
|
358
|
+
mkdir_p workdir
|
359
|
+
Dir.chdir workdir do
|
360
|
+
source = repository.clean_url
|
328
361
|
|
329
|
-
|
362
|
+
puts "About to export #{source}"
|
363
|
+
Ext.run "export", "--svn", source, 'rails_app'
|
330
364
|
|
331
|
-
|
365
|
+
Dir.chdir 'rails_app' do
|
366
|
+
assert !File.exists?('.svn')
|
332
367
|
|
333
|
-
|
368
|
+
# Check that engines subproject has content expected for sub_project_revision
|
369
|
+
ext = Ext.new
|
334
370
|
|
335
|
-
|
336
|
-
|
371
|
+
assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["branch"], nil)
|
372
|
+
assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["revision"], sub_project_revision)
|
337
373
|
|
338
|
-
|
339
|
-
|
374
|
+
Dir.chdir File.join("vendor", "plugins", "some_subproject_with_edge") do
|
375
|
+
assert(File.read(File.join("lib", "somelib.rb")) !~ /living on the edge/)
|
376
|
+
assert(File.read(File.join("lib", "somelib.rb")) =~ /'double lulz!'/)
|
340
377
|
end
|
341
378
|
end
|
342
379
|
end
|
@@ -112,7 +112,7 @@ module Externals
|
|
112
112
|
|
113
113
|
repository.mark_dirty
|
114
114
|
|
115
|
-
`git commit -m
|
115
|
+
`git commit -m "froze modules to revision 3"`
|
116
116
|
raise unless $? == 0
|
117
117
|
`git push`
|
118
118
|
raise unless $? == 0
|
@@ -144,7 +144,7 @@ module Externals
|
|
144
144
|
# Check it in to make sure it sticks
|
145
145
|
`git add .externals`
|
146
146
|
raise unless $? == 0
|
147
|
-
`git commit -m
|
147
|
+
`git commit -m "unfreezing modules"`
|
148
148
|
raise unless $? == 0
|
149
149
|
`git push`
|
150
150
|
raise unless $? == 0
|
data/test/test_svn_branches.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if $0 == __FILE__
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), 'support') if $0 == __FILE__
|
2
3
|
require 'ext_test_case'
|
3
4
|
require 'externals/ext'
|
4
5
|
require 'rails_app_svn_branches'
|
@@ -257,6 +258,7 @@ module Externals
|
|
257
258
|
assert File.exists?(File.join(repository.clean_dir, "db"))
|
258
259
|
|
259
260
|
workdir = File.join(root_dir, 'test', "tmp", "workdir", mode, "svn", "branch_test")
|
261
|
+
rm_rf workdir
|
260
262
|
mkdir_p workdir
|
261
263
|
|
262
264
|
if File.exists?(File.join(workdir,"rails_app"))
|
@@ -276,7 +278,7 @@ module Externals
|
|
276
278
|
assert !File.exists?('.svn')
|
277
279
|
|
278
280
|
%w(redhillonrails_core).each do |proj|
|
279
|
-
assert !File.exists?(File.join('vendor', 'plugins',proj, '.svn'))
|
281
|
+
assert !File.exists?(File.join('vendor', 'plugins', proj, '.svn'))
|
280
282
|
end
|
281
283
|
|
282
284
|
%w(redhillonrails_core acts_as_list engines).each do |proj|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 2
|
10
|
+
version: 1.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Miles Georgi
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-01-13 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: |-
|