gitlab-grit 2.5.0 → 2.5.1
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.
Potentially problematic release.
This version of gitlab-grit might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/grit.rb +4 -0
- data/lib/grit/grep.rb +21 -0
- data/lib/grit_ext.rb +41 -0
- data/lib/grit_ext/actor.rb +15 -0
- data/lib/grit_ext/blob.rb +26 -0
- data/lib/grit_ext/commit.rb +15 -0
- data/lib/grit_ext/diff.rb +23 -0
- data/lib/grit_ext/tag.rb +10 -0
- data/lib/grit_ext/tree.rb +10 -0
- data/lib/grit_ext/version.rb +7 -0
- metadata +27 -13
- data/API.txt +0 -101
- data/History.txt +0 -163
- data/PURE_TODO +0 -35
- data/Rakefile +0 -149
- data/benchmarks.rb +0 -129
- data/benchmarks.txt +0 -21
- data/examples/ex_add_commit.rb +0 -13
- data/examples/ex_index.rb +0 -21
- data/grit.gemspec +0 -74
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f453ada29206a7deeb55fe63bba1105a9ee67fe5
|
4
|
+
data.tar.gz: d593185fb02934345a4835b3c5c2088aefb6d5fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 056b694f2fc7938a97c142461d3b29a493c0aba78344bf15808bf42b9cc42af0c2c437bb5852b9b22db65d057ff8abfb4b73c0caac14354efc0f1cf244c64031
|
7
|
+
data.tar.gz: d56d89a626aee898ffca47a4e08aa8fd85c75fe14f3bf9d0beff6ffe611b78a7e2ffaa56f63853224ef20b6bd4bb9ccb29a0b3e0f28694ca14be1e9932beaeeb
|
data/lib/grit.rb
CHANGED
data/lib/grit/grep.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Grit
|
2
|
+
|
3
|
+
class Grep
|
4
|
+
|
5
|
+
attr_reader :repo
|
6
|
+
attr_reader :filename
|
7
|
+
attr_reader :startline
|
8
|
+
attr_reader :content
|
9
|
+
attr_reader :is_binary
|
10
|
+
|
11
|
+
def initialize(repo, filename, startline, content, is_binary)
|
12
|
+
@repo = repo
|
13
|
+
@filename = filename
|
14
|
+
@startline = startline.to_i
|
15
|
+
@content = content
|
16
|
+
@is_binary = is_binary
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/lib/grit_ext.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require "charlock_holmes"
|
2
|
+
require "grit_ext/actor"
|
3
|
+
require "grit_ext/blob"
|
4
|
+
require "grit_ext/commit"
|
5
|
+
require "grit_ext/tree"
|
6
|
+
require "grit_ext/diff"
|
7
|
+
require "grit_ext/version"
|
8
|
+
|
9
|
+
module GritExt
|
10
|
+
extend self
|
11
|
+
|
12
|
+
def encode!(message)
|
13
|
+
return nil unless message.respond_to? :force_encoding
|
14
|
+
|
15
|
+
# if message is utf-8 encoding, just return it
|
16
|
+
message.force_encoding("UTF-8")
|
17
|
+
return message if message.valid_encoding?
|
18
|
+
|
19
|
+
# return message if message type is binary
|
20
|
+
detect = CharlockHolmes::EncodingDetector.detect(message)
|
21
|
+
return message.force_encoding("BINARY") if detect && detect[:type] == :binary
|
22
|
+
|
23
|
+
# encoding message to detect encoding
|
24
|
+
if detect && detect[:encoding]
|
25
|
+
message.force_encoding(detect[:encoding])
|
26
|
+
end
|
27
|
+
|
28
|
+
# encode and clean the bad chars
|
29
|
+
message.replace clean(message)
|
30
|
+
rescue
|
31
|
+
encoding = detect ? detect[:encoding] : "unknown"
|
32
|
+
"--broken encoding: #{encoding}"
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
def clean(message)
|
37
|
+
message.encode("UTF-16BE", :undef => :replace, :invalid => :replace, :replace => "")
|
38
|
+
.encode("UTF-8")
|
39
|
+
.gsub("\0".encode("UTF-8"), "")
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Grit
|
2
|
+
class Blob
|
3
|
+
|
4
|
+
alias_method :old_name, :name
|
5
|
+
alias_method :old_data, :data
|
6
|
+
|
7
|
+
def name
|
8
|
+
GritExt.encode! old_name
|
9
|
+
end
|
10
|
+
|
11
|
+
def data
|
12
|
+
GritExt.encode! old_data
|
13
|
+
end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
alias_method :old_blame, :blame
|
17
|
+
|
18
|
+
def blame(repo, commit, file)
|
19
|
+
old_blame(repo, commit, file).map do |b,lines|
|
20
|
+
[b, GritExt.encode!(lines.join('\n')).split('\n')]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Grit
|
2
|
+
class Diff
|
3
|
+
|
4
|
+
def old_path
|
5
|
+
GritExt.encode! @a_path
|
6
|
+
end
|
7
|
+
|
8
|
+
def new_path
|
9
|
+
GritExt.encode! @b_path
|
10
|
+
end
|
11
|
+
|
12
|
+
def diff
|
13
|
+
if @diff.nil?
|
14
|
+
@diff = ""
|
15
|
+
else
|
16
|
+
lines = @diff.lines.to_a
|
17
|
+
path = GritExt.encode! lines.shift(2).join
|
18
|
+
body = GritExt.encode! lines.join
|
19
|
+
@diff = path + body
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/grit_ext/tag.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-grit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Preston-Werner
|
@@ -12,6 +12,20 @@ bindir: bin
|
|
12
12
|
cert_chain: []
|
13
13
|
date: 2013-05-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: charlock_holmes
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.9
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 0.6.9
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: posix-spawn
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,17 +91,6 @@ extra_rdoc_files:
|
|
77
91
|
- README.md
|
78
92
|
- LICENSE
|
79
93
|
files:
|
80
|
-
- API.txt
|
81
|
-
- History.txt
|
82
|
-
- LICENSE
|
83
|
-
- PURE_TODO
|
84
|
-
- README.md
|
85
|
-
- Rakefile
|
86
|
-
- benchmarks.rb
|
87
|
-
- benchmarks.txt
|
88
|
-
- examples/ex_add_commit.rb
|
89
|
-
- examples/ex_index.rb
|
90
|
-
- grit.gemspec
|
91
94
|
- lib/grit.rb
|
92
95
|
- lib/grit/actor.rb
|
93
96
|
- lib/grit/blame.rb
|
@@ -106,6 +109,7 @@ files:
|
|
106
109
|
- lib/grit/git-ruby/internal/raw_object.rb
|
107
110
|
- lib/grit/git-ruby/repository.rb
|
108
111
|
- lib/grit/git.rb
|
112
|
+
- lib/grit/grep.rb
|
109
113
|
- lib/grit/index.rb
|
110
114
|
- lib/grit/lazy.rb
|
111
115
|
- lib/grit/merge.rb
|
@@ -116,6 +120,16 @@ files:
|
|
116
120
|
- lib/grit/submodule.rb
|
117
121
|
- lib/grit/tag.rb
|
118
122
|
- lib/grit/tree.rb
|
123
|
+
- lib/grit_ext.rb
|
124
|
+
- lib/grit_ext/actor.rb
|
125
|
+
- lib/grit_ext/blob.rb
|
126
|
+
- lib/grit_ext/commit.rb
|
127
|
+
- lib/grit_ext/diff.rb
|
128
|
+
- lib/grit_ext/tag.rb
|
129
|
+
- lib/grit_ext/tree.rb
|
130
|
+
- lib/grit_ext/version.rb
|
131
|
+
- README.md
|
132
|
+
- LICENSE
|
119
133
|
homepage: http://github.com/gitlabhq/grit
|
120
134
|
licenses:
|
121
135
|
- MIT
|
@@ -139,6 +153,6 @@ requirements: []
|
|
139
153
|
rubyforge_project:
|
140
154
|
rubygems_version: 2.0.3
|
141
155
|
signing_key:
|
142
|
-
specification_version:
|
156
|
+
specification_version: 4
|
143
157
|
summary: Ruby Git bindings.
|
144
158
|
test_files: []
|
data/API.txt
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
== TODO ==
|
2
|
-
|
3
|
-
* Add remote branch references (Grit::Remote)
|
4
|
-
* Add status - what is modified, staged
|
5
|
-
|
6
|
-
g.checkout('new_branch')
|
7
|
-
g.checkout(g.branch('new_branch'))
|
8
|
-
|
9
|
-
g.branch(name).merge(branch2)
|
10
|
-
g.branch(branch2).merge # merges HEAD with branch2
|
11
|
-
|
12
|
-
g.branch(name).in_branch(message) { # add files } # auto-commits
|
13
|
-
g.merge('new_branch')
|
14
|
-
g.merge('origin/remote_branch')
|
15
|
-
g.merge(b.branch('master'))
|
16
|
-
g.merge([branch1, branch2])
|
17
|
-
|
18
|
-
r = g.add_remote(name, uri) # Git::Remote
|
19
|
-
r = g.add_remote(name, Git::Base) # Git::Remote
|
20
|
-
|
21
|
-
g.remotes # array of Git::Remotes
|
22
|
-
g.remote(name).fetch
|
23
|
-
g.remote(name).remove
|
24
|
-
g.remote(name).merge
|
25
|
-
g.remote(name).merge(branch)
|
26
|
-
|
27
|
-
g.fetch
|
28
|
-
g.fetch(g.remotes.first)
|
29
|
-
|
30
|
-
g.pull
|
31
|
-
g.pull(Git::Repo, Git::Branch) # fetch and a merge
|
32
|
-
|
33
|
-
g.add_tag('tag_name') # returns Git::Tag
|
34
|
-
|
35
|
-
g.repack
|
36
|
-
|
37
|
-
g.push
|
38
|
-
g.push(g.remote('name'))
|
39
|
-
|
40
|
-
g.reset # defaults to HEAD
|
41
|
-
g.reset_hard(Git::Commit)
|
42
|
-
|
43
|
-
g.branch('new_branch') # creates new or fetches existing
|
44
|
-
g.branch('new_branch').checkout
|
45
|
-
g.branch('new_branch').delete
|
46
|
-
g.branch('existing_branch').checkout
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
require 'mojombo-grit'
|
53
|
-
|
54
|
-
include Grit
|
55
|
-
Grit.debug
|
56
|
-
Grit.use_pure_ruby
|
57
|
-
|
58
|
-
repo = Repo.new("/Users/tom/dev/grit")
|
59
|
-
|
60
|
-
= Commit Log
|
61
|
-
|
62
|
-
repo.commits('mybranch')
|
63
|
-
repo.commits('40d3057d09a7a4d61059bca9dca5ae698de58cbe')
|
64
|
-
repo.commits('v0.1')
|
65
|
-
|
66
|
-
repo.log('mybranch', 100, 20)
|
67
|
-
|
68
|
-
head = repo.commits.first
|
69
|
-
head.id
|
70
|
-
# => "e80bbd2ce67651aa18e57fb0b43618ad4baf7750"
|
71
|
-
head.parents
|
72
|
-
# => [#<Grit::Commit "91169e1f5fa4de2eaea3f176461f5dc784796769">]
|
73
|
-
head.tree
|
74
|
-
# => #<Grit::Tree "3536eb9abac69c3e4db583ad38f3d30f8db4771f">
|
75
|
-
head.author
|
76
|
-
# => #<Grit::Actor "Tom Preston-Werner <tom@mojombo.com>">
|
77
|
-
head.authored_date
|
78
|
-
# => Wed Oct 24 22:02:31 -0700 2007
|
79
|
-
head.committer
|
80
|
-
# => #<Grit::Actor "Tom Preston-Werner <tom@mojombo.com>">
|
81
|
-
head.committed_date
|
82
|
-
# => Wed Oct 24 22:02:31 -0700 2007
|
83
|
-
head.message
|
84
|
-
# => "add Actor inspect"
|
85
|
-
contents = tree.contents
|
86
|
-
# => [#<Grit::Blob "4ebc8aea50e0a67e000ba29a30809d0a7b9b2666">,
|
87
|
-
#<Grit::Blob "81d2c27608b352814cbe979a6acd678d30219678">,
|
88
|
-
#<Grit::Tree "c3d07b0083f01a6e1ac969a0f32b8d06f20c62e5">,
|
89
|
-
#<Grit::Tree "4d00fe177a8407dbbc64a24dbfc564762c0922d8">]
|
90
|
-
blob.id
|
91
|
-
# => "4ebc8aea50e0a67e000ba29a30809d0a7b9b2666"
|
92
|
-
blob.name
|
93
|
-
# => "README.txt"
|
94
|
-
blob.mode
|
95
|
-
# => "100644"
|
96
|
-
blob.size
|
97
|
-
# => 7726
|
98
|
-
blob.data
|
99
|
-
|
100
|
-
repo.blob("4ebc8aea50e0a67e000ba29a30809d0a7b9b2666")
|
101
|
-
# => #<Grit::Blob "4ebc8aea50e0a67e000ba29a30809d0a7b9b2666">
|
data/History.txt
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
== 2.5.0 / 2012-04-22
|
2
|
-
* Minor Enhancements
|
3
|
-
* 100% Git-compliant actor creation.
|
4
|
-
* Handle newlines in author/committer.
|
5
|
-
* Grit::Git check_applies/patch related methods take command hash.
|
6
|
-
* Tags api now resty.
|
7
|
-
* Remove all the grit jruby hacks in favor of updated posix-spawn.
|
8
|
-
* Add Grit::Commit#patch_id.
|
9
|
-
* Support large packfiles with index v2.
|
10
|
-
* Bug Fixes
|
11
|
-
* Fix Loose Objects with non-ASCII content in Ruby 1.9
|
12
|
-
* Fix bugs in Grit::Repo #objects, #commit_objects, and #diff_objects
|
13
|
-
due to passing multiple arguments in a single argv element.
|
14
|
-
* ruby rev_list passes --verify to native rev_parse in fallback.
|
15
|
-
* Git ls-tree raises on non-zero exit.
|
16
|
-
|
17
|
-
== 2.4.1 / 2011-01-13
|
18
|
-
* Minor Enhancements
|
19
|
-
* Grit::Process is used to implement Grit::Git#check_applies,
|
20
|
-
Grit::Git#get_patch, and Grit::Git#apply_patch.
|
21
|
-
|
22
|
-
== 2.4.0 / 2011-01-06
|
23
|
-
* Major Enhancements
|
24
|
-
* Add support for parsing git notes.
|
25
|
-
* Add `git cat-file --batch` support with Grit::Repo#batch.
|
26
|
-
* Grit::Process is a custom written external command invocation heavily
|
27
|
-
optimized for running git commands quickly and efficiently.
|
28
|
-
* Grit::Git#native takes an :input option for piping data into git
|
29
|
-
commands
|
30
|
-
* Grit::Git#native takes an :env option for setting the git child
|
31
|
-
process's
|
32
|
-
environment without futsing with the parent's environment.
|
33
|
-
* Grit::Git#native takes an :chdir option for setting the current working
|
34
|
-
directory (PWD) of the git child process.
|
35
|
-
* Grit::Git#native takes an :raise => true option that causes an exception
|
36
|
-
to be raised when the git child process exits non-zero.
|
37
|
-
* Minor Enhancements
|
38
|
-
* Grit::Index#commit supports custom committer/author names and dates.
|
39
|
-
* Performance enhancements with internal command output buffering.
|
40
|
-
* Reduce fork/execs needed to execute a smoke command from between 3-4
|
41
|
-
to 1.
|
42
|
-
* Git child processes are now properly parented under the grit Ruby
|
43
|
-
process instead of being dropped under init.
|
44
|
-
* Bug Fixes
|
45
|
-
* Zero-Padding issue in Grit::Index was fixed.
|
46
|
-
* Fix issue where Repo#diff skips the first diff (#42)
|
47
|
-
* Fix Repo.init_bare for repo names not ending in .git (#40)
|
48
|
-
* Fix a variety of process hangs when git stderr output or data written
|
49
|
-
to stdin exceeded PIPE_BUF bytes.
|
50
|
-
|
51
|
-
== 2.3.2 / 2011-01-06
|
52
|
-
* Erroneously released. SemVer violation and misc release screwups.
|
53
|
-
|
54
|
-
== 2.3.1
|
55
|
-
* Skipped for unknown reasons.
|
56
|
-
|
57
|
-
== 2.3.0 / 2010-09-29
|
58
|
-
* Minor Enhancements
|
59
|
-
* Add Grit::Repo.init.
|
60
|
-
* Bug Fixes
|
61
|
-
* Fix Ruby 1.9 compatibility (#24).
|
62
|
-
|
63
|
-
== 2.2.1 / 2010-08-23
|
64
|
-
* Bug Fixes
|
65
|
-
* Fix minor regression due to the changed default values in
|
66
|
-
Grit::Index#commit.
|
67
|
-
|
68
|
-
== 2.2.0 / 2010-08-19
|
69
|
-
* Minor Enhancements
|
70
|
-
* Add Grit::Index#delete to allow deletions of files from the index.
|
71
|
-
|
72
|
-
== 2.1.0 / 2010-08-04
|
73
|
-
* Major Enhancements
|
74
|
-
* Add support for parsing annotated tag objects.
|
75
|
-
* Add Grit::Repo#recent_tag_name for getting the latest tag name that is
|
76
|
-
reachable in a commit.
|
77
|
-
* Grit::Diff tracks renames properly if given the :M option.
|
78
|
-
* Grit::Commit#diffs and Grit::Commit.diffs both take a git options hash
|
79
|
-
that is passed to `git diff`.
|
80
|
-
* Minor Enhancements
|
81
|
-
* Allow diff to only take one sha
|
82
|
-
* Add merge commit diff support
|
83
|
-
* Pass along the options to Real Git on a rev-parse miss
|
84
|
-
* Raise NoSuchPath with no tree in ls_tree_path
|
85
|
-
* Make pure-ruby `ls-tree -r` work with commits
|
86
|
-
* Implement select_existing_objects
|
87
|
-
* Switch to RakeGem for build management
|
88
|
-
* Bug Fixes
|
89
|
-
* Add no_quote option for fixing tag listings.
|
90
|
-
* Raise custom exceptions on invalid tree objects.
|
91
|
-
* Fix Repo#diff (was throwing an error).
|
92
|
-
|
93
|
-
== 2.0.0 / 2009-10-27
|
94
|
-
* Major Enhancements
|
95
|
-
* All filesystem calls have been moved into Grit::Git to allow proxying
|
96
|
-
* Non-code changes
|
97
|
-
* Removed all trailing whitespace in code files
|
98
|
-
* Bug Fixes
|
99
|
-
* Repo.archive_tar_gz now passes -n option to gzip to be idempotent
|
100
|
-
* Fix RubyGit's diff to detect additions and deletions
|
101
|
-
[github.com/defunkt]
|
102
|
-
|
103
|
-
== 1.1.1 / 2009-03-31
|
104
|
-
* Changes
|
105
|
-
* Don't include test directory in gem package (it's too big)
|
106
|
-
|
107
|
-
== 1.1.0 / 2009-03-29
|
108
|
-
* Backwards breaking changes
|
109
|
-
* Diff#a_commit -> Diff#a_blob, Diff#b_commit -> Diff#b_blob
|
110
|
-
* Major Enhancments
|
111
|
-
* Ruby 1.9 compatibility [github.com/chapados, github.com/js]
|
112
|
-
* Minor Enhancements
|
113
|
-
* Convert readme to markdown
|
114
|
-
* Added a shortcut for commit_stats as Commit#stats [github.com/js]
|
115
|
-
* Add a #basename method to Submodule, Blob and Tree for retrieving the
|
116
|
-
name [github.com/js]
|
117
|
-
* Make Grit::Submodule grasp the concept of non-unix lineendings
|
118
|
-
[github.com/js]
|
119
|
-
* Added Repo#commit_deltas_from [github.com/js]
|
120
|
-
* do some mild shell escaping when running commands [github.com/js]
|
121
|
-
* Added two shortcut methods to Tree, for picking trees/blobs only
|
122
|
-
[github.com/Voker57]
|
123
|
-
* Added <=> method to Blob, needed for sorting tree [github.com/Voker57]
|
124
|
-
* Make the number of bytes to be read from git's stdout configurable
|
125
|
-
[github.com/josb]
|
126
|
-
* Repo.archive_to_file accepts extra parameters making plain zipping
|
127
|
-
possible [github.com/darwin]
|
128
|
-
* Handle commit stats that summarize commits with binary changes
|
129
|
-
[github.com/therealadam]
|
130
|
-
* Add a DiffStat class for easy access to diff stats
|
131
|
-
[github.com/therealadam]
|
132
|
-
* Don't split git logs that contain blank lines into two CommitStats
|
133
|
-
[github.com/therealadam]
|
134
|
-
* Add DiffStat#net for total change count [github.com/therealadam]
|
135
|
-
|
136
|
-
== 1.0.3 / 2009-02-13
|
137
|
-
* Minor Enhancements
|
138
|
-
* Added Grit::Commit#to_patch for plaintext formatted patches.
|
139
|
-
* Fixed Grit::Tag to work with annotated tags.
|
140
|
-
|
141
|
-
== 1.0.2 / 2009-02-10
|
142
|
-
* Minor Enhancements
|
143
|
-
* Implement Grit.version to use VERSION.yml file
|
144
|
-
|
145
|
-
== 1.0.1 / 2009-02-10
|
146
|
-
* Bug Fixes
|
147
|
-
* Add diff-lcs as a dependency
|
148
|
-
|
149
|
-
== 1.0.0 / 2009-01-27
|
150
|
-
* Tons of awesome in here. Also, we suck at updating the history.
|
151
|
-
* Let's do better at that from now on.
|
152
|
-
|
153
|
-
== 0.8.3 / 2008-07-07
|
154
|
-
* Capture stderr and log if debug is true (rsanheim)
|
155
|
-
|
156
|
-
== 0.8.2 / 2008-06-27
|
157
|
-
* Allow user provided logger (rsanheim)
|
158
|
-
|
159
|
-
== 0.8.0 / 2008-04-24
|
160
|
-
* Lots of fixes and additions
|
161
|
-
|
162
|
-
== 0.7.0 / 2008-01-07
|
163
|
-
* First public release!
|
data/PURE_TODO
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
This is a listing of all the places I can find that Grit actually does a
|
2
|
-
'git' system call. My goal is to add native Ruby versions of all of them.
|
3
|
-
|
4
|
-
Completed
|
5
|
-
===========================
|
6
|
-
** lib/grit/blob.rb:36: @size ||= @repo.git.cat_file({:s => true}, id).chomp.to_i
|
7
|
-
** lib/grit/blob.rb:43: @data ||= @repo.git.cat_file({:p => true}, id)
|
8
|
-
** lib/grit/tree.rb:16: output = repo.git.ls_tree({}, treeish, *paths)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
lib/grit/commit.rb:74: repo.git.rev_list({}, ref).strip.split("\n").size
|
13
|
-
lib/grit/commit.rb:92: output = repo.git.rev_list(actual_options, ref)
|
14
|
-
lib/grit/commit.rb:94: output = repo.git.rev_list(actual_options.merge(:all => true))
|
15
|
-
|
16
|
-
|
17
|
-
Next to do
|
18
|
-
===========================
|
19
|
-
lib/grit/tag.rb:28: output = repo.git.for_each_ref(actual_options, "refs/tags")
|
20
|
-
lib/grit/head.rb:37: output = repo.git.for_each_ref(actual_options, HEAD_PREFIX)
|
21
|
-
lib/grit/head.rb:50: self.new($1, repo.git.rev_parse(options, 'HEAD'))
|
22
|
-
lib/grit/config.rb:9: @repo.git.config({}, key, value)
|
23
|
-
lib/grit/config.rb:40: @repo.git.config(:list => true).split(/\n/)
|
24
|
-
|
25
|
-
|
26
|
-
May not be fast enough
|
27
|
-
=============================
|
28
|
-
lib/grit/blob.rb:58: data = repo.git.blame({:p => true}, commit, '--', file)
|
29
|
-
|
30
|
-
|
31
|
-
More Difficult
|
32
|
-
===========================
|
33
|
-
lib/grit/commit.rb:39: @id_abbrev ||= @repo.git.rev_parse({:short => true}, self.id).chomp
|
34
|
-
lib/grit/commit.rb:150: text = repo.git.diff({:full_index => true}, *paths)
|
35
|
-
lib/grit/commit.rb:156: diff = @repo.git.show({:full_index => true, :pretty => 'raw'}, @id)
|
data/Rakefile
DELETED
@@ -1,149 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'date'
|
4
|
-
|
5
|
-
#############################################################################
|
6
|
-
#
|
7
|
-
# Helper functions
|
8
|
-
#
|
9
|
-
#############################################################################
|
10
|
-
|
11
|
-
def name
|
12
|
-
@name ||= Dir['*.gemspec'].first.split('.').first
|
13
|
-
end
|
14
|
-
|
15
|
-
def version
|
16
|
-
line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
|
17
|
-
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
18
|
-
end
|
19
|
-
|
20
|
-
def date
|
21
|
-
Date.today.to_s
|
22
|
-
end
|
23
|
-
|
24
|
-
def rubyforge_project
|
25
|
-
name
|
26
|
-
end
|
27
|
-
|
28
|
-
def gemspec_file
|
29
|
-
"#{name}.gemspec"
|
30
|
-
end
|
31
|
-
|
32
|
-
def gem_file
|
33
|
-
"#{name}-#{version}.gem"
|
34
|
-
end
|
35
|
-
|
36
|
-
def replace_header(head, header_name)
|
37
|
-
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
38
|
-
end
|
39
|
-
|
40
|
-
#############################################################################
|
41
|
-
#
|
42
|
-
# Standard tasks
|
43
|
-
#
|
44
|
-
#############################################################################
|
45
|
-
|
46
|
-
task :default => :test
|
47
|
-
|
48
|
-
require 'rake/testtask'
|
49
|
-
Rake::TestTask.new(:test) do |test|
|
50
|
-
test.libs << 'lib' << 'test' << '.'
|
51
|
-
test.pattern = 'test/**/test_*.rb'
|
52
|
-
test.verbose = true
|
53
|
-
end
|
54
|
-
|
55
|
-
desc "Generate RCov test coverage and open in your browser"
|
56
|
-
task :coverage do
|
57
|
-
require 'rcov'
|
58
|
-
sh "rm -fr coverage"
|
59
|
-
sh "rcov test/test_*.rb"
|
60
|
-
sh "open coverage/index.html"
|
61
|
-
end
|
62
|
-
|
63
|
-
require 'rdoc/task'
|
64
|
-
Rake::RDocTask.new do |rdoc|
|
65
|
-
rdoc.rdoc_dir = 'rdoc'
|
66
|
-
rdoc.title = "#{name} #{version}"
|
67
|
-
rdoc.rdoc_files.include('README*')
|
68
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
69
|
-
end
|
70
|
-
|
71
|
-
desc "Open an irb session preloaded with this library"
|
72
|
-
task :console do
|
73
|
-
sh "irb -rubygems -r ./lib/#{name}.rb"
|
74
|
-
end
|
75
|
-
|
76
|
-
#############################################################################
|
77
|
-
#
|
78
|
-
# Custom tasks (add your own tasks here)
|
79
|
-
#
|
80
|
-
#############################################################################
|
81
|
-
|
82
|
-
desc "Upload site to Rubyforge"
|
83
|
-
task :site do
|
84
|
-
sh "scp -r doc/* mojombo@grit.rubyforge.org:/var/www/gforge-projects/grit"
|
85
|
-
end
|
86
|
-
|
87
|
-
#############################################################################
|
88
|
-
#
|
89
|
-
# Packaging tasks
|
90
|
-
#
|
91
|
-
#############################################################################
|
92
|
-
|
93
|
-
task :release => :build do
|
94
|
-
unless `git branch` =~ /^\* master$/
|
95
|
-
puts "You must be on the master branch to release!"
|
96
|
-
exit!
|
97
|
-
end
|
98
|
-
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
99
|
-
sh "git tag v#{version}"
|
100
|
-
sh "git push origin master"
|
101
|
-
sh "git push origin v#{version}"
|
102
|
-
sh "gem push pkg/#{name}-#{version}.gem"
|
103
|
-
end
|
104
|
-
|
105
|
-
task :build => :gemspec do
|
106
|
-
sh "mkdir -p pkg"
|
107
|
-
sh "gem build #{gemspec_file}"
|
108
|
-
sh "mv #{gem_file} pkg"
|
109
|
-
end
|
110
|
-
|
111
|
-
task :gemspec => :validate do
|
112
|
-
# read spec file and split out manifest section
|
113
|
-
spec = File.read(gemspec_file)
|
114
|
-
head, manifest, tail = spec.split(" # = MANIFEST =\n")
|
115
|
-
|
116
|
-
# replace name version and date
|
117
|
-
replace_header(head, :name)
|
118
|
-
replace_header(head, :version)
|
119
|
-
replace_header(head, :date)
|
120
|
-
#comment this out if your rubyforge_project has a different name
|
121
|
-
replace_header(head, :rubyforge_project)
|
122
|
-
|
123
|
-
# determine file list from git ls-files
|
124
|
-
files = `git ls-files`.
|
125
|
-
split("\n").
|
126
|
-
sort.
|
127
|
-
reject { |file| file =~ /^\./ }.
|
128
|
-
reject { |file| file =~ /^(rdoc|pkg|test)/ }.
|
129
|
-
map { |file| " #{file}" }.
|
130
|
-
join("\n")
|
131
|
-
|
132
|
-
# piece file back together and write
|
133
|
-
manifest = " s.files = %w[\n#{files}\n ]\n"
|
134
|
-
spec = [head, manifest, tail].join(" # = MANIFEST =\n")
|
135
|
-
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
136
|
-
puts "Updated #{gemspec_file}"
|
137
|
-
end
|
138
|
-
|
139
|
-
task :validate do
|
140
|
-
libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
|
141
|
-
unless libfiles.empty?
|
142
|
-
puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
|
143
|
-
exit!
|
144
|
-
end
|
145
|
-
unless Dir['VERSION*'].empty?
|
146
|
-
puts "A `VERSION` file at root level violates Gem best practices."
|
147
|
-
exit!
|
148
|
-
end
|
149
|
-
end
|
data/benchmarks.rb
DELETED
@@ -1,129 +0,0 @@
|
|
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
|
data/benchmarks.txt
DELETED
@@ -1,21 +0,0 @@
|
|
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)
|
data/examples/ex_add_commit.rb
DELETED
@@ -1,13 +0,0 @@
|
|
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
|
data/examples/ex_index.rb
DELETED
@@ -1,21 +0,0 @@
|
|
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
|
data/grit.gemspec
DELETED
@@ -1,74 +0,0 @@
|
|
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 = 'gitlab-grit'
|
7
|
-
s.version = '2.5.0'
|
8
|
-
s.date = '2013-05-06'
|
9
|
-
s.license = 'MIT'
|
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. GitLab fork"
|
13
|
-
|
14
|
-
s.authors = ["Tom Preston-Werner", "Scott Chacon", "Dmitriy Zaporozhets"]
|
15
|
-
s.email = 'm@gitlabhq.com'
|
16
|
-
s.homepage = 'http://github.com/gitlabhq/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
|
-
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
|