Class: RJGit::Commit
- Inherits:
-
Object
- Object
- RJGit::Commit
- Defined in:
- lib/commit.rb
Instance Attribute Summary collapse
-
#actor ⇒ Object
readonly
Returns the value of attribute actor.
-
#authored_date ⇒ Object
readonly
Returns the value of attribute authored_date.
-
#committed_date ⇒ Object
readonly
Returns the value of attribute committed_date.
-
#committer ⇒ Object
readonly
Returns the value of attribute committer.
-
#id ⇒ Object
(also: #get_name)
readonly
Returns the value of attribute id.
-
#jcommit ⇒ Object
readonly
Returns the value of attribute jcommit.
-
#message ⇒ Object
readonly
Returns the value of attribute message.
-
#parent_count ⇒ Object
readonly
Returns the value of attribute parent_count.
-
#parents ⇒ Object
readonly
Returns the value of attribute parents.
-
#short_message ⇒ Object
readonly
Returns the value of attribute short_message.
Class Method Summary collapse
- .find_all(repository, ref, options) ⇒ Object
- .find_head(repository) ⇒ Object
-
.new_with_tree(repository, tree, message, actor, parents = nil) ⇒ Object
Pass an empty array for parents if the commit should have no parents.
Instance Method Summary collapse
- #diff(options = {}) ⇒ Object
- #diffs(options = {context: 2}) ⇒ Object
-
#initialize(repository, commit) ⇒ Commit
constructor
A new instance of Commit.
- #stats ⇒ Object
- #tree ⇒ Object
Constructor Details
#initialize(repository, commit) ⇒ Commit
Returns a new instance of Commit.
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/commit.rb', line 16 def initialize(repository, commit) @jrepo = RJGit.repository_type(repository) @jcommit = commit @id = ObjectId.to_string(commit.get_id) @actor = Actor.new_from_person_ident(@jcommit.) @committer = Actor.new_from_person_ident(@jcommit.get_committer_ident) @committed_date = Time.at(@jcommit.commit_time) @authored_date = Time.at(@jcommit..when.time/1000) @message = @jcommit. @short_message = @jcommit. @parent_count = @jcommit.get_parent_count end |
Instance Attribute Details
#actor ⇒ Object (readonly)
Returns the value of attribute actor.
10 11 12 |
# File 'lib/commit.rb', line 10 def actor @actor end |
#authored_date ⇒ Object (readonly)
Returns the value of attribute authored_date.
10 11 12 |
# File 'lib/commit.rb', line 10 def @authored_date end |
#committed_date ⇒ Object (readonly)
Returns the value of attribute committed_date.
10 11 12 |
# File 'lib/commit.rb', line 10 def committed_date @committed_date end |
#committer ⇒ Object (readonly)
Returns the value of attribute committer.
10 11 12 |
# File 'lib/commit.rb', line 10 def committer @committer end |
#id ⇒ Object (readonly) Also known as: get_name
Returns the value of attribute id.
10 11 12 |
# File 'lib/commit.rb', line 10 def id @id end |
#jcommit ⇒ Object (readonly)
Returns the value of attribute jcommit.
11 12 13 |
# File 'lib/commit.rb', line 11 def jcommit @jcommit end |
#message ⇒ Object (readonly)
Returns the value of attribute message.
11 12 13 |
# File 'lib/commit.rb', line 11 def @message end |
#parent_count ⇒ Object (readonly)
Returns the value of attribute parent_count.
11 12 13 |
# File 'lib/commit.rb', line 11 def parent_count @parent_count end |
#parents ⇒ Object (readonly)
Returns the value of attribute parents.
10 11 12 |
# File 'lib/commit.rb', line 10 def parents @parents end |
#short_message ⇒ Object (readonly)
Returns the value of attribute short_message.
11 12 13 |
# File 'lib/commit.rb', line 11 def @short_message end |
Class Method Details
.find_all(repository, ref, options) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/commit.rb', line 103 def self.find_all(repository, ref, ) repository = RJGit.repository_type(repository) return nil if repository.nil? begin walk = RevWalk.new(repository) objhead = repository.resolve(ref) root = walk.parse_commit(objhead) walk.mark_start(root) commits = walk.map { |commit| Commit.new(repository, commit) } return commits.first([:limit]) rescue NativeException => e return Array.new end end |
.find_head(repository) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/commit.rb', line 91 def self.find_head(repository) repository = RJGit.repository_type(repository) return nil if repository.nil? begin walk = RevWalk.new(repository) objhead = repository.resolve(Constants::HEAD) return Commit.new(repository, walk.parseCommit(objhead)) rescue NativeException => e return nil end end |
.new_with_tree(repository, tree, message, actor, parents = nil) ⇒ Object
Pass an empty array for parents if the commit should have no parents
84 85 86 87 88 89 |
# File 'lib/commit.rb', line 84 def self.new_with_tree(repository, tree, , actor, parents = nil) repository = RJGit.repository_type(repository) parents = parents ? parents : repository.resolve("refs/heads/#{Constants::MASTER}") new_commit = RJGit::Plumbing::Index.new(repository).do_commit(, actor, parents, tree) Commit.new(repository, RevWalk.new(repository).parseCommit(new_commit)) end |
Instance Method Details
#diff(options = {}) ⇒ Object
65 66 67 |
# File 'lib/commit.rb', line 65 def diff( = {}) self.diffs().join end |
#diffs(options = {context: 2}) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/commit.rb', line 69 def diffs( = {context: 2}) out_stream = ByteArrayOutputStream.new formatter = DiffFormatter.new(out_stream) formatter.set_repository(@jrepo) formatter.set_context([:context]) parent_commit = @jcommit.parent_count > 0 ? @jcommit.get_parents.first : nil entries = formatter.scan(parent_commit, @jcommit) entries.each do |entry| formatter.format(entry) out_stream.write('custom_git_delimiter'.to_java_bytes) end out_stream.to_s.split('custom_git_delimiter') end |
#stats ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/commit.rb', line 39 def stats df = DiffFormatter.new(DisabledOutputStream::INSTANCE) df.set_repository(@jrepo) df.set_context(0) parent_commit = @jcommit.parent_count > 0 ? @jcommit.get_parents[0] : nil entries = df.scan(parent_commit, @jcommit) results = {} total_del = 0 total_ins = 0 entries.each do |entry| file = df.toFileHeader(entry) del = 0 ins = 0 file.getHunks.each do |hunk| hunk.toEditList.each do |edit| del += edit.getEndA - edit.getBeginA ins += edit.getEndB - edit.getBeginB end end total_del += del total_ins += ins results[file.getNewPath] = [ins, del, ins + del] end return total_ins, total_del, results end |