Class: GitHack::CommitFacade

Inherits:
Object
  • Object
show all
Defined in:
lib/git-hack/commit_facade.rb

Instance Method Summary collapse

Constructor Details

#initialize(dir) ⇒ CommitFacade

Returns a new instance of CommitFacade.



8
9
10
11
# File 'lib/git-hack/commit_facade.rb', line 8

def initialize(dir)
	@dir = dir	
	@commits = []
end

Instance Method Details

#current_commitObject



33
34
35
36
37
38
39
40
# File 'lib/git-hack/commit_facade.rb', line 33

def current_commit
	@current_commit if @current_commit
	data = data_from_file("#{@dir}/.git/HEAD")
	commit_file_data = SimpleLineBuilder.new(data,0).parse
	commit_file = commit_file_data.value
	@current_commit = data_from_file("#{@dir}/.git/#{commit_file}")
	@current_commit = @current_commit[0].chomp
end

#data_from_file(path) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/git-hack/commit_facade.rb', line 41

def data_from_file(path)
	file = File.open(path)
	data = []
	file.each { |line|
		data << line
	}
	data 
end

#get_log_commitsObject

从log中取得当前commit之前的Commits



14
15
16
17
18
19
20
# File 'lib/git-hack/commit_facade.rb', line 14

def get_log_commits
	git = Git.open(@dir ,:log => Logger.new(STDOUT)) 
	l = Git::Lib.new(git)
	opts = ["--pretty=raw"]
	data = l.command_lines_patch('log',opts)
	return @commits = CommitLineBuilder.new(data,0).all_objects
end

#get_next_commitObject



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/git-hack/commit_facade.rb', line 21

def get_next_commit 
	file = File.open("#{@dir}/.git/logs/HEAD")
	data = []
	file.each { |line|
		data << line
	}
	commit_data = SimpleLineBuilder.new(data,0).find_all
	commit = commit_data.find do |c| 
		c.object == current_commit 
	end
	commit_sha = commit ?  commit.value : nil
end