transparent_git 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.lre +19 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +29 -0
- data/VERSION +1 -1
- data/lib/run_specs.rb +47 -0
- data/lib/transparent_git.rb +7 -89
- data/lib/transparent_git/ext.rb +43 -0
- data/lib/transparent_git/remote_tracker.rb +80 -0
- data/lib/transparent_git/remote_trackers.rb +52 -0
- data/lib/transparent_git/repo.rb +82 -0
- data/spec/remote_tracker_spec.rb +39 -0
- data/spec/spec_helper.rb +55 -0
- data/transparent_git.gemspec +29 -2
- data/vol/repo_load_test.rb +1 -0
- data/vol/spec_setup.rb +17 -0
- data/vol/stuff.rb +20 -3
- metadata +80 -13
data/.lre
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
load "lib/transparent_git.rb"
|
2
|
+
load "lib/run_specs.rb"
|
3
|
+
|
4
|
+
LRE.watch(".*spec/.*.rb") do |f|
|
5
|
+
run_specs!(f)
|
6
|
+
end
|
7
|
+
|
8
|
+
LRE.watch(".*lib/.*.rb") do |f|
|
9
|
+
load(f)
|
10
|
+
run_specs!(f)
|
11
|
+
end
|
12
|
+
|
13
|
+
LRE.watch(".*spec_helper.*") do |f|
|
14
|
+
load f
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'repl_index'
|
18
|
+
|
19
|
+
LRE.watch_dirs += ["C:\\Ruby192\\lib\\ruby\\gems\\1.9.1\\gems\\grit-2.5.0\\lib"]
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,25 +1,54 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
andand (1.3.1)
|
5
|
+
diff-lcs (1.1.3)
|
4
6
|
facets (2.9.1)
|
5
7
|
fattr (2.2.1)
|
6
8
|
git (1.2.5)
|
9
|
+
grit (2.5.0)
|
10
|
+
diff-lcs (~> 1.1)
|
11
|
+
mime-types (~> 1.15)
|
12
|
+
posix-spawn (~> 0.3.6)
|
7
13
|
jeweler (1.5.2)
|
8
14
|
bundler (~> 1.0.0)
|
9
15
|
git (>= 1.2.5)
|
10
16
|
rake
|
17
|
+
lre (0.3.0)
|
18
|
+
fattr
|
19
|
+
mharris_ext
|
20
|
+
rake (>= 0.8.7)
|
21
|
+
watchr
|
11
22
|
mharris_ext (1.5.0)
|
12
23
|
facets
|
13
24
|
fattr
|
25
|
+
mime-types (1.18)
|
26
|
+
posix-spawn (0.3.6)
|
14
27
|
rake (0.9.2.2)
|
15
28
|
rcov (0.9.9)
|
29
|
+
repl_index (0.0.1)
|
30
|
+
mharris_ext
|
31
|
+
rspec (2.3.0)
|
32
|
+
rspec-core (~> 2.3.0)
|
33
|
+
rspec-expectations (~> 2.3.0)
|
34
|
+
rspec-mocks (~> 2.3.0)
|
35
|
+
rspec-core (2.3.1)
|
36
|
+
rspec-expectations (2.3.0)
|
37
|
+
diff-lcs (~> 1.1.2)
|
38
|
+
rspec-mocks (2.3.0)
|
39
|
+
watchr (0.7)
|
16
40
|
|
17
41
|
PLATFORMS
|
18
42
|
x86-mingw32
|
19
43
|
|
20
44
|
DEPENDENCIES
|
45
|
+
andand
|
21
46
|
bundler (~> 1.0.0)
|
22
47
|
fattr
|
48
|
+
grit
|
23
49
|
jeweler (~> 1.5.2)
|
50
|
+
lre
|
24
51
|
mharris_ext
|
25
52
|
rcov
|
53
|
+
repl_index
|
54
|
+
rspec (~> 2.3.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/run_specs.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
$run_all_specs_each_time = false
|
2
|
+
|
3
|
+
def run_specs!(f=nil)
|
4
|
+
return unless f =~ /_spec\.rb/
|
5
|
+
orig_f = f
|
6
|
+
run_files = lambda do |fs|
|
7
|
+
RSpec.instance_eval { @configuration = RSpec::Core::Configuration.new }
|
8
|
+
RSpec::world.instance_eval { @example_groups = [] }
|
9
|
+
fs.each { |f| load f }
|
10
|
+
RSpec::Core::Runner.run([], $stderr, $stdout)
|
11
|
+
end
|
12
|
+
|
13
|
+
if f && !(f =~ /spec/i)
|
14
|
+
b = File.basename(f).split(".").first
|
15
|
+
f = "spec/#{b}_spec.rb"
|
16
|
+
if FileTest.exists?(f)
|
17
|
+
# nothing
|
18
|
+
elsif orig_f =~ /field_defs/
|
19
|
+
f = "spec/field_defs_spec.rb"
|
20
|
+
else
|
21
|
+
f = nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
all = Dir["spec/*_spec.rb"]
|
26
|
+
|
27
|
+
if $run_all_specs_each_time
|
28
|
+
#run_files[all]
|
29
|
+
elsif f
|
30
|
+
run_files[[f]]
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def run_all_specs!(ops={})
|
36
|
+
return unless ops[:force]
|
37
|
+
run_files = lambda do |fs|
|
38
|
+
RSpec.instance_eval { @configuration = RSpec::Core::Configuration.new }
|
39
|
+
RSpec::world.instance_eval { @example_groups = [] }
|
40
|
+
fs.each { |f| load f }
|
41
|
+
RSpec::Core::Runner.run([], $stderr, $stdout)
|
42
|
+
end
|
43
|
+
|
44
|
+
all = Dir["spec/**/*_spec.rb"]
|
45
|
+
|
46
|
+
run_files[all]
|
47
|
+
end
|
data/lib/transparent_git.rb
CHANGED
@@ -2,99 +2,17 @@ require 'mharris_ext'
|
|
2
2
|
require 'fileutils'
|
3
3
|
require 'yaml'
|
4
4
|
|
5
|
-
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
Dir.chdir(dir)
|
11
|
-
yield
|
12
|
-
ensure
|
13
|
-
Dir.chdir(old)
|
14
|
-
end
|
15
|
-
|
16
|
-
class Object
|
17
|
-
def blank?
|
18
|
-
to_s.strip == ''
|
19
|
-
end
|
20
|
-
def present?
|
21
|
-
!blank?
|
5
|
+
module TransparentGit
|
6
|
+
def self.load_repo!
|
7
|
+
%w(repo).each do |f|
|
8
|
+
load File.expand_path(File.dirname(__FILE__)) + "/transparent_git/#{f}.rb"
|
9
|
+
end
|
22
10
|
end
|
23
11
|
end
|
24
12
|
|
25
|
-
|
26
|
-
|
27
|
-
attr_accessor :repo_holding_dir, :name, :working_dir
|
28
|
-
fattr(:repo_dir) { "#{repo_holding_dir}/#{name}" }
|
29
|
-
fattr(:name) do
|
30
|
-
working_dir.gsub(/(:|\\|\/)/,"_")
|
31
|
-
end
|
32
|
-
def setup_env!
|
33
|
-
ENV['GIT_DIR'] = "#{repo_dir}"
|
34
|
-
ENV['GIT_WORK_TREE'] = working_dir
|
35
|
-
end
|
36
|
-
def commit_current_state!
|
37
|
-
puts "doing #{working_dir}"
|
38
|
-
setup_env!
|
39
|
-
FileUtils.mkdir_p(repo_holding_dir)
|
40
|
-
|
41
|
-
lock = "#{repo_dir}/refs/heads/master.lock"
|
42
|
-
FileUtils.rm(lock) if FileTest.exist?(lock)
|
43
|
-
|
44
|
-
ec "#{git} init"
|
45
|
-
ec "#{git} add -u"
|
46
|
-
ec "#{git} add ."
|
47
|
-
ec "#{git} commit -m \"Current State #{Time.now}\""
|
48
|
-
end
|
13
|
+
%w(ext remote_tracker remote_trackers).each do |f|
|
14
|
+
load File.expand_path(File.dirname(__FILE__)) + "/transparent_git/#{f}.rb"
|
49
15
|
end
|
50
16
|
|
51
|
-
class RemoteTrackers
|
52
|
-
include FromHash
|
53
|
-
fattr(:list) { [] }
|
54
|
-
fattr(:interval) { 10 }
|
55
|
-
fattr(:repo_holding_dir) { File.expand_path("~/repo_holding") }
|
56
|
-
def add(ops)
|
57
|
-
ops = {:repo_holding_dir => repo_holding_dir}.merge(ops)
|
58
|
-
res = RemoteTracker.new(ops)
|
59
|
-
list << res
|
60
|
-
end
|
61
|
-
def run_once!
|
62
|
-
list.each do |t|
|
63
|
-
t.commit_current_state!
|
64
|
-
end
|
65
|
-
end
|
66
|
-
def run_loop!
|
67
|
-
loop do
|
68
|
-
run_once!
|
69
|
-
sleep(interval.to_i)
|
70
|
-
end
|
71
|
-
end
|
72
17
|
|
73
|
-
class << self
|
74
|
-
def create_from_yaml(f)
|
75
|
-
str = File.read(f)
|
76
|
-
puts str
|
77
|
-
raise "file is empty" if str.blank?
|
78
18
|
|
79
|
-
h = YAML::load(str)
|
80
|
-
puts h.inspect
|
81
|
-
|
82
|
-
res = new
|
83
|
-
|
84
|
-
if h.kind_of?(Hash)
|
85
|
-
repos = h.delete('repos')
|
86
|
-
raise "no repos given" unless repos
|
87
|
-
res.from_hash(h)
|
88
|
-
repos.each do |repo|
|
89
|
-
res.add(repo)
|
90
|
-
end
|
91
|
-
else
|
92
|
-
repos = str.split("\n").map { |x| x.strip }.select { |x| x.present? }
|
93
|
-
repos.each do |r|
|
94
|
-
res.add :working_dir => r
|
95
|
-
end
|
96
|
-
end
|
97
|
-
res
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
def git(*args)
|
2
|
+
exe = "c:/progra~1/git/bin/git"
|
3
|
+
if args.empty?
|
4
|
+
exe
|
5
|
+
else
|
6
|
+
str = args.join(" ")
|
7
|
+
cmd = "#{exe} #{str}"
|
8
|
+
res = ec cmd
|
9
|
+
raise "cmd: #{cmd}\nres: #{res}" if res =~ /(error|fatal)/i || $?.exitstatus != 0
|
10
|
+
res
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def with_chdir(dir)
|
15
|
+
puts "chdir to #{dir}"
|
16
|
+
old = Dir.getwd
|
17
|
+
Dir.chdir(dir)
|
18
|
+
yield
|
19
|
+
ensure
|
20
|
+
Dir.chdir(old)
|
21
|
+
end
|
22
|
+
|
23
|
+
class Object
|
24
|
+
def blank?
|
25
|
+
to_s.strip == ''
|
26
|
+
end
|
27
|
+
def present?
|
28
|
+
!blank?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class String
|
33
|
+
def to_file_url
|
34
|
+
res = gsub("\\","/").gsub("c:","/c")
|
35
|
+
"file://#{res}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class Object
|
40
|
+
def klass
|
41
|
+
self.class
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module TransparentGit
|
2
|
+
class RemoteTracker
|
3
|
+
include FromHash
|
4
|
+
attr_accessor :repo_holding_dir, :name, :working_dir
|
5
|
+
fattr(:repo_dir) { "#{repo_holding_dir}/#{name}" }
|
6
|
+
fattr(:name) do
|
7
|
+
working_dir.gsub(/(:|\\|\/)/,"_")
|
8
|
+
end
|
9
|
+
|
10
|
+
def working_dir_repo?
|
11
|
+
FileTest.exist? "#{working_dir}/.git"
|
12
|
+
end
|
13
|
+
def repo_exists?
|
14
|
+
FileTest.exist? "#{repo_dir}/config"
|
15
|
+
end
|
16
|
+
|
17
|
+
def setup_env!
|
18
|
+
puts "setting env"
|
19
|
+
ENV['GIT_DIR'] = repo_dir
|
20
|
+
ENV['GIT_WORK_TREE'] = working_dir
|
21
|
+
|
22
|
+
if block_given?
|
23
|
+
yield
|
24
|
+
ENV.delete('GIT_DIR')
|
25
|
+
ENV.delete('GIT_WORK_TREE')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
def create_repo!
|
29
|
+
FileUtils.mkdir_p(repo_holding_dir)
|
30
|
+
if working_dir_repo? && false
|
31
|
+
git :clone, working_dir.to_file_url,repo_dir,"--mirror"
|
32
|
+
git :branch, :transparent_git
|
33
|
+
|
34
|
+
git :remote, :add, :tg_origin, working_dir.to_file_url
|
35
|
+
git :fetch, :tg_origin
|
36
|
+
|
37
|
+
#git :checkout, :master
|
38
|
+
#git "checkout transparent_git"
|
39
|
+
|
40
|
+
File.create("#{repo_dir}/HEAD","ref: refs/heads/transparent_git")
|
41
|
+
else
|
42
|
+
git :init
|
43
|
+
end
|
44
|
+
end
|
45
|
+
def setup_repo!
|
46
|
+
create_repo! unless repo_exists?
|
47
|
+
|
48
|
+
lock = "#{repo_dir}/refs/heads/master.lock"
|
49
|
+
FileUtils.rm(lock) if FileTest.exist?(lock)
|
50
|
+
end
|
51
|
+
def delete_repo!
|
52
|
+
FileUtils.rm_r(repo_dir) if FileTest.exists?(repo_dir)
|
53
|
+
end
|
54
|
+
|
55
|
+
def commit_current_state!
|
56
|
+
puts "doing #{working_dir}"
|
57
|
+
|
58
|
+
existed = repo_exists?
|
59
|
+
|
60
|
+
setup_env! do
|
61
|
+
setup_repo!
|
62
|
+
|
63
|
+
git "add -u"
|
64
|
+
git "add ."
|
65
|
+
eat_exceptions { git "commit -m \"Current State #{Time.now}\"" }
|
66
|
+
|
67
|
+
#git "branch -m master transparent_git" unless !existed
|
68
|
+
|
69
|
+
#puts "wait"
|
70
|
+
#STDIN.gets
|
71
|
+
|
72
|
+
#git "pull tg_origin master:master"
|
73
|
+
#git "fetch tg_origin"
|
74
|
+
#git "merge master tg_origin/master"
|
75
|
+
|
76
|
+
#puts 'done'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module TransparentGit
|
2
|
+
class RemoteTrackers
|
3
|
+
include FromHash
|
4
|
+
fattr(:list) { [] }
|
5
|
+
fattr(:interval) { 10 }
|
6
|
+
fattr(:repo_holding_dir) { File.expand_path("~/repo_holding") }
|
7
|
+
def add(ops)
|
8
|
+
ops = {:repo_holding_dir => repo_holding_dir}.merge(ops)
|
9
|
+
res = RemoteTracker.new(ops)
|
10
|
+
list << res
|
11
|
+
end
|
12
|
+
def run_once!
|
13
|
+
list.each do |t|
|
14
|
+
t.commit_current_state!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
def run_loop!
|
18
|
+
loop do
|
19
|
+
run_once!
|
20
|
+
sleep(interval.to_i)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def create_from_yaml(f)
|
26
|
+
str = File.read(f)
|
27
|
+
puts str
|
28
|
+
raise "file is empty" if str.blank?
|
29
|
+
|
30
|
+
h = YAML::load(str)
|
31
|
+
puts h.inspect
|
32
|
+
|
33
|
+
res = new
|
34
|
+
|
35
|
+
if h.kind_of?(Hash)
|
36
|
+
repos = h.delete('repos')
|
37
|
+
raise "no repos given" unless repos
|
38
|
+
res.from_hash(h)
|
39
|
+
repos.each do |repo|
|
40
|
+
res.add(repo)
|
41
|
+
end
|
42
|
+
else
|
43
|
+
repos = str.split("\n").map { |x| x.strip }.select { |x| x.present? }
|
44
|
+
repos.each do |r|
|
45
|
+
res.add :working_dir => r
|
46
|
+
end
|
47
|
+
end
|
48
|
+
res
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'grit'
|
2
|
+
require 'andand'
|
3
|
+
|
4
|
+
|
5
|
+
Grit::Git.git_binary = "C:\\progra~1\\Git\\bin\\git.exe"
|
6
|
+
Grit::Git.git_timeout = 999
|
7
|
+
|
8
|
+
class String
|
9
|
+
def stripped_chars
|
10
|
+
self.encode("UTF-8", :invalid => :replace, :undef => :replace)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class POChange
|
15
|
+
include FromHash
|
16
|
+
attr_accessor :curr, :prev, :name, :time, :commit_hash
|
17
|
+
def to_s
|
18
|
+
"#{name}: #{prev.andand.strip}|#{curr.andand.strip}"
|
19
|
+
end
|
20
|
+
def to_json
|
21
|
+
{:curr => curr.andand.strip, :prev => prev.andand.strip, :file => name, :time => time, :commit_hash => commit_hash}
|
22
|
+
end
|
23
|
+
def self.from_diff(commit,diff)
|
24
|
+
new(:curr => diff.b_blob.andand.data.andand.stripped_chars, :prev => diff.a_blob.andand.data.andand.stripped_chars,
|
25
|
+
:name => diff.a_path, :time => commit.committed_date, :commit_hash => commit.id)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module Grit
|
30
|
+
class Repo
|
31
|
+
def changes_for_commit(commit)
|
32
|
+
commit.diffs.map do |diff|
|
33
|
+
POChange.from_diff(commit,diff)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
fattr(:bad_commit_hashes) do
|
37
|
+
#res = all_commits[-6..-1].map { |x| x.id }
|
38
|
+
res = []
|
39
|
+
res += ['cd633e4e04bab243d95a0be296642c1172b1a770','2246825a104b01a9ac055f4a769365dd0fdeebb6','64d41f78c239c7e315173b667b05281b27386b84']
|
40
|
+
res += ['bdd1d27fb2df2e7cf4bcefc66a4d543fd6a70fa4','d28341453ceed15769e7862b0db4448e4005ca16','e9186de39aabc34fc555412b01496f4abb3abc2b']
|
41
|
+
res += ['039c6d553901873f7cbe5fbd4c81e3bb4badbdae','9122c515e2ca96b0132dac434ffa70c4a53d48ec']
|
42
|
+
res
|
43
|
+
end
|
44
|
+
def good_commits
|
45
|
+
all_commits.reject { |x| bad_commit_hashes.include?(x.id) }
|
46
|
+
end
|
47
|
+
def latest_files
|
48
|
+
t = commits('master',1).first.tree
|
49
|
+
res = []
|
50
|
+
each_tree_file(t) { |name,blob| res << RepoFile.new(:file => name, :body => blob.data.stripped_chars) }
|
51
|
+
res
|
52
|
+
end
|
53
|
+
def changes(ops)
|
54
|
+
branch = ops[:branch] || 'master'
|
55
|
+
num_commits = ops[:end] - ops[:start] + 1
|
56
|
+
cs = commits(branch,num_commits,ops[:start])
|
57
|
+
cs = cs.reject { |x| bad_commit_hashes.include?(x.id) }
|
58
|
+
cs.map { |x| changes_for_commit(x) }.flatten
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def each_tree_file(tree,prefix=nil,&b)
|
64
|
+
tree.contents.each do |obj|
|
65
|
+
if obj.respond_to?(:contents)
|
66
|
+
new_prefix = [prefix,obj.name].select { |x| x }.join("/")
|
67
|
+
each_tree_file(obj,new_prefix,&b)
|
68
|
+
else
|
69
|
+
name = [prefix,obj.name].select { |x| x }.join("/")
|
70
|
+
yield(name,obj)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
class RepoFile
|
77
|
+
include FromHash
|
78
|
+
attr_accessor :file, :body
|
79
|
+
def to_json
|
80
|
+
{:file => file, :body => body}
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe TransparentGit do
|
4
|
+
describe 'RemoteTracker' do
|
5
|
+
describe 'docs' do
|
6
|
+
before do
|
7
|
+
test_repos.setup_initial!
|
8
|
+
tracker.commit_current_state!
|
9
|
+
end
|
10
|
+
let(:test_repos) { TestRepos.get(:docs) }
|
11
|
+
let(:tracker) { test_repos.tracker }
|
12
|
+
|
13
|
+
it 'tracking repo has 1 commit' do
|
14
|
+
test_repos.tracking_repo.commits.size.should == 1
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'after a change' do
|
18
|
+
before do
|
19
|
+
test_repos.append("base.txt","abcxyz")
|
20
|
+
tracker.commit_current_state!
|
21
|
+
end
|
22
|
+
|
23
|
+
fattr(:change) { test_repos.tracking_repo.changes(:start => 0, :end => 99)[-1] }
|
24
|
+
|
25
|
+
it 'tracking repo has 2 commits' do
|
26
|
+
test_repos.tracking_repo.commits.size.should == 2
|
27
|
+
end
|
28
|
+
it '2nd commit is base.txt' do
|
29
|
+
change.name.should == 'base.txt'
|
30
|
+
exp = change.prev + "\nabcxyz\n"
|
31
|
+
change.curr.should == exp
|
32
|
+
end
|
33
|
+
it '2nd commit is correct text' do
|
34
|
+
change.curr.should == (change.prev + "\nabcxyz\n")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
#require 'ansicon'
|
5
|
+
|
6
|
+
|
7
|
+
# Requires supporting files with custom matchers and macros, etc,
|
8
|
+
# in ./support/ and its subdirectories.
|
9
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f }
|
10
|
+
|
11
|
+
class TestRepos
|
12
|
+
include FromHash
|
13
|
+
attr_accessor :name
|
14
|
+
fattr(:working_dir) { klass.get_dir(name) }
|
15
|
+
|
16
|
+
def setup_initial!
|
17
|
+
tracker.delete_repo!
|
18
|
+
with_chdir(tracker.working_dir) do
|
19
|
+
git(:reset, :base)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
fattr(:tracker) do
|
24
|
+
TransparentGit::RemoteTracker.new(:repo_holding_dir => "c:/code/repo_holding", :working_dir => working_dir, :name => name)
|
25
|
+
end
|
26
|
+
|
27
|
+
fattr(:tracking_repo) do
|
28
|
+
puts "getting for repo dir #{tracker.repo_dir}"
|
29
|
+
res = Grit::Repo.new(tracker.repo_dir, :is_bare => true)
|
30
|
+
puts "got repo"
|
31
|
+
res
|
32
|
+
end
|
33
|
+
|
34
|
+
def append(f,line="stuff")
|
35
|
+
f = "#{working_dir}/#{f}"
|
36
|
+
File.append(f,"\n#{line}\n")
|
37
|
+
end
|
38
|
+
|
39
|
+
class << self
|
40
|
+
def root_dir
|
41
|
+
"c:/code/transparent_git/spec/test_repos"
|
42
|
+
end
|
43
|
+
def get_dir(name)
|
44
|
+
"#{root_dir}/#{name}"
|
45
|
+
end
|
46
|
+
def get(name)
|
47
|
+
new(:name => name)
|
48
|
+
end
|
49
|
+
def method_missing(sym,*args,&b)
|
50
|
+
new.send(sym,*args,&b)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
TransparentGit.load_repo!
|
data/transparent_git.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{transparent_git}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mike Harris"]
|
12
|
-
s.date = %q{2012-
|
12
|
+
s.date = %q{2012-09-04}
|
13
13
|
s.default_executable = %q{remote_track}
|
14
14
|
s.description = %q{transparent_git}
|
15
15
|
s.email = %q{mharris@indians.com}
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
]
|
21
21
|
s.files = [
|
22
22
|
".document",
|
23
|
+
".lre",
|
23
24
|
"Gemfile",
|
24
25
|
"Gemfile.lock",
|
25
26
|
"LICENSE.txt",
|
@@ -27,12 +28,21 @@ Gem::Specification.new do |s|
|
|
27
28
|
"Rakefile",
|
28
29
|
"VERSION",
|
29
30
|
"bin/remote_track",
|
31
|
+
"lib/run_specs.rb",
|
30
32
|
"lib/transparent_git.rb",
|
33
|
+
"lib/transparent_git/ext.rb",
|
34
|
+
"lib/transparent_git/remote_tracker.rb",
|
35
|
+
"lib/transparent_git/remote_trackers.rb",
|
36
|
+
"lib/transparent_git/repo.rb",
|
37
|
+
"spec/remote_tracker_spec.rb",
|
38
|
+
"spec/spec_helper.rb",
|
31
39
|
"test/helper.rb",
|
32
40
|
"test/sample.txt",
|
33
41
|
"test/sample.yaml",
|
34
42
|
"test/test_transparent_git.rb",
|
35
43
|
"transparent_git.gemspec",
|
44
|
+
"vol/repo_load_test.rb",
|
45
|
+
"vol/spec_setup.rb",
|
36
46
|
"vol/stuff.rb"
|
37
47
|
]
|
38
48
|
s.homepage = %q{http://github.com/mharris717/transparent_git}
|
@@ -41,6 +51,8 @@ Gem::Specification.new do |s|
|
|
41
51
|
s.rubygems_version = %q{1.5.2}
|
42
52
|
s.summary = %q{transparent_git}
|
43
53
|
s.test_files = [
|
54
|
+
"spec/remote_tracker_spec.rb",
|
55
|
+
"spec/spec_helper.rb",
|
44
56
|
"test/helper.rb",
|
45
57
|
"test/test_transparent_git.rb"
|
46
58
|
]
|
@@ -51,22 +63,37 @@ Gem::Specification.new do |s|
|
|
51
63
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
52
64
|
s.add_runtime_dependency(%q<mharris_ext>, [">= 0"])
|
53
65
|
s.add_runtime_dependency(%q<fattr>, [">= 0"])
|
66
|
+
s.add_runtime_dependency(%q<andand>, [">= 0"])
|
54
67
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
55
68
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
56
69
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
70
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
71
|
+
s.add_development_dependency(%q<grit>, [">= 0"])
|
72
|
+
s.add_development_dependency(%q<lre>, [">= 0"])
|
73
|
+
s.add_development_dependency(%q<repl_index>, [">= 0"])
|
57
74
|
else
|
58
75
|
s.add_dependency(%q<mharris_ext>, [">= 0"])
|
59
76
|
s.add_dependency(%q<fattr>, [">= 0"])
|
77
|
+
s.add_dependency(%q<andand>, [">= 0"])
|
60
78
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
61
79
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
62
80
|
s.add_dependency(%q<rcov>, [">= 0"])
|
81
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
82
|
+
s.add_dependency(%q<grit>, [">= 0"])
|
83
|
+
s.add_dependency(%q<lre>, [">= 0"])
|
84
|
+
s.add_dependency(%q<repl_index>, [">= 0"])
|
63
85
|
end
|
64
86
|
else
|
65
87
|
s.add_dependency(%q<mharris_ext>, [">= 0"])
|
66
88
|
s.add_dependency(%q<fattr>, [">= 0"])
|
89
|
+
s.add_dependency(%q<andand>, [">= 0"])
|
67
90
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
68
91
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
69
92
|
s.add_dependency(%q<rcov>, [">= 0"])
|
93
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
94
|
+
s.add_dependency(%q<grit>, [">= 0"])
|
95
|
+
s.add_dependency(%q<lre>, [">= 0"])
|
96
|
+
s.add_dependency(%q<repl_index>, [">= 0"])
|
70
97
|
end
|
71
98
|
end
|
72
99
|
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'andand'
|
data/vol/spec_setup.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class TestRepos
|
2
|
+
def root_dir
|
3
|
+
"c:/code/transparent_git/spec/test_repos"
|
4
|
+
end
|
5
|
+
def get_dir(name)
|
6
|
+
"#{root_dir}/#{name}"
|
7
|
+
end
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def method_missing(sym,*args,&b)
|
11
|
+
new.send(sym,*args,&b)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
tracker = TransparentGit::RemoteTracker.new(:repo_holding_dir => "c:/code/repo_holding", :working_dir => TestRepos.get_dir(:docs), :name => "docs")
|
17
|
+
tracker.commit_current_state!
|
data/vol/stuff.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
load File.dirname(__FILE__) + "/../lib/transparent_git.rb"
|
1
2
|
|
2
3
|
def test_junk
|
3
4
|
ENV['GIT_DIR'] = "#{dir}/.gitx"
|
@@ -14,9 +15,25 @@ def test_junk
|
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
begin
|
19
|
+
|
20
|
+
#FileUtils.rm_r "c:/code/repo_holding/tg_test" if FileTest.exist? "c:/code/repo_holding/tg_test"
|
21
|
+
|
22
|
+
#rt = RemoteTracker.new(:repo_holding_dir => "c:/code/repo_holding", :working_dir => "c:/code/transparent_git", :name => "tg_test")
|
23
|
+
#rt.commit_current_state!
|
24
|
+
|
25
|
+
rt = RemoteTracker.new(:repo_holding_dir => "c:/code/repo_holding", :working_dir => "c:/code/transparent_git", :name => "tg_test")
|
26
|
+
rt.commit_current_state!
|
27
|
+
|
28
|
+
rescue => exp
|
29
|
+
puts "ERROR"
|
30
|
+
puts exp.message #+ "\n" + exp.backtrace.join("\n")
|
31
|
+
puts "ERROR"
|
32
|
+
end
|
33
|
+
|
34
|
+
#git "checkout -b transparent_git2"
|
35
|
+
#rt = RemoteTrackers.create_from_yaml("test/sample.yaml")
|
36
|
+
#rt.commit_current_state!
|
20
37
|
#loop do
|
21
38
|
# rt.commit_current_state!
|
22
39
|
# sleep(4)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: transparent_git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-04 00:00:00.000000000 -04:00
|
13
13
|
default_executable: remote_track
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mharris_ext
|
17
|
-
requirement: &
|
17
|
+
requirement: &16626684 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *16626684
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: fattr
|
28
|
-
requirement: &
|
28
|
+
requirement: &16626384 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,21 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *16626384
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: andand
|
39
|
+
requirement: &16626084 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *16626084
|
37
48
|
- !ruby/object:Gem::Dependency
|
38
49
|
name: bundler
|
39
|
-
requirement: &
|
50
|
+
requirement: &16625760 !ruby/object:Gem::Requirement
|
40
51
|
none: false
|
41
52
|
requirements:
|
42
53
|
- - ~>
|
@@ -44,10 +55,10 @@ dependencies:
|
|
44
55
|
version: 1.0.0
|
45
56
|
type: :development
|
46
57
|
prerelease: false
|
47
|
-
version_requirements: *
|
58
|
+
version_requirements: *16625760
|
48
59
|
- !ruby/object:Gem::Dependency
|
49
60
|
name: jeweler
|
50
|
-
requirement: &
|
61
|
+
requirement: &16625460 !ruby/object:Gem::Requirement
|
51
62
|
none: false
|
52
63
|
requirements:
|
53
64
|
- - ~>
|
@@ -55,10 +66,54 @@ dependencies:
|
|
55
66
|
version: 1.5.2
|
56
67
|
type: :development
|
57
68
|
prerelease: false
|
58
|
-
version_requirements: *
|
69
|
+
version_requirements: *16625460
|
59
70
|
- !ruby/object:Gem::Dependency
|
60
71
|
name: rcov
|
61
|
-
requirement: &
|
72
|
+
requirement: &16625136 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *16625136
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec
|
83
|
+
requirement: &16624800 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 2.3.0
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *16624800
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: grit
|
94
|
+
requirement: &16624428 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
type: :development
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: *16624428
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: lre
|
105
|
+
requirement: &16623852 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
type: :development
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: *16623852
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: repl_index
|
116
|
+
requirement: &16623480 !ruby/object:Gem::Requirement
|
62
117
|
none: false
|
63
118
|
requirements:
|
64
119
|
- - ! '>='
|
@@ -66,7 +121,7 @@ dependencies:
|
|
66
121
|
version: '0'
|
67
122
|
type: :development
|
68
123
|
prerelease: false
|
69
|
-
version_requirements: *
|
124
|
+
version_requirements: *16623480
|
70
125
|
description: transparent_git
|
71
126
|
email: mharris@indians.com
|
72
127
|
executables:
|
@@ -77,6 +132,7 @@ extra_rdoc_files:
|
|
77
132
|
- README.rdoc
|
78
133
|
files:
|
79
134
|
- .document
|
135
|
+
- .lre
|
80
136
|
- Gemfile
|
81
137
|
- Gemfile.lock
|
82
138
|
- LICENSE.txt
|
@@ -84,12 +140,21 @@ files:
|
|
84
140
|
- Rakefile
|
85
141
|
- VERSION
|
86
142
|
- bin/remote_track
|
143
|
+
- lib/run_specs.rb
|
87
144
|
- lib/transparent_git.rb
|
145
|
+
- lib/transparent_git/ext.rb
|
146
|
+
- lib/transparent_git/remote_tracker.rb
|
147
|
+
- lib/transparent_git/remote_trackers.rb
|
148
|
+
- lib/transparent_git/repo.rb
|
149
|
+
- spec/remote_tracker_spec.rb
|
150
|
+
- spec/spec_helper.rb
|
88
151
|
- test/helper.rb
|
89
152
|
- test/sample.txt
|
90
153
|
- test/sample.yaml
|
91
154
|
- test/test_transparent_git.rb
|
92
155
|
- transparent_git.gemspec
|
156
|
+
- vol/repo_load_test.rb
|
157
|
+
- vol/spec_setup.rb
|
93
158
|
- vol/stuff.rb
|
94
159
|
has_rdoc: true
|
95
160
|
homepage: http://github.com/mharris717/transparent_git
|
@@ -107,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
172
|
version: '0'
|
108
173
|
segments:
|
109
174
|
- 0
|
110
|
-
hash: -
|
175
|
+
hash: -584960529
|
111
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
177
|
none: false
|
113
178
|
requirements:
|
@@ -121,5 +186,7 @@ signing_key:
|
|
121
186
|
specification_version: 3
|
122
187
|
summary: transparent_git
|
123
188
|
test_files:
|
189
|
+
- spec/remote_tracker_spec.rb
|
190
|
+
- spec/spec_helper.rb
|
124
191
|
- test/helper.rb
|
125
192
|
- test/test_transparent_git.rb
|