rscm 0.3.16 → 0.4.0
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/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
|