code_cache 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/code_cache.rb +3 -3
- data/lib/code_cache/repo.rb +9 -3
- data/lib/code_cache/repo/git.rb +16 -11
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf939dd1b7522417b33a50aefe64cc8e50f5fd7a
|
4
|
+
data.tar.gz: ced2daf270974cd3f988d829abd271e6ebe4af6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af3dd36dc40e347b417e1730dfa6898b96f6d92947395e94c640f6e79f7301171be0a57524c79d6d46640bd9447ae2bab57b424aba9591285c2a61d6876f4869
|
7
|
+
data.tar.gz: c2e5151d8ebece993df6247468abd028801c73cb0ff65ebb2fa7388428ec469ba195e978320931a705f2e6aeee8c95eaff8e795570dcfea62c82b337992758c5
|
data/README.md
CHANGED
@@ -5,7 +5,8 @@ Version control checkout abstraction and cache.
|
|
5
5
|
|
6
6
|
repo = CodeCache.repo( repo_url )
|
7
7
|
begin
|
8
|
-
repo.checkout( :head, 'path/to/checkout' )
|
8
|
+
repo.checkout( :head, 'path/to/checkout' ) # checkout master
|
9
|
+
repo.checkout( :head, 'path/to/checkout', 'branch_name' ) # checkout specific branch
|
9
10
|
rescue => e
|
10
11
|
puts "Checkout failed"
|
11
12
|
end
|
data/lib/code_cache.rb
CHANGED
@@ -11,11 +11,11 @@ module CodeCache
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.repo(url)
|
14
|
+
def self.repo(url, options = {})
|
15
15
|
if self.identify(url) == :git
|
16
|
-
Repo::Git.new(url)
|
16
|
+
Repo::Git.new(url, options)
|
17
17
|
else
|
18
|
-
Repo::SVN.new(url)
|
18
|
+
Repo::SVN.new(url, options)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
data/lib/code_cache/repo.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'rbconfig'
|
3
|
+
require 'tmpdir'
|
2
4
|
|
3
5
|
module CodeCache
|
4
6
|
|
5
7
|
class Repo
|
6
|
-
|
8
|
+
|
7
9
|
attr_accessor :url, :cache
|
8
|
-
|
10
|
+
|
9
11
|
def initialize(url, options = {})
|
10
|
-
|
12
|
+
cache_dir = Dir.tmpdir() if RbConfig::CONFIG['host_os'].include? "ming"
|
13
|
+
@cache = options[:cache] || cache_dir || '/tmp/code_cache'
|
11
14
|
@url = url
|
12
15
|
|
13
16
|
check_repo(url)
|
@@ -52,5 +55,8 @@ module CodeCache
|
|
52
55
|
|
53
56
|
class CopyError < StandardError
|
54
57
|
end
|
58
|
+
|
59
|
+
class BranchNotFound < StandardError
|
60
|
+
end
|
55
61
|
|
56
62
|
end
|
data/lib/code_cache/repo/git.rb
CHANGED
@@ -10,7 +10,7 @@ module CodeCache
|
|
10
10
|
# Split the url into a unique array for the cache path
|
11
11
|
def split_url
|
12
12
|
match = /(?:(?:git|ssh)@(.*):|(?:https?:\/\/(.*?)\/))(.*).git/.match(url)
|
13
|
-
match.captures.compact
|
13
|
+
match.captures.compact if match
|
14
14
|
end
|
15
15
|
|
16
16
|
# Check access to the repo in question
|
@@ -23,11 +23,10 @@ module CodeCache
|
|
23
23
|
|
24
24
|
# Checkout a particular revision from the repo into the destination
|
25
25
|
# Caches the checkout in the process
|
26
|
-
def checkout( revision, destination )
|
26
|
+
def checkout( revision, destination , branch=nil)
|
27
27
|
|
28
|
-
if revision != :head
|
29
|
-
|
30
|
-
end
|
28
|
+
raise "Checking out anything other than the head of the default branch not supported" if revision != :head
|
29
|
+
raise "Not checking out, as #{destination} directory has another git repository" if !Dir["#{destination}/.git"].empty?
|
31
30
|
|
32
31
|
cache_destination = location_in_cache()
|
33
32
|
|
@@ -36,9 +35,8 @@ module CodeCache
|
|
36
35
|
|
37
36
|
puts "Cache: #{cache_destination}"
|
38
37
|
puts "Destination: #{destination}"
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
output = checkout_from_cache_to_destination(cache_destination, destination, revision, branch)
|
39
|
+
|
42
40
|
true
|
43
41
|
end
|
44
42
|
|
@@ -63,11 +61,18 @@ module CodeCache
|
|
63
61
|
{ :output => output, :status => status }
|
64
62
|
end
|
65
63
|
|
66
|
-
def checkout_from_cache_to_destination(cache_destination, destination, revision)
|
67
|
-
|
64
|
+
def checkout_from_cache_to_destination(cache_destination, destination, revision, branch)
|
65
|
+
if branch
|
66
|
+
output = `git clone --single-branch #{cache_destination} #{destination} -b #{branch} 2>&1`
|
67
|
+
else
|
68
|
+
output = `git clone --single-branch #{cache_destination} #{destination} 2>&1`
|
69
|
+
end
|
68
70
|
status = $? == 0
|
71
|
+
|
72
|
+
raise CodeCache::BranchNotFound if output.include? 'Could not find remote branch'
|
73
|
+
|
69
74
|
{ :output => output, :status => status }
|
70
75
|
end
|
71
76
|
|
72
77
|
end
|
73
|
-
end
|
78
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Buckhurst
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mixlib-shellout
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.2.7
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.2.7
|
27
41
|
description: Provides a simple api for checking out svn and git repositories. Caches
|
28
42
|
checkouts locally so that subsequent checkouts are optimised.
|
29
43
|
email: david.buckhurst@bbc.co.uk
|
@@ -31,11 +45,11 @@ executables: []
|
|
31
45
|
extensions: []
|
32
46
|
extra_rdoc_files: []
|
33
47
|
files:
|
34
|
-
- README.md
|
35
48
|
- lib/code_cache.rb
|
36
49
|
- lib/code_cache/repo.rb
|
37
50
|
- lib/code_cache/repo/git.rb
|
38
51
|
- lib/code_cache/repo/svn.rb
|
52
|
+
- README.md
|
39
53
|
homepage: https://github.com/bbc/code_cache
|
40
54
|
licenses:
|
41
55
|
- MIT
|
@@ -46,17 +60,17 @@ require_paths:
|
|
46
60
|
- lib
|
47
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
48
62
|
requirements:
|
49
|
-
- -
|
63
|
+
- - '>='
|
50
64
|
- !ruby/object:Gem::Version
|
51
65
|
version: '0'
|
52
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
67
|
requirements:
|
54
|
-
- -
|
68
|
+
- - '>='
|
55
69
|
- !ruby/object:Gem::Version
|
56
70
|
version: '0'
|
57
71
|
requirements: []
|
58
72
|
rubyforge_project:
|
59
|
-
rubygems_version: 2.
|
73
|
+
rubygems_version: 2.0.14
|
60
74
|
signing_key:
|
61
75
|
specification_version: 4
|
62
76
|
summary: Abstracts & caches svn & git operations
|