jugyo-grit 2.4.2

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.
@@ -0,0 +1,153 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'date'
4
+
5
+ #############################################################################
6
+ #
7
+ # Helper functions
8
+ #
9
+ #############################################################################
10
+
11
+ def name
12
+ @name ||= "grit"
13
+ end
14
+
15
+ def gem_name
16
+ @gem_name ||= "jugyo-#{name}"
17
+ end
18
+
19
+ def version
20
+ line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
21
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
22
+ end
23
+
24
+ def date
25
+ Date.today.to_s
26
+ end
27
+
28
+ def rubyforge_project
29
+ gem_name
30
+ end
31
+
32
+ def gemspec_file
33
+ "#{gem_name}.gemspec"
34
+ end
35
+
36
+ def gem_file
37
+ "#{gem_name}-#{version}.gem"
38
+ end
39
+
40
+ def replace_header(head, header_name)
41
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
42
+ end
43
+
44
+ #############################################################################
45
+ #
46
+ # Standard tasks
47
+ #
48
+ #############################################################################
49
+
50
+ task :default => :test
51
+
52
+ require 'rake/testtask'
53
+ Rake::TestTask.new(:test) do |test|
54
+ test.libs << 'lib' << 'test' << '.'
55
+ test.pattern = 'test/**/test_*.rb'
56
+ test.verbose = true
57
+ end
58
+
59
+ desc "Generate RCov test coverage and open in your browser"
60
+ task :coverage do
61
+ require 'rcov'
62
+ sh "rm -fr coverage"
63
+ sh "rcov test/test_*.rb"
64
+ sh "open coverage/index.html"
65
+ end
66
+
67
+ require 'rake/rdoctask'
68
+ Rake::RDocTask.new do |rdoc|
69
+ rdoc.rdoc_dir = 'rdoc'
70
+ rdoc.title = "#{name} #{version}"
71
+ rdoc.rdoc_files.include('README*')
72
+ rdoc.rdoc_files.include('lib/**/*.rb')
73
+ end
74
+
75
+ desc "Open an irb session preloaded with this library"
76
+ task :console do
77
+ sh "irb -rubygems -r ./lib/#{name}.rb"
78
+ end
79
+
80
+ #############################################################################
81
+ #
82
+ # Custom tasks (add your own tasks here)
83
+ #
84
+ #############################################################################
85
+
86
+ desc "Upload site to Rubyforge"
87
+ task :site do
88
+ sh "scp -r doc/* mojombo@grit.rubyforge.org:/var/www/gforge-projects/grit"
89
+ end
90
+
91
+ #############################################################################
92
+ #
93
+ # Packaging tasks
94
+ #
95
+ #############################################################################
96
+
97
+ task :release => :build do
98
+ unless `git branch` =~ /^\* master$/
99
+ puts "You must be on the master branch to release!"
100
+ exit!
101
+ end
102
+ sh "git commit --allow-empty -a -m 'Release #{version}'"
103
+ sh "git tag v#{version}"
104
+ sh "git push origin master"
105
+ sh "git push origin v#{version}"
106
+ sh "gem push pkg/#{gem_name}-#{version}.gem"
107
+ end
108
+
109
+ task :build => :gemspec do
110
+ sh "mkdir -p pkg"
111
+ sh "gem build #{gemspec_file}"
112
+ sh "mv #{gem_file} pkg"
113
+ end
114
+
115
+ task :gemspec => :validate do
116
+ # read spec file and split out manifest section
117
+ spec = File.read(gemspec_file)
118
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
119
+
120
+ # replace name version and date
121
+ replace_header(head, :gem_name)
122
+ replace_header(head, :version)
123
+ replace_header(head, :date)
124
+ #comment this out if your rubyforge_project has a different name
125
+ replace_header(head, :rubyforge_project)
126
+
127
+ # determine file list from git ls-files
128
+ files = `git ls-files`.
129
+ split("\n").
130
+ sort.
131
+ reject { |file| file =~ /^\./ }.
132
+ reject { |file| file =~ /^(rdoc|pkg|test)/ }.
133
+ map { |file| " #{file}" }.
134
+ join("\n")
135
+
136
+ # piece file back together and write
137
+ manifest = " s.files = %w[\n#{files}\n ]\n"
138
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
139
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
140
+ puts "Updated #{gemspec_file}"
141
+ end
142
+
143
+ task :validate do
144
+ libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
145
+ unless libfiles.empty?
146
+ puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
147
+ exit!
148
+ end
149
+ unless Dir['VERSION*'].empty?
150
+ puts "A `VERSION` file at root level violates Gem best practices."
151
+ exit!
152
+ end
153
+ end
@@ -0,0 +1,129 @@
1
+ require 'fileutils'
2
+ require 'benchmark'
3
+ require 'rubygems'
4
+ require 'ruby-prof'
5
+ require 'memcache'
6
+ require 'pp'
7
+
8
+
9
+ #require 'grit'
10
+ require 'lib/grit'
11
+
12
+ def main
13
+ @wbare = File.expand_path(File.join('test', 'dot_git'))
14
+
15
+ in_temp_dir do
16
+ #result = RubyProf.profile do
17
+
18
+ git = Grit::Repo.new('.')
19
+ puts Grit::VERSION
20
+
21
+ Grit::GitRuby.use_commit_db = true
22
+ #Grit::GitRuby.cache_client = MemCache.new 'localhost:11211', :namespace => 'grit'
23
+ #Grit.debug = true
24
+
25
+ #pp Grit::GitRuby.cache_client.stats
26
+
27
+ commit1 = '5e3ee1198672257164ce3fe31dea3e40848e68d5'
28
+ commit2 = 'ca8a30f5a7f0f163bbe3b6f0abf18a6c83b0687a'
29
+
30
+ Benchmark.bm(8) do |x|
31
+
32
+ run_code(x, 'packobj') do
33
+ @commit = git.commit('5e3ee1198672257164ce3fe31dea3e40848e68d5')
34
+ @tree = git.tree('cd7422af5a2e0fff3e94d6fb1a8fff03b2841881')
35
+ @blob = git.blob('4232d073306f01cf0b895864e5a5cfad7dd76fce')
36
+ @commit.parents[0].parents[0].parents[0]
37
+ end
38
+
39
+ run_code(x, 'commits 1') do
40
+ git.commits.size
41
+ end
42
+
43
+ run_code(x, 'commits 2') do
44
+ log = git.commits('master', 15)
45
+ log.size
46
+ log.size
47
+ log.first
48
+ git.commits('testing').map { |c| c.message }
49
+ end
50
+
51
+ run_code(x, 'big revlist') do
52
+ c = git.commits('master', 200)
53
+ end
54
+
55
+ run_code(x, 'log') do
56
+ log = git.log('master')
57
+ log.size
58
+ log.size
59
+ log.first
60
+ end
61
+
62
+ run_code(x, 'diff') do
63
+ c = git.diff(commit1, commit2)
64
+ end
65
+
66
+ run_code(x, 'commit-diff') do
67
+ c = git.commit_diff(commit1)
68
+ end
69
+
70
+ run_code(x, 'heads') do
71
+ c = git.heads.collect { |b| b.commit.id }
72
+ end
73
+
74
+ # run_code(x, 'config', 100) do
75
+ # c = git.config['user.name']
76
+ # c = git.config['user.email']
77
+ # end
78
+
79
+ #run_code(x, 'commit count') do
80
+ # c = git.commit_count('testing')
81
+ #end
82
+
83
+
84
+ end
85
+ #end
86
+
87
+ #printer = RubyProf::FlatPrinter.new(result)
88
+ #printer.print(STDOUT, 0)
89
+
90
+ end
91
+
92
+
93
+ end
94
+
95
+
96
+ def run_code(x, name, times = 30)
97
+ x.report(name.ljust(12)) do
98
+ for i in 1..times do
99
+ yield i
100
+ end
101
+ end
102
+
103
+ #end
104
+
105
+ # Print a graph profile to text
106
+ end
107
+
108
+ def new_file(name, contents)
109
+ File.open(name, 'w') do |f|
110
+ f.puts contents
111
+ end
112
+ end
113
+
114
+
115
+ def in_temp_dir(remove_after = true)
116
+ filename = 'git_test' + Time.now.to_i.to_s + rand(300).to_s.rjust(3, '0')
117
+ tmp_path = File.join("/tmp/", filename)
118
+ FileUtils.mkdir(tmp_path)
119
+ Dir.chdir tmp_path do
120
+ FileUtils.cp_r(@wbare, File.join(tmp_path, '.git'))
121
+ yield tmp_path
122
+ end
123
+ puts tmp_path
124
+ #FileUtils.rm_r(tmp_path) if remove_after
125
+ end
126
+
127
+ main()
128
+
129
+ ##pp Grit::GitRuby.cache_client.stats
@@ -0,0 +1,21 @@
1
+ Grit :
2
+ user system total real
3
+ packobj 0.030000 0.270000 1.380000 ( 1.507250)
4
+ commits 1 0.030000 0.070000 0.390000 ( 0.409931)
5
+ commits 2 0.110000 0.170000 0.860000 ( 0.896371)
6
+ log 0.350000 0.130000 0.850000 ( 0.875035)
7
+ diff 0.190000 0.140000 1.940000 ( 2.031911)
8
+ commit-diff 0.540000 0.220000 1.390000 ( 1.463839)
9
+ heads 0.010000 0.070000 0.390000 ( 0.413918)
10
+
11
+
12
+ Grit (with GitRuby) :
13
+
14
+ user system total real
15
+ packobj 0.050000 0.010000 0.060000 ( 0.078318)
16
+ commits 1 0.150000 0.010000 0.160000 ( 0.174296)
17
+ commits 2 0.440000 0.040000 0.480000 ( 0.522310)
18
+ log 0.490000 0.040000 0.530000 ( 0.538128)
19
+ diff 0.370000 0.230000 2.250000 ( 2.255974)
20
+ commit-diff 0.580000 0.260000 1.500000 ( 1.553000)
21
+ heads 0.020000 0.100000 0.430000 ( 0.455464)
@@ -0,0 +1,13 @@
1
+ require '../lib/grit'
2
+
3
+ count = 1
4
+ Dir.chdir("/Users/schacon/projects/atest") do
5
+ r = Grit::Repo.new('.')
6
+ while(count < 10) do
7
+ fname = Time.now.to_i.to_s + count.to_s
8
+ File.open(fname, 'w') { |f| f.write('hellor ' + fname) }
9
+ r.add(fname)
10
+ count += 1
11
+ end
12
+ r.commit_index('my commit')
13
+ end
@@ -0,0 +1,21 @@
1
+ require '../lib/grit'
2
+
3
+ count = 1
4
+ Dir.chdir("/Users/schacon/projects/atest") do
5
+ r = Grit::Repo.new('.')
6
+ i = r.index
7
+ while(count < 10) do
8
+ fname = Time.now.to_i.to_s + count.to_s
9
+ i.add(fname, 'hello ' + fname)
10
+ count += 1
11
+ end
12
+ count = 5
13
+ while(count < 10) do
14
+ puts "HELLO"
15
+ fname = Time.now.to_i.to_s + count.to_s
16
+ i.add('test/' + fname, 'hello ' + fname)
17
+ count += 1
18
+ end
19
+ puts i.commit('my commit')
20
+ puts i.inspect
21
+ end
@@ -0,0 +1,74 @@
1
+ Gem::Specification.new do |s|
2
+ s.specification_version = 2 if s.respond_to? :specification_version=
3
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
+ s.rubygems_version = '1.3.5'
5
+
6
+ s.name = 'jugyo-grit'
7
+ s.version = '2.4.2'
8
+ s.date = '2011-07-06'
9
+ s.rubyforge_project = 'jugyo-grit'
10
+
11
+ s.summary = "Ruby Git bindings."
12
+ s.description = "Grit is a Ruby library for extracting information from a git repository in an object oriented manner."
13
+
14
+ s.authors = ["Tom Preston-Werner", "Scott Chacon"]
15
+ s.email = 'tom@github.com'
16
+ s.homepage = 'http://github.com/mojombo/grit'
17
+
18
+ s.require_paths = %w[lib]
19
+
20
+ s.rdoc_options = ["--charset=UTF-8"]
21
+ s.extra_rdoc_files = %w[README.md LICENSE]
22
+
23
+ s.add_dependency('posix-spawn', "~> 0.3.6")
24
+ s.add_dependency('mime-types', "~> 1.15")
25
+ s.add_dependency('diff-lcs', "~> 1.1")
26
+
27
+ s.add_development_dependency('mocha')
28
+
29
+ # = MANIFEST =
30
+ s.files = %w[
31
+ API.txt
32
+ History.txt
33
+ LICENSE
34
+ PURE_TODO
35
+ README.md
36
+ Rakefile
37
+ benchmarks.rb
38
+ benchmarks.txt
39
+ examples/ex_add_commit.rb
40
+ examples/ex_index.rb
41
+ jugyo-grit.gemspec
42
+ lib/grit.rb
43
+ lib/grit/actor.rb
44
+ lib/grit/blame.rb
45
+ lib/grit/blob.rb
46
+ lib/grit/commit.rb
47
+ lib/grit/commit_stats.rb
48
+ lib/grit/config.rb
49
+ lib/grit/diff.rb
50
+ lib/grit/errors.rb
51
+ lib/grit/git-ruby.rb
52
+ lib/grit/git-ruby/commit_db.rb
53
+ lib/grit/git-ruby/git_object.rb
54
+ lib/grit/git-ruby/internal/file_window.rb
55
+ lib/grit/git-ruby/internal/loose.rb
56
+ lib/grit/git-ruby/internal/pack.rb
57
+ lib/grit/git-ruby/internal/raw_object.rb
58
+ lib/grit/git-ruby/repository.rb
59
+ lib/grit/git.rb
60
+ lib/grit/index.rb
61
+ lib/grit/lazy.rb
62
+ lib/grit/merge.rb
63
+ lib/grit/ref.rb
64
+ lib/grit/repo.rb
65
+ lib/grit/ruby1.9.rb
66
+ lib/grit/status.rb
67
+ lib/grit/submodule.rb
68
+ lib/grit/tag.rb
69
+ lib/grit/tree.rb
70
+ ]
71
+ # = MANIFEST =
72
+
73
+ s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
74
+ end
@@ -0,0 +1,75 @@
1
+ $:.unshift File.dirname(__FILE__) # For use/testing when no gem is installed
2
+
3
+ # core
4
+ require 'fileutils'
5
+ require 'time'
6
+
7
+ # stdlib
8
+ require 'timeout'
9
+ require 'logger'
10
+ require 'digest/sha1'
11
+
12
+ # third party
13
+
14
+ begin
15
+ require 'mime/types'
16
+ require 'rubygems'
17
+ rescue LoadError
18
+ require 'rubygems'
19
+ begin
20
+ gem "mime-types", ">=0"
21
+ require 'mime/types'
22
+ rescue Gem::LoadError => e
23
+ puts "WARNING: Gem LoadError: #{e.message}"
24
+ end
25
+ end
26
+
27
+ # ruby 1.9 compatibility
28
+ require 'grit/ruby1.9'
29
+
30
+ # internal requires
31
+ require 'grit/lazy'
32
+ require 'grit/errors'
33
+ require 'grit/git-ruby'
34
+ require 'grit/git' unless defined? Grit::Git
35
+ require 'grit/ref'
36
+ require 'grit/tag'
37
+ require 'grit/commit'
38
+ require 'grit/commit_stats'
39
+ require 'grit/tree'
40
+ require 'grit/blob'
41
+ require 'grit/actor'
42
+ require 'grit/diff'
43
+ require 'grit/config'
44
+ require 'grit/repo'
45
+ require 'grit/index'
46
+ require 'grit/status'
47
+ require 'grit/submodule'
48
+ require 'grit/blame'
49
+ require 'grit/merge'
50
+
51
+ module Grit
52
+ VERSION = '2.4.2'
53
+
54
+ class << self
55
+ # Set +debug+ to true to log all git calls and responses
56
+ attr_accessor :debug
57
+ attr_accessor :use_git_ruby
58
+ attr_accessor :no_quote
59
+
60
+ # The standard +logger+ for debugging git calls - this defaults to a plain STDOUT logger
61
+ attr_accessor :logger
62
+ def log(str)
63
+ logger.debug { str }
64
+ end
65
+ end
66
+ self.debug = false
67
+ self.use_git_ruby = true
68
+ self.no_quote = false
69
+
70
+ @logger ||= ::Logger.new(STDOUT)
71
+
72
+ def self.version
73
+ VERSION
74
+ end
75
+ end