rscm 0.4.5 → 0.5.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 +12 -0
- data/README +14 -0
- data/Rakefile +4 -24
- data/lib/rscm.rb +1 -2
- data/lib/rscm/base.rb +289 -281
- data/lib/rscm/command_line.rb +135 -112
- data/lib/rscm/revision.rb +63 -166
- data/lib/rscm/revision_file.rb +8 -2
- data/lib/rscm/revision_poller.rb +78 -67
- data/lib/rscm/revisions.rb +79 -0
- data/lib/rscm/scm/clearcase.rb +11 -9
- data/lib/rscm/scm/cvs.rb +374 -352
- data/lib/rscm/scm/cvs_log_parser.rb +1 -0
- data/lib/rscm/scm/darcs.rb +9 -0
- data/lib/rscm/scm/perforce.rb +216 -149
- data/lib/rscm/scm/subversion.rb +44 -24
- data/lib/rscm/scm/subversion_log_parser.rb +37 -51
- data/lib/rscm/time_ext.rb +0 -1
- data/lib/rscm/version.rb +2 -2
- data/test/rscm/command_line_test.rb +7 -5
- data/test/rscm/compatibility/config.yml +4 -4
- data/test/rscm/compatibility/cvs_metaproject/diff.txt +52 -0
- data/test/rscm/compatibility/cvs_metaproject/file.txt +48 -0
- data/test/rscm/compatibility/cvs_metaproject/old.yml +13 -0
- data/test/rscm/compatibility/full.rb +2 -223
- data/test/rscm/compatibility/p4_gfx/files_0.yml +10 -0
- data/test/rscm/compatibility/p4_gfx/old.yml +26 -0
- data/test/rscm/compatibility/p4_gfx/revisions.yml +24 -0
- data/test/rscm/compatibility/p4_gfx/scm.yml +4 -0
- data/test/rscm/compatibility/rscm_engine.rb +197 -0
- data/test/rscm/compatibility/subversion_rscm/diff.txt +12 -0
- data/test/rscm/compatibility/subversion_rscm/file.txt +567 -0
- data/test/rscm/compatibility/subversion_rscm/old.yml +14 -0
- data/test/rscm/compatibility/subversion_rscm/revisions.yml +17 -0
- data/test/rscm/compatibility/subversion_rscm/scm.yml +1 -0
- data/test/rscm/revision_file_test.rb +10 -0
- data/test/rscm/revision_poller_test.rb +91 -0
- data/test/rscm/revision_test.rb +22 -117
- data/test/rscm/revisions_test.rb +80 -0
- data/test/rscm/scm/cvs_log_parser_test.rb +569 -567
- data/test/rscm/scm/cvs_test.rb +6 -3
- data/test/rscm/scm/darcs_test.rb +4 -7
- data/test/rscm/scm/perforce_test.rb +6 -2
- data/test/rscm/scm/star_team_test.rb +10 -0
- data/test/rscm/scm/subversion_log_parser_test.rb +38 -5
- data/test/rscm/scm/subversion_test.rb +2 -3
- data/test/rscm/test_helper.rb +41 -2
- data/testproject/damagecontrolled/build.xml +154 -154
- data/testproject/damagecontrolled/src/java/com/thoughtworks/damagecontrolled/Thingy.java +6 -6
- metadata +19 -7
- data/lib/rscm/historic_file.rb +0 -30
- data/test/rscm/compatibility/damage_control_minimal.rb +0 -104
- data/test/rscm/revision_fixture.rb +0 -20
- data/test/rscm/revisions.yaml +0 -42
- data/test/rscm/scm/star_team.rb +0 -36
@@ -1,7 +1,7 @@
|
|
1
|
-
package com.thoughtworks.damagecontrolled;
|
2
|
-
|
3
|
-
public class Thingy {
|
4
|
-
public String getBeer() {
|
5
|
-
return "Duvel";
|
6
|
-
}
|
1
|
+
package com.thoughtworks.damagecontrolled;
|
2
|
+
|
3
|
+
public class Thingy {
|
4
|
+
public String getBeer() {
|
5
|
+
return "Duvel";
|
6
|
+
}
|
7
7
|
}
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rscm
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.5.0
|
7
|
+
date: 2006-05-18 00:00:00 -05:00
|
8
8
|
summary: RSCM - Ruby Source Control Management
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -37,13 +37,13 @@ files:
|
|
37
37
|
- lib/rscm/base.rb
|
38
38
|
- lib/rscm/command_line.rb
|
39
39
|
- lib/rscm/difftool.rb
|
40
|
-
- lib/rscm/historic_file.rb
|
41
40
|
- lib/rscm/line_editor.rb
|
42
41
|
- lib/rscm/mockit.rb
|
43
42
|
- lib/rscm/parser.rb
|
44
43
|
- lib/rscm/path_converter.rb
|
45
44
|
- lib/rscm/platform.rb
|
46
45
|
- lib/rscm/revision.rb
|
46
|
+
- lib/rscm/revisions.rb
|
47
47
|
- lib/rscm/revision_file.rb
|
48
48
|
- lib/rscm/revision_poller.rb
|
49
49
|
- lib/rscm/scm
|
@@ -77,20 +77,32 @@ files:
|
|
77
77
|
- test/rscm/mockit_test.rb
|
78
78
|
- test/rscm/parser_test.rb
|
79
79
|
- test/rscm/path_converter_test.rb
|
80
|
-
- test/rscm/
|
80
|
+
- test/rscm/revisions_test.rb
|
81
|
+
- test/rscm/revision_file_test.rb
|
82
|
+
- test/rscm/revision_poller_test.rb
|
81
83
|
- test/rscm/revision_test.rb
|
82
|
-
- test/rscm/revisions.yaml
|
83
84
|
- test/rscm/scm
|
84
85
|
- test/rscm/test_helper.rb
|
85
86
|
- test/rscm/compatibility/config.yml
|
86
87
|
- test/rscm/compatibility/cvs_metaproject
|
87
|
-
- test/rscm/compatibility/damage_control_minimal.rb
|
88
88
|
- test/rscm/compatibility/full.rb
|
89
|
+
- test/rscm/compatibility/p4_gfx
|
90
|
+
- test/rscm/compatibility/rscm_engine.rb
|
89
91
|
- test/rscm/compatibility/subversion_rscm
|
92
|
+
- test/rscm/compatibility/cvs_metaproject/diff.txt
|
93
|
+
- test/rscm/compatibility/cvs_metaproject/file.txt
|
90
94
|
- test/rscm/compatibility/cvs_metaproject/files_0.yml
|
95
|
+
- test/rscm/compatibility/cvs_metaproject/old.yml
|
91
96
|
- test/rscm/compatibility/cvs_metaproject/revisions.yml
|
92
97
|
- test/rscm/compatibility/cvs_metaproject/scm.yml
|
98
|
+
- test/rscm/compatibility/p4_gfx/files_0.yml
|
99
|
+
- test/rscm/compatibility/p4_gfx/old.yml
|
100
|
+
- test/rscm/compatibility/p4_gfx/revisions.yml
|
101
|
+
- test/rscm/compatibility/p4_gfx/scm.yml
|
102
|
+
- test/rscm/compatibility/subversion_rscm/diff.txt
|
103
|
+
- test/rscm/compatibility/subversion_rscm/file.txt
|
93
104
|
- test/rscm/compatibility/subversion_rscm/files_0.yml
|
105
|
+
- test/rscm/compatibility/subversion_rscm/old.yml
|
94
106
|
- test/rscm/compatibility/subversion_rscm/revisions.yml
|
95
107
|
- test/rscm/compatibility/subversion_rscm/scm.yml
|
96
108
|
- test/rscm/compatibility/subversion_rscm/svn_log_bug_irc.txt
|
@@ -106,7 +118,7 @@ files:
|
|
106
118
|
- test/rscm/scm/mooky_test.rb
|
107
119
|
- test/rscm/scm/p4client_test.rb
|
108
120
|
- test/rscm/scm/perforce_test.rb
|
109
|
-
- test/rscm/scm/
|
121
|
+
- test/rscm/scm/star_team_test.rb
|
110
122
|
- test/rscm/scm/subversion_log_parser_test.rb
|
111
123
|
- test/rscm/scm/subversion_test.rb
|
112
124
|
- test/rscm/scm/svn-cargo.log
|
data/lib/rscm/historic_file.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
module RSCM
|
2
|
-
# Represents the full history of a single file or directory.
|
3
|
-
class HistoricFile
|
4
|
-
attr_reader :relative_path
|
5
|
-
|
6
|
-
def initialize(relative_path, directory, scm)
|
7
|
-
raise "Not a String: '#{relative_path}' (#{relative_path.class.name})" unless relative_path.is_a? String
|
8
|
-
@relative_path, @directory, @scm = relative_path, directory, scm
|
9
|
-
end
|
10
|
-
|
11
|
-
def directory?
|
12
|
-
@directory
|
13
|
-
end
|
14
|
-
|
15
|
-
# Returns an Array of RevisionFile - from Time.epoch until Time.infinity (now)
|
16
|
-
def revision_files(options={})
|
17
|
-
@scm.revisions(Time.epoch, options.dup.merge({:to_identifier => Time.infinity, :relative_path => @relative_path})).collect do |revision|
|
18
|
-
if revision.files.length != 1
|
19
|
-
files_s = revision.files.collect{|f| f.to_s}.join("\n")
|
20
|
-
raise "The file-specific revision didn't have exactly one file, but #{revision.files.length}:\n#{files_s}"
|
21
|
-
end
|
22
|
-
if(!revision.files[0].path.eql?(@relative_path))
|
23
|
-
raise "The file-specific revision didn't have expected path '#{@relative_path}', but '#{revision.files[0].path}'"
|
24
|
-
end
|
25
|
-
revision.files[0]
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
module RSCM
|
2
|
-
module Compatibility
|
3
|
-
# These tests verify that an RSCM adapter implements
|
4
|
-
# the API that is required in order to use the adapter with DamageControl
|
5
|
-
module DamageControlMinimal
|
6
|
-
include Difftool
|
7
|
-
|
8
|
-
def setup
|
9
|
-
config_yml = File.dirname(__FILE__) + '/config.yml'
|
10
|
-
config = YAML::load_file(config_yml)
|
11
|
-
raise "#{config_yml} must have an entry for #{self.class.name}" if config[self.class.name].nil?
|
12
|
-
@testdata_dir = File.dirname(__FILE__) + '/' + config[self.class.name]
|
13
|
-
raise "#{@testdata_dir} directory doesn't exist" unless File.directory?(@testdata_dir)
|
14
|
-
@scm = YAML::load_file(@testdata_dir + '/scm.yml')
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_should_get_revisions_by_revision_identifier
|
18
|
-
suffix = method_name
|
19
|
-
do_verify_revisions_by_property(suffix, :identifier)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_get_revisions_by_time
|
23
|
-
# Subversion 1.3.0 currently has an unresolved bug:
|
24
|
-
# http://subversion.tigris.org/issues/show_bug.cgi?id=1642
|
25
|
-
#
|
26
|
-
# svn log http://buildpatterns.com/svn/repos/rscm/trunk/test/ --revision {"2006-03-03 11:55:55"}:{"2006-03-03 18:24:08"}
|
27
|
-
#
|
28
|
-
# returns revisions outside the lower bounds.
|
29
|
-
# we therefore exclude this test when running svn tests - it's not that important since DC only uses timestamps
|
30
|
-
# on the first run for a project, and it's not important that it is accurate.
|
31
|
-
unless self.class.name == 'RSCM::SubversionTest'
|
32
|
-
suffix = method_name
|
33
|
-
do_verify_revisions_by_property(suffix, :time)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def do_verify_revisions_by_property(suffix, something)
|
38
|
-
dir = File.expand_path(RSCM.new_temp_dir(suffix))
|
39
|
-
options = {:stdout => "#{dir}/stdout.log", :stderr => "#{dir}/stderr.log"}.freeze
|
40
|
-
@scm.checkout_dir = "#{dir}/checkout"
|
41
|
-
|
42
|
-
expected_yaml = @testdata_dir + '/revisions.yml'
|
43
|
-
expected = YAML::load_file(expected_yaml)
|
44
|
-
opts = options.dup.merge :to_identifier => expected.last.send(something)
|
45
|
-
actual = @scm.revisions(expected.first.send(something)-1, opts)
|
46
|
-
|
47
|
-
if(expected != actual)
|
48
|
-
assert_equal_with_diff(expected_yaml, actual.to_yaml, "See logs in #{dir}")
|
49
|
-
end
|
50
|
-
|
51
|
-
opts = options.dup.merge :to_identifier => expected.last.send(something)
|
52
|
-
later = @scm.revisions(expected.first.send(something), opts)
|
53
|
-
assert_not_equal(expected, later)
|
54
|
-
|
55
|
-
opts = options.dup.merge :to_identifier => expected.last.send(something)
|
56
|
-
earlier = @scm.revisions(expected.first.send(something)+1, opts)
|
57
|
-
assert_not_equal(expected, earlier)
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_should_checkout_sources_to_particular_revision
|
61
|
-
dirname = method_name
|
62
|
-
dir = File.expand_path(RSCM.new_temp_dir(dirname))
|
63
|
-
options = {:stdout => "#{dir}/stdout.log", :stderr => "#{dir}/stderr.log"}.freeze
|
64
|
-
revisions_yml = @testdata_dir + '/revisions.yml'
|
65
|
-
revisions = YAML::load_file(revisions_yml)
|
66
|
-
@scm.checkout_dir = RSCM.new_temp_dir("#{dirname}_0")
|
67
|
-
files_0 = @scm.checkout(revisions[0].identifier, options)
|
68
|
-
expected_yaml = @testdata_dir + "/files_0.yml"
|
69
|
-
expected = YAML::load_file(expected_yaml)
|
70
|
-
if(expected != files_0)
|
71
|
-
assert_equal_with_diff(expected_yaml, files_0.to_yaml)
|
72
|
-
end
|
73
|
-
|
74
|
-
# We can predict what the next checked out files should be
|
75
|
-
expected_files = files_0.dup
|
76
|
-
revisions[1].each do |file|
|
77
|
-
expected_files.delete(file.path) if file.status == "DELETED"
|
78
|
-
expected_files.push(file.path) if file.status == "ADDED"
|
79
|
-
end
|
80
|
-
expected_files.sort!
|
81
|
-
if(files_0 == expected_files)
|
82
|
-
flunk "The 2nd revision in #{revisions_yml} must have at least one added or deleted file"
|
83
|
-
end
|
84
|
-
|
85
|
-
@scm.checkout_dir = RSCM.new_temp_dir("#{dirname}_1")
|
86
|
-
files_1 = @scm.checkout(revisions[1].identifier, options)
|
87
|
-
assert_equal(expected_files, files_1)
|
88
|
-
|
89
|
-
# Now check out to the 1st revision again and verify files were removed
|
90
|
-
added_paths = revisions[1].find_all{|rf| rf.status=="ADDED"}.collect{|rf| rf.path}
|
91
|
-
assert added_paths.size > 0
|
92
|
-
added_paths.each do |p|
|
93
|
-
full_path = @scm.checkout_dir + '/' + p
|
94
|
-
assert File.exist?(full_path), "Should exist: #{full_path}"
|
95
|
-
end
|
96
|
-
@scm.checkout(revisions[0].identifier, options)
|
97
|
-
added_paths.each do |p|
|
98
|
-
full_path = @scm.checkout_dir + '/' + p
|
99
|
-
assert !File.exist?(full_path), "Should no longer exist: #{full_path}"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'rscm/revision'
|
3
|
-
|
4
|
-
module RSCM
|
5
|
-
module RevisionFixture
|
6
|
-
def setup_changes
|
7
|
-
#1
|
8
|
-
@change1 = RSCM::RevisionFile.new("path/one", nil, "jon", "Fixed CATCH-22", nil, Time.utc(2004,7,5,12,0,2))
|
9
|
-
@change2 = RSCM::RevisionFile.new("path/two", nil, "jon", "Fixed CATCH-22", nil, Time.utc(2004,7,5,12,0,4))
|
10
|
-
#2
|
11
|
-
@change3 = RSCM::RevisionFile.new("path/three", nil, "jon", "hipp hurra", nil, Time.utc(2004,7,5,12,0,6))
|
12
|
-
#3
|
13
|
-
@change4 = RSCM::RevisionFile.new("path/four", nil, "aslak", "hipp hurraX", nil, Time.utc(2004,7,5,12,0,8))
|
14
|
-
#4
|
15
|
-
@change5 = RSCM::RevisionFile.new("path/five", nil, "aslak", "hipp hurra", nil, Time.utc(2004,7,5,12,0,10))
|
16
|
-
@change6 = RSCM::RevisionFile.new("path/six", nil, "aslak", "hipp hurra", nil, Time.utc(2004,7,5,12,0,12))
|
17
|
-
@change7 = RSCM::RevisionFile.new("path/seven", nil, "aslak", "hipp hurra", nil, Time.utc(2004,7,5,12,0,14))
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/test/rscm/revisions.yaml
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
--- !ruby/object:RSCM::Revisions
|
2
|
-
revisions:
|
3
|
-
- !ruby/object:RSCM::Revision
|
4
|
-
files:
|
5
|
-
- !ruby/object:RSCM::RevisionFile
|
6
|
-
developer: rinkrank
|
7
|
-
message: "En to
|
8
|
-
|
9
|
-
tre buksa
|
10
|
-
|
11
|
-
ned
|
12
|
-
|
13
|
-
"
|
14
|
-
path: server/damagecontrol/web/AbstractAdminServlet.rb
|
15
|
-
previous_native_revision_identifier: "1.42"
|
16
|
-
native_revision_identifier: "1.43"
|
17
|
-
status: MODIFIED
|
18
|
-
time: 2004-11-30 04:52:24 Z
|
19
|
-
- !ruby/object:RSCM::RevisionFile
|
20
|
-
developer: rinkrank
|
21
|
-
message: "En to
|
22
|
-
|
23
|
-
tre buksa
|
24
|
-
|
25
|
-
ned
|
26
|
-
|
27
|
-
"
|
28
|
-
path: server/damagecontrol/web/ProjectServlet.rb
|
29
|
-
previous_native_revision_identifier: "1.71"
|
30
|
-
native_revision_identifier: "1.72"
|
31
|
-
status: MODIFIED
|
32
|
-
time: 2004-11-30 04:53:23 Z
|
33
|
-
developer: rinkrank
|
34
|
-
message: "En to
|
35
|
-
|
36
|
-
tre buksa
|
37
|
-
|
38
|
-
ned
|
39
|
-
|
40
|
-
"
|
41
|
-
revision: MAIN:rinkrank:20041130045224
|
42
|
-
time: 2004-11-30 04:52:24 Z
|
data/test/rscm/scm/star_team.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'fileutils'
|
3
|
-
require 'rscm'
|
4
|
-
require 'rscm/generic_scm_tests'
|
5
|
-
|
6
|
-
module RSCM
|
7
|
-
class StarTeamTest < Test::Unit::TestCase
|
8
|
-
# include GenericSCMTests
|
9
|
-
|
10
|
-
def create_scm(repository_root_dir, path)
|
11
|
-
StarTeam.new(ENV["STARTEAM_USER"], ENV["STARTEAM_PASS"], "192.168.254.21", 49201, "NGST Application", "NGST Application", "java")
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_revisions
|
15
|
-
from = Time.new - 2 * 3600 * 24
|
16
|
-
to = Time.new - 1 * 3600 * 24
|
17
|
-
puts "Getting revisions for #{from} - #{to}"
|
18
|
-
|
19
|
-
revisions = create_scm(nil, nil).revisions(nil, from, to)
|
20
|
-
assert_equal(1, revisions.length)
|
21
|
-
assert_equal(Time.utc(2004, 11, 30, 04, 52, 24), revisions[0][0].time)
|
22
|
-
assert_equal(Time.utc(2004, 11, 30, 04, 53, 23), revisions[0][1].time)
|
23
|
-
assert_equal(Time.utc(2004, 11, 30, 04, 53, 23), revisions[0].time)
|
24
|
-
assert_equal("rinkrank", revisions[0].developer)
|
25
|
-
assert_equal("En to\ntre buksa \nned\n", revisions[0].message)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_checkout
|
29
|
-
files = create_scm(nil, nil).checkout("target/starteam/checkout")
|
30
|
-
assert_equal(3, files.length)
|
31
|
-
assert_equal("eenie/meenie/minee/mo", files[0])
|
32
|
-
assert_equal("catch/a/redneck/by", files[1])
|
33
|
-
assert_equal("the/toe", files[2])
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|