gforces-integrity 0.1.9.3 → 0.1.9.4
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/integrity.gemspec +4 -2
- data/lib/integrity/scm/subversion.rb +84 -0
- data/lib/integrity/scm/subversion/uri.rb +23 -0
- metadata +4 -2
data/integrity.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "integrity"
|
3
|
-
s.version = "0.1.9.
|
4
|
-
s.date = "2009-
|
3
|
+
s.version = "0.1.9.4"
|
4
|
+
s.date = "2009-08-25"
|
5
5
|
|
6
6
|
s.description = "Your Friendly Continuous Integration server. Easy, fun and painless!"
|
7
7
|
s.summary = "The easy and fun Continuous Integration server"
|
@@ -82,6 +82,8 @@ lib/integrity/project_builder.rb
|
|
82
82
|
lib/integrity/scm.rb
|
83
83
|
lib/integrity/scm/git.rb
|
84
84
|
lib/integrity/scm/git/uri.rb
|
85
|
+
lib/integrity/scm/subversion.rb
|
86
|
+
lib/integrity/scm/subversion/uri.rb
|
85
87
|
public/buttons.css
|
86
88
|
public/reset.css
|
87
89
|
public/spinner.gif
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'hpricot'
|
2
|
+
module Integrity
|
3
|
+
module SCM
|
4
|
+
class Subversion
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) / "subversion/uri"
|
7
|
+
|
8
|
+
attr_reader :uri, :branch, :working_directory
|
9
|
+
|
10
|
+
def self.working_tree_path(uri)
|
11
|
+
Subversion::URI.new( uri ).working_tree_path
|
12
|
+
end
|
13
|
+
|
14
|
+
# check the uri and see if it is a subversion url
|
15
|
+
# There is a lot that can be a subversion url
|
16
|
+
def self.is_this_my_home?( location )
|
17
|
+
uri = Addressable::URI.parse( location )
|
18
|
+
%w[ svn+ssh svn http https file ].include?( uri.scheme )
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(uri, branch, working_directory = nil)
|
22
|
+
@uri = uri.to_s
|
23
|
+
@branch = branch.to_s
|
24
|
+
@working_directory = working_directory
|
25
|
+
end
|
26
|
+
|
27
|
+
def with_revision(revision)
|
28
|
+
initial_checkout unless already_out?
|
29
|
+
update_to(revision)
|
30
|
+
yield
|
31
|
+
end
|
32
|
+
|
33
|
+
def name
|
34
|
+
self.class.name.split("::").last
|
35
|
+
end
|
36
|
+
|
37
|
+
def head
|
38
|
+
log "Getting the HEAD of '#{uri}'"
|
39
|
+
xml = %x[ svn info --non-interactive --xml #{uri} ]
|
40
|
+
doc = Hpricot::XML( xml )
|
41
|
+
return doc.at("commit")['revision']
|
42
|
+
end
|
43
|
+
|
44
|
+
def info( revision )
|
45
|
+
log "Retrieving info for revision #{revision}"
|
46
|
+
xml = %x[ svn log --non-interactive --xml --revision #{revision} #{uri} ]
|
47
|
+
doc = Hpricot::XML( xml )
|
48
|
+
h = {}
|
49
|
+
h['author'] = doc.at('author').inner_html + " <noemail>"
|
50
|
+
h['message'] = doc.at('msg').inner_html
|
51
|
+
h['committed_at'] = Time.parse(doc.at('date').inner_html).iso8601
|
52
|
+
return h
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def initial_checkout
|
59
|
+
log "Initial checkout of #{uri} to #{working_directory}"
|
60
|
+
log_command("svn co -q #{uri} #{working_directory}" )
|
61
|
+
end
|
62
|
+
|
63
|
+
def update_to(revision=nil)
|
64
|
+
log "Updating to revision #{revision}"
|
65
|
+
log_command("cd #{working_directory} && svn up -q -r#{revision}" )
|
66
|
+
end
|
67
|
+
|
68
|
+
def log_command( cmd )
|
69
|
+
output = %x[ #{cmd} ]
|
70
|
+
if output.length > 0 then
|
71
|
+
output.split("\n").each { |l| log l.strip }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def already_out?
|
76
|
+
File.directory?(working_directory / ".svn")
|
77
|
+
end
|
78
|
+
|
79
|
+
def log(message)
|
80
|
+
Integrity.log(name) { message }
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Integrity
|
2
|
+
module SCM
|
3
|
+
|
4
|
+
class Subversion
|
5
|
+
|
6
|
+
class URI
|
7
|
+
def initialize(uri_string)
|
8
|
+
@uri = Addressable::URI.parse(uri_string)
|
9
|
+
end
|
10
|
+
|
11
|
+
def working_tree_path
|
12
|
+
path.gsub("/", "-")
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def path
|
17
|
+
path = @uri.path
|
18
|
+
path.gsub(/\~[a-zA-Z0-9]*\//, "").gsub(/^\//, "")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gforces-integrity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.9.
|
4
|
+
version: 0.1.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Nicol\xC3\xA1s Sanguinetti"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-08-25 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -243,6 +243,8 @@ files:
|
|
243
243
|
- lib/integrity/scm.rb
|
244
244
|
- lib/integrity/scm/git.rb
|
245
245
|
- lib/integrity/scm/git/uri.rb
|
246
|
+
- lib/integrity/scm/subversion.rb
|
247
|
+
- lib/integrity/scm/subversion/uri.rb
|
246
248
|
- public/buttons.css
|
247
249
|
- public/reset.css
|
248
250
|
- public/spinner.gif
|