scm: git: refactor lastrev() in adapter.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4963 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-02-28 14:12:24 +00:00
parent 06f078a813
commit 06c9eea67a
1 changed files with 9 additions and 8 deletions

View File

@ -127,14 +127,13 @@ module Redmine
entries.sort_by_name
end
def lastrev(path,rev)
def lastrev(path, rev)
return nil if path.nil?
cmd = "#{self.class.sq_bin} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 "
cmd << " #{shell_quote rev} " if rev
cmd << "-- #{shell_quote path} " unless path.empty?
cmd_args = %w|log --no-color --date=iso --pretty=fuller --no-merges -n 1|
cmd_args << rev if rev
cmd_args << "--" << path unless path.empty?
lines = []
shellout(cmd) { |io| lines = io.readlines }
return nil if $? && $?.exitstatus != 0
scm_cmd(*cmd_args) { |io| lines = io.readlines }
begin
id = lines[0].split[1]
author = lines[1].match('Author:\s+(.*)$')[1]
@ -147,11 +146,13 @@ module Redmine
:time => time,
:message => nil,
:paths => nil
})
})
rescue NoMethodError => e
logger.error("The revision '#{path}' has a wrong format")
return nil
end
rescue ScmCommandAborted
nil
end
def revisions(path, identifier_from, identifier_to, options={})
@ -165,7 +166,7 @@ module Redmine
from_to << "#{identifier_to}" if identifier_to
cmd_args << from_to if !from_to.empty?
cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since]
cmd_args << "--" << "#{path}" if path && !path.empty?
cmd_args << "--" << path if path && !path.empty?
scm_cmd *cmd_args do |io|
files=[]