rscm 0.3.16 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +14 -0
- data/README +15 -8
- data/Rakefile +5 -1
- data/lib/rscm.rb +2 -1
- data/lib/rscm/base.rb +51 -76
- data/lib/rscm/command_line.rb +66 -0
- data/lib/rscm/historic_file.rb +2 -6
- data/lib/rscm/path_converter.rb +1 -15
- data/lib/rscm/platform.rb +25 -0
- data/lib/rscm/revision_file.rb +4 -4
- data/lib/rscm/revision_poller.rb +23 -20
- data/lib/rscm/scm/cvs.rb +108 -136
- data/lib/rscm/scm/cvs_log_parser.rb +2 -8
- data/lib/rscm/scm/monotone.rb +1 -1
- data/lib/rscm/scm/subversion.rb +75 -102
- data/lib/rscm/time_ext.rb +2 -1
- data/lib/rscm/version.rb +13 -0
- data/test/rscm/generic_scm_tests.rb +38 -49
- data/test/rscm/scm/cvs_test.rb +0 -25
- metadata +5 -3
- data/lib/rscm/better.rb +0 -12
@@ -52,13 +52,8 @@ module RSCM
|
|
52
52
|
file = parse_file(entry)
|
53
53
|
next if file.nil?
|
54
54
|
file.path = parse_path(entries[0])
|
55
|
-
|
56
55
|
file.status = RevisionFile::ADDED if file.native_revision_identifier =~ /1\.1$/
|
57
|
-
|
58
|
-
revision = revisions.add(file)
|
59
|
-
# CVS doesn't have revision for revisions, use
|
60
|
-
# Fisheye-style revision
|
61
|
-
# revision.native_revision_identifier = "MAIN:#{file.developer}:#{file.time.utc.strftime('%Y%m%d%H%M%S')}" if revision
|
56
|
+
revisions.add(file)
|
62
57
|
end
|
63
58
|
nil
|
64
59
|
end
|
@@ -83,10 +78,9 @@ module RSCM
|
|
83
78
|
raise "can't parse: #{file_entry}" if file_entry =~ REVISION_SEPARATOR
|
84
79
|
|
85
80
|
file_entry_lines = file_entry.split(/\r?\n/)
|
86
|
-
file = RevisionFile.new
|
87
81
|
|
82
|
+
file = RevisionFile.new
|
88
83
|
file.native_revision_identifier = extract_match(file_entry_lines[0], /revision (.*)$/)
|
89
|
-
|
90
84
|
file.previous_native_revision_identifier = determine_previous_native_revision_identifier(file.native_revision_identifier)
|
91
85
|
|
92
86
|
time = extract_required_match(file_entry_lines[1], /date: (.*?)(;|$)/)
|
data/lib/rscm/scm/monotone.rb
CHANGED
data/lib/rscm/scm/subversion.rb
CHANGED
@@ -25,101 +25,56 @@ module RSCM
|
|
25
25
|
@username = ""
|
26
26
|
@password = ""
|
27
27
|
end
|
28
|
+
|
29
|
+
def to_identifier(raw_identifier)
|
30
|
+
raw_identifier.to_i
|
31
|
+
end
|
28
32
|
|
29
|
-
def add(relative_filename)
|
30
|
-
svn(
|
33
|
+
def add(relative_filename, options={})
|
34
|
+
svn("add #{relative_filename}", options)
|
31
35
|
end
|
32
36
|
|
33
|
-
def move(relative_src, relative_dest)
|
34
|
-
svn(
|
37
|
+
def move(relative_src, relative_dest, options={})
|
38
|
+
svn("mv #{relative_src} #{relative_dest}", options)
|
35
39
|
end
|
36
40
|
|
37
41
|
def transactional?
|
38
42
|
true
|
39
43
|
end
|
40
44
|
|
41
|
-
def
|
42
|
-
checkout_dir = PathConverter.filepath_to_nativepath(@checkout_dir, false)
|
43
|
-
mkdir_p(@checkout_dir)
|
44
|
-
checked_out_files = []
|
45
|
-
path_regex = /^[A|D|U]\s+(.*)/
|
46
|
-
if(checked_out?)
|
47
|
-
svn(@checkout_dir, update_command(to_identifier)) do |line|
|
48
|
-
if(line =~ path_regex)
|
49
|
-
absolute_path = "#{checkout_dir}/#{$1}"
|
50
|
-
relative_path = $1.chomp
|
51
|
-
relative_path = relative_path.gsub(/\\/, "/") if WINDOWS
|
52
|
-
checked_out_files << relative_path
|
53
|
-
yield relative_path if block_given?
|
54
|
-
end
|
55
|
-
end
|
56
|
-
else
|
57
|
-
svn(@checkout_dir, checkout_command(to_identifier)) do |line|
|
58
|
-
if(line =~ path_regex)
|
59
|
-
native_absolute_path = $1
|
60
|
-
absolute_path = PathConverter.nativepath_to_filepath(native_absolute_path)
|
61
|
-
if(File.exist?(absolute_path) && !File.directory?(absolute_path))
|
62
|
-
native_checkout_dir = PathConverter.filepath_to_nativepath(@checkout_dir, false)
|
63
|
-
relative_path = native_absolute_path[native_checkout_dir.length+1..-1].chomp
|
64
|
-
relative_path = relative_path.gsub(/\\/, "/")
|
65
|
-
checked_out_files << relative_path
|
66
|
-
yield relative_path if block_given?
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
checked_out_files
|
72
|
-
end
|
73
|
-
|
74
|
-
def uptodate?(identifier)
|
45
|
+
def uptodate?(identifier, options={})
|
75
46
|
if(!checked_out?)
|
76
47
|
false
|
77
48
|
else
|
78
|
-
rev = identifier ?
|
79
|
-
local_revision_identifier == rev
|
49
|
+
rev = identifier.nil? ? head_revision_identifier(options) : identifier
|
50
|
+
local_revision_identifier(options) == rev
|
80
51
|
end
|
81
52
|
end
|
82
53
|
|
83
|
-
def commit(message)
|
84
|
-
svn(
|
54
|
+
def commit(message, options={})
|
55
|
+
svn(commit_command(message), options)
|
85
56
|
# We have to do an update to get the local revision right
|
86
|
-
svn(
|
57
|
+
svn("update", options)
|
87
58
|
end
|
88
59
|
|
89
60
|
def label
|
90
61
|
local_revision_identifier.to_s
|
91
62
|
end
|
92
63
|
|
93
|
-
def diff(file, &block)
|
64
|
+
def diff(file, options={}, &block)
|
94
65
|
cmd = "svn diff --revision #{file.previous_native_revision_identifier}:#{file.native_revision_identifier} \"#{url}/#{file.path}\""
|
95
|
-
|
66
|
+
execute(cmd, options) do |io|
|
96
67
|
return(yield(io))
|
97
68
|
end
|
98
69
|
end
|
99
70
|
|
100
|
-
def open(revision_file, &block)
|
71
|
+
def open(revision_file, options, &block)
|
101
72
|
cmd = "svn cat #{url}/#{revision_file.path}@#{revision_file.native_revision_identifier}"
|
102
|
-
|
73
|
+
execute(cmd, options) do |io|
|
103
74
|
return(yield(io))
|
104
75
|
end
|
105
76
|
end
|
106
77
|
|
107
|
-
def ls(relative_path)
|
108
|
-
prefix = relative_path == "" ? relative_path : "#{relative_path}/"
|
109
|
-
cmd = "svn ls #{url}/#{relative_path}"
|
110
|
-
Better.popen(cmd) do |io|
|
111
|
-
io.collect do |line|
|
112
|
-
name = line.strip
|
113
|
-
dir = false
|
114
|
-
if(name =~ /(.*)\/$/)
|
115
|
-
name = $1
|
116
|
-
dir = true
|
117
|
-
end
|
118
|
-
HistoricFile.new("#{prefix}#{name}", dir, self)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
78
|
def can_create_central?
|
124
79
|
local?
|
125
80
|
end
|
@@ -141,7 +96,7 @@ module RSCM
|
|
141
96
|
# on stdout (and an error msg on std err).
|
142
97
|
exists = false
|
143
98
|
cmd = "svn log #{url} -r HEAD"
|
144
|
-
|
99
|
+
execute(cmd) do |stdout|
|
145
100
|
stdout.each_line do |line|
|
146
101
|
exists = true
|
147
102
|
end
|
@@ -161,53 +116,58 @@ module RSCM
|
|
161
116
|
"hooks/post-commit"
|
162
117
|
end
|
163
118
|
|
164
|
-
def create_central
|
119
|
+
def create_central(options={})
|
120
|
+
options = options.dup.merge({:dir => svnrootdir})
|
165
121
|
native_path = PathConverter.filepath_to_nativepath(svnrootdir, true)
|
166
122
|
mkdir_p(PathConverter.nativepath_to_filepath(native_path))
|
167
|
-
svnadmin(
|
123
|
+
svnadmin("create #{native_path}", options)
|
168
124
|
if(@path && @path != "")
|
125
|
+
options = options.dup.merge({:dir => "."})
|
169
126
|
# create the directories
|
170
127
|
paths = @path.split("/")
|
171
128
|
paths.each_with_index do |p,i|
|
172
129
|
p = paths[0..i]
|
173
130
|
u = "#{repourl}/#{p.join('/')}"
|
174
|
-
svn("
|
131
|
+
svn("mkdir #{u} -m \"Adding directories\"", options)
|
175
132
|
end
|
176
133
|
end
|
177
134
|
end
|
178
135
|
|
179
|
-
def install_trigger(trigger_command, trigger_files_checkout_dir)
|
136
|
+
def install_trigger(trigger_command, trigger_files_checkout_dir, options={})
|
180
137
|
if (WINDOWS)
|
181
|
-
install_win_trigger(trigger_command, trigger_files_checkout_dir)
|
138
|
+
install_win_trigger(trigger_command, trigger_files_checkout_dir, options)
|
182
139
|
else
|
183
|
-
install_unix_trigger(trigger_command, trigger_files_checkout_dir)
|
140
|
+
install_unix_trigger(trigger_command, trigger_files_checkout_dir, options)
|
184
141
|
end
|
185
142
|
end
|
186
143
|
|
187
|
-
def uninstall_trigger(trigger_command, trigger_files_checkout_dir)
|
144
|
+
def uninstall_trigger(trigger_command, trigger_files_checkout_dir, options={})
|
188
145
|
File.comment_out(post_commit_file, /#{Regexp.escape(trigger_command)}/, nil)
|
189
146
|
end
|
190
147
|
|
191
|
-
def trigger_installed?(trigger_command, trigger_files_checkout_dir)
|
148
|
+
def trigger_installed?(trigger_command, trigger_files_checkout_dir, options={})
|
192
149
|
return false unless File.exist?(post_commit_file)
|
193
150
|
not_already_commented = LineEditor.comment_out(File.new(post_commit_file), /#{Regexp.escape(trigger_command)}/, "# ", "")
|
194
151
|
not_already_commented
|
195
152
|
end
|
196
153
|
|
197
|
-
def import_central(
|
198
|
-
import_cmd = "import #{url} -m \"#{message}\""
|
199
|
-
svn(
|
200
|
-
end
|
201
|
-
|
202
|
-
def revisions(from_identifier,
|
203
|
-
|
204
|
-
|
205
|
-
|
154
|
+
def import_central(options)
|
155
|
+
import_cmd = "import #{url} -m \"#{options[:message]}\""
|
156
|
+
svn(import_cmd, options)
|
157
|
+
end
|
158
|
+
|
159
|
+
def revisions(from_identifier, options={})
|
160
|
+
options = {
|
161
|
+
:from_identifier => from_identifier,
|
162
|
+
:to_identifier => Time.infinity,
|
163
|
+
:relative_path => "",
|
164
|
+
:dir => Dir.pwd
|
165
|
+
}.merge(options)
|
166
|
+
|
206
167
|
checkout_dir = PathConverter.filepath_to_nativepath(@checkout_dir, false)
|
207
168
|
revisions = nil
|
208
|
-
command = "svn #{changes_command(from_identifier, to_identifier, relative_path)}"
|
209
|
-
|
210
|
-
Better.popen(command) do |stdout|
|
169
|
+
command = "svn #{changes_command(options[:from_identifier], options[:to_identifier], options[:relative_path])}"
|
170
|
+
execute(command, options) do |stdout|
|
211
171
|
parser = SubversionLogParser.new(stdout, @url)
|
212
172
|
revisions = parser.parse_revisions
|
213
173
|
end
|
@@ -226,31 +186,47 @@ module RSCM
|
|
226
186
|
result
|
227
187
|
end
|
228
188
|
|
189
|
+
protected
|
190
|
+
|
191
|
+
def checkout_silent(to_identifier, options)
|
192
|
+
checkout_dir = PathConverter.filepath_to_nativepath(@checkout_dir, false)
|
193
|
+
mkdir_p(@checkout_dir)
|
194
|
+
if(checked_out?)
|
195
|
+
svn(update_command(to_identifier), options)
|
196
|
+
else
|
197
|
+
svn(checkout_command(to_identifier), options)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def ignore_paths
|
202
|
+
[/\.svn\/.*/]
|
203
|
+
end
|
204
|
+
|
229
205
|
private
|
230
206
|
|
231
|
-
def local_revision_identifier
|
207
|
+
def local_revision_identifier(options)
|
232
208
|
local_revision_identifier = nil
|
233
|
-
svn(
|
209
|
+
svn("info", options) do |line|
|
234
210
|
if(line =~ /Revision: ([0-9]*)/)
|
235
211
|
return $1.to_i
|
236
212
|
end
|
237
213
|
end
|
238
214
|
end
|
239
215
|
|
240
|
-
def head_revision_identifier
|
216
|
+
def head_revision_identifier(options)
|
241
217
|
# This command only seems to yield any changesets if the url is the root of
|
242
218
|
# the repo, which we don't know in the case where path is not specified (likely)
|
243
219
|
# We therefore don't specify it and get the latest revision from the full url instead.
|
244
220
|
# cmd = "svn log #{login_options} #{repourl} -r HEAD"
|
245
221
|
cmd = "svn log #{login_options} #{url}"
|
246
|
-
|
222
|
+
execute(cmd, options) do |stdout|
|
247
223
|
parser = SubversionLogParser.new(stdout, @url)
|
248
224
|
revisions = parser.parse_revisions
|
249
|
-
revisions[0].identifier
|
225
|
+
revisions[0].identifier
|
250
226
|
end
|
251
227
|
end
|
252
228
|
|
253
|
-
def install_unix_trigger(trigger_command, damagecontrol_install_dir)
|
229
|
+
def install_unix_trigger(trigger_command, damagecontrol_install_dir, options)
|
254
230
|
post_commit_exists = File.exists?(post_commit_file)
|
255
231
|
mode = post_commit_exists ? File::APPEND|File::WRONLY : File::CREAT|File::WRONLY
|
256
232
|
begin
|
@@ -267,7 +243,7 @@ module RSCM
|
|
267
243
|
end
|
268
244
|
end
|
269
245
|
|
270
|
-
def install_win_trigger(trigger_command, damagecontrol_install_dir)
|
246
|
+
def install_win_trigger(trigger_command, damagecontrol_install_dir, options)
|
271
247
|
post_commit_exists = File.exists?(post_commit_file)
|
272
248
|
mode = post_commit_exists ? File::APPEND|File::WRONLY : File::CREAT|File::WRONLY
|
273
249
|
begin
|
@@ -291,22 +267,19 @@ module RSCM
|
|
291
267
|
result
|
292
268
|
end
|
293
269
|
|
294
|
-
def svnadmin(
|
295
|
-
svncommand("svnadmin",
|
270
|
+
def svnadmin(cmd, options={}, &proc)
|
271
|
+
svncommand("svnadmin", cmd, options, &proc)
|
296
272
|
end
|
297
273
|
|
298
|
-
def svn(
|
299
|
-
svncommand("svn",
|
274
|
+
def svn(cmd, options={}, &proc)
|
275
|
+
svncommand("svn", cmd, options, &proc)
|
300
276
|
end
|
301
277
|
|
302
|
-
def svncommand(executable,
|
278
|
+
def svncommand(executable, cmd, options, &proc)
|
303
279
|
command_line = "#{executable} #{cmd}"
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
stdout.each_line do |line|
|
308
|
-
yield line if block_given?
|
309
|
-
end
|
280
|
+
execute(command_line, options) do |stdout|
|
281
|
+
stdout.each_line do |line|
|
282
|
+
yield line if block_given?
|
310
283
|
end
|
311
284
|
end
|
312
285
|
end
|
data/lib/rscm/time_ext.rb
CHANGED
data/lib/rscm/version.rb
ADDED
@@ -4,8 +4,10 @@ require 'rscm/path_converter'
|
|
4
4
|
require 'rscm/difftool_test'
|
5
5
|
|
6
6
|
module RSCM
|
7
|
+
DEFAULT_OPTIONS = {:stdout => 'target/stdout.log', :stderr => 'target/stderr.log'}.freeze
|
7
8
|
|
8
9
|
module GenericSCMTests
|
10
|
+
|
9
11
|
include FileUtils
|
10
12
|
|
11
13
|
def teardown
|
@@ -47,15 +49,17 @@ module RSCM
|
|
47
49
|
other_checkout_dir = "#{work_dir}/OtherWorkingCopy"
|
48
50
|
repository_dir = "#{work_dir}/repository"
|
49
51
|
scm = create_scm(repository_dir, "damagecontrolled")
|
52
|
+
scm.default_options = DEFAULT_OPTIONS
|
50
53
|
scm.checkout_dir = checkout_dir
|
51
54
|
|
52
55
|
other_scm = create_scm(repository_dir, "damagecontrolled")
|
56
|
+
other_scm.default_options = DEFAULT_OPTIONS
|
53
57
|
other_scm.checkout_dir = other_checkout_dir
|
54
58
|
|
55
59
|
raise "This scm (#{scm.name}) can't create 'central' repositories." unless scm.can_create_central?
|
56
60
|
|
57
61
|
# 1
|
58
|
-
scm.create_central
|
62
|
+
scm.create_central
|
59
63
|
@scm = scm
|
60
64
|
|
61
65
|
# 2
|
@@ -66,25 +70,18 @@ module RSCM
|
|
66
70
|
assert(!scm.uptodate?(nil))
|
67
71
|
|
68
72
|
# 4
|
69
|
-
|
70
|
-
|
71
|
-
yielded_files << file_name
|
72
|
-
end
|
73
|
-
|
73
|
+
files = scm.checkout nil
|
74
|
+
|
74
75
|
# 5
|
75
|
-
assert_equal(4, files.length)
|
76
|
-
assert_equal(files, yielded_files)
|
76
|
+
assert_equal(4, files.length, files.join("\n"))
|
77
77
|
files.sort!
|
78
|
-
yielded_files.sort!
|
79
|
-
assert_equal(files, yielded_files)
|
80
|
-
|
81
78
|
assert_equal("build.xml", files[0])
|
82
79
|
assert_equal("project.xml", files[1])
|
83
80
|
assert_equal("src/java/com/thoughtworks/damagecontrolled/Thingy.java", files[2])
|
84
81
|
assert_equal("src/test/com/thoughtworks/damagecontrolled/ThingyTestCase.java", files[3])
|
85
82
|
|
86
83
|
# 6
|
87
|
-
initial_revisions = scm.revisions(nil
|
84
|
+
initial_revisions = scm.revisions(nil)
|
88
85
|
assert_equal("imported\nsources", initial_revisions[0].message)
|
89
86
|
# Subversion seems to add a revision with message "Added directories"
|
90
87
|
#assert_equal(1, initial_revisions.length)
|
@@ -97,21 +94,20 @@ module RSCM
|
|
97
94
|
change_file(scm, "#{checkout_dir}/build.xml")
|
98
95
|
change_file(scm, "#{checkout_dir}/src/java/com/thoughtworks/damagecontrolled/Thingy.java")
|
99
96
|
|
100
|
-
|
101
|
-
other_scm.checkout
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
assert(scm.uptodate?(nil))
|
106
|
-
# 12
|
97
|
+
assert(!other_scm.uptodate?(initial_revisions.latest.identifier))
|
98
|
+
other_scm.checkout nil
|
99
|
+
assert(other_scm.uptodate?(initial_revisions.latest.identifier))
|
100
|
+
|
101
|
+
sleep(1)
|
107
102
|
scm.commit("changed\nsomething")
|
108
103
|
|
109
104
|
# 13
|
110
105
|
revisions = scm.revisions(initial_revisions.latest.identifier)
|
106
|
+
assert_equal(1, revisions.length, "Actual revisions:\n" + revisions.collect{|cs| cs.to_s}.join("\n"))
|
107
|
+
|
111
108
|
assert(revisions[0].identifier)
|
112
|
-
assert_equal(1, revisions.length, revisions.collect{|cs| cs.to_s})
|
113
109
|
revision = revisions[0]
|
114
|
-
assert_equal(2, revision.length)
|
110
|
+
assert_equal(2, revision.length, "Actual files:\n" + revision.collect{|file| file.path}.join("\n"))
|
115
111
|
|
116
112
|
assert_equal("changed\nsomething", revision.message)
|
117
113
|
|
@@ -134,7 +130,7 @@ module RSCM
|
|
134
130
|
assert(scm.uptodate?(revisions.latest.identifier))
|
135
131
|
|
136
132
|
# 15
|
137
|
-
files = other_scm.checkout.sort
|
133
|
+
files = other_scm.checkout(nil).sort
|
138
134
|
assert_equal(2, files.length)
|
139
135
|
assert_equal("build.xml", files[0])
|
140
136
|
assert_equal("src/java/com/thoughtworks/damagecontrolled/Thingy.java", files[1])
|
@@ -151,19 +147,6 @@ module RSCM
|
|
151
147
|
assert_equal(1, revisions.length)
|
152
148
|
assert_equal(1, revisions[0].length)
|
153
149
|
assert_equal("src/java/com/thoughtworks/damagecontrolled/Hello.txt", revisions[0][0].path)
|
154
|
-
|
155
|
-
# 19
|
156
|
-
root_children = scm.rootdir.children
|
157
|
-
assert_equal "build.xml", root_children[0].relative_path
|
158
|
-
assert !root_children[0].directory?
|
159
|
-
assert_equal "project.xml", root_children[1].relative_path
|
160
|
-
assert !root_children[1].directory?
|
161
|
-
assert_equal "src", root_children[2].relative_path
|
162
|
-
assert root_children[2].directory?
|
163
|
-
|
164
|
-
src_children = root_children[2].children
|
165
|
-
assert_equal "src/java", src_children[0].relative_path
|
166
|
-
assert src_children[0].directory?
|
167
150
|
end
|
168
151
|
|
169
152
|
def test_create_destroy
|
@@ -171,11 +154,12 @@ module RSCM
|
|
171
154
|
checkout_dir = "#{work_dir}/checkout"
|
172
155
|
repository_dir = "#{work_dir}/repository"
|
173
156
|
scm = create_scm(repository_dir, "killme")
|
157
|
+
scm.default_options = DEFAULT_OPTIONS
|
174
158
|
scm.checkout_dir = checkout_dir
|
175
159
|
|
176
160
|
(1..3).each do
|
177
161
|
assert(!scm.central_exists?)
|
178
|
-
scm.create_central
|
162
|
+
scm.create_central
|
179
163
|
assert(scm.central_exists?)
|
180
164
|
scm.destroy_central
|
181
165
|
end
|
@@ -189,6 +173,7 @@ module RSCM
|
|
189
173
|
repository_dir = "#{work_dir}/repository"
|
190
174
|
trigger_proof = "#{work_dir}/trigger_proof"
|
191
175
|
scm = create_scm(repository_dir, "damagecontrolled")
|
176
|
+
scm.default_options = DEFAULT_OPTIONS
|
192
177
|
scm.checkout_dir = checkout_dir
|
193
178
|
scm.create_central
|
194
179
|
@scm = scm
|
@@ -206,7 +191,7 @@ module RSCM
|
|
206
191
|
|
207
192
|
# Verify that the trigger works
|
208
193
|
import_damagecontrolled(scm, "#{work_dir}/damagecontrolled")
|
209
|
-
scm.checkout
|
194
|
+
scm.checkout nil
|
210
195
|
scm.install_trigger(trigger_command, trigger_files_checkout_dir)
|
211
196
|
assert(!File.exist?(trigger_proof))
|
212
197
|
|
@@ -219,12 +204,13 @@ module RSCM
|
|
219
204
|
checkout_dir = "#{work_dir}/checkout"
|
220
205
|
repository_dir = "#{work_dir}/repository"
|
221
206
|
scm = create_scm(repository_dir, "damagecontrolled")
|
207
|
+
scm.default_options = DEFAULT_OPTIONS
|
222
208
|
scm.checkout_dir = checkout_dir
|
223
|
-
scm.create_central
|
209
|
+
scm.create_central
|
224
210
|
@scm = scm
|
225
211
|
|
226
212
|
import_damagecontrolled(scm, "#{work_dir}/damagecontrolled")
|
227
|
-
scm.checkout
|
213
|
+
scm.checkout nil
|
228
214
|
add_or_edit_and_commit_file(scm, checkout_dir, "before.txt", "Before label")
|
229
215
|
before_cs = scm.revisions(Time.epoch)
|
230
216
|
|
@@ -244,12 +230,13 @@ module RSCM
|
|
244
230
|
checkout_dir = "#{work_dir}/checkout"
|
245
231
|
repository_dir = "#{work_dir}/repository"
|
246
232
|
scm = create_scm(repository_dir, "damagecontrolled")
|
233
|
+
scm.default_options = DEFAULT_OPTIONS
|
247
234
|
scm.checkout_dir = checkout_dir
|
248
235
|
scm.create_central
|
249
236
|
@scm = scm
|
250
237
|
|
251
238
|
import_damagecontrolled(scm, "#{work_dir}/damagecontrolled")
|
252
|
-
scm.checkout
|
239
|
+
scm.checkout nil
|
253
240
|
|
254
241
|
from = "src/java/com/thoughtworks/damagecontrolled/Thingy.java"
|
255
242
|
to = "src/java/com/thoughtworks/damagecontrolled/Mooky.java"
|
@@ -258,7 +245,7 @@ module RSCM
|
|
258
245
|
assert(File.exist?(scm.checkout_dir + "/" + to))
|
259
246
|
rm_rf(scm.checkout_dir + "/" + to)
|
260
247
|
assert(!File.exist?(scm.checkout_dir + "/" + to))
|
261
|
-
scm.checkout
|
248
|
+
scm.checkout nil
|
262
249
|
assert(File.exist?(scm.checkout_dir + "/" + to))
|
263
250
|
end
|
264
251
|
|
@@ -281,8 +268,9 @@ EOF
|
|
281
268
|
repository_dir = "#{work_dir}/repository"
|
282
269
|
import_dir = "#{work_dir}/import/diffing"
|
283
270
|
scm = create_scm(repository_dir, "diffing")
|
271
|
+
scm.default_options = DEFAULT_OPTIONS
|
284
272
|
scm.checkout_dir = checkout_dir
|
285
|
-
scm.create_central
|
273
|
+
scm.create_central
|
286
274
|
@scm = scm
|
287
275
|
|
288
276
|
mkdir_p(import_dir)
|
@@ -290,8 +278,8 @@ EOF
|
|
290
278
|
io.puts("just some")
|
291
279
|
io.puts("initial content")
|
292
280
|
end
|
293
|
-
scm.import_central
|
294
|
-
scm.checkout
|
281
|
+
scm.import_central :dir=>import_dir, :message=>"Importing"
|
282
|
+
scm.checkout nil
|
295
283
|
initial_revision = scm.revisions(nil).latest
|
296
284
|
sleep(1)
|
297
285
|
|
@@ -328,7 +316,7 @@ EOF
|
|
328
316
|
|
329
317
|
# TODO: make separate test. Make helper method for the cumbersome setup!
|
330
318
|
historic_afile = scm.file("afile.txt", false)
|
331
|
-
revision_files = historic_afile.revision_files
|
319
|
+
revision_files = historic_afile.revision_files
|
332
320
|
assert_equal(Array, revision_files.class)
|
333
321
|
assert(revision_files.length >= 2)
|
334
322
|
assert(revision_files.length <= 3)
|
@@ -345,7 +333,7 @@ EOF
|
|
345
333
|
cp_r(path, dirname)
|
346
334
|
todelete = Dir.glob("#{import_copy_dir}/**/.svn")
|
347
335
|
rm_rf(todelete)
|
348
|
-
scm.import_central
|
336
|
+
scm.import_central :dir => import_copy_dir, :message => "imported\nsources"
|
349
337
|
end
|
350
338
|
|
351
339
|
def change_file(scm, file)
|
@@ -379,13 +367,14 @@ EOF
|
|
379
367
|
checkout_dir = "#{work_dir}/LabelTest"
|
380
368
|
repository_dir = "#{work_dir}/repository"
|
381
369
|
scm = create_scm(repository_dir, "damagecontrolled")
|
370
|
+
scm.default_options = DEFAULT_OPTIONS
|
382
371
|
scm.checkout_dir = checkout_dir
|
383
|
-
scm.create_central
|
372
|
+
scm.create_central
|
384
373
|
@scm = scm
|
385
374
|
|
386
375
|
import_damagecontrolled(scm, "#{work_dir}/damagecontrolled")
|
387
376
|
|
388
|
-
scm.checkout
|
377
|
+
scm.checkout nil
|
389
378
|
|
390
379
|
# TODO: introduce a Revision class which implements comparator methods
|
391
380
|
return
|
@@ -395,7 +384,7 @@ EOF
|
|
395
384
|
)
|
396
385
|
change_file(scm, "#{checkout_dir}/build.xml")
|
397
386
|
scm.commit("changed something")
|
398
|
-
scm.checkout
|
387
|
+
scm.checkout nil
|
399
388
|
assert_equal(
|
400
389
|
"2",
|
401
390
|
scm.label
|