]> source.dussan.org Git - redmine.git/commitdiff
repository: git: change io.gets to io.readlines (#5404, #5096).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 3 Jan 2011 10:45:00 +0000 (10:45 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 3 Jan 2011 10:45:00 +0000 (10:45 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4624 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/git_adapter.rb

index cd8fd95d41fda76a2e2f722971ae722bffc686af..302ded580c7f7b13b6f0a071b1b8b05485c26fbb 100644 (file)
@@ -89,12 +89,13 @@ module Redmine
           cmd = "#{GIT_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?
-          shellout(cmd) do |io|
-            begin
-              id = io.gets.split[1]
-              author = io.gets.match('Author:\s+(.*)$')[1]
-              2.times { io.gets }
-              time = Time.parse(io.gets.match('CommitDate:\s+(.*)$')[1]).localtime
+          lines = []
+          shellout(cmd) { |io| lines = io.readlines }
+          return nil if $? && $?.exitstatus != 0
+          begin
+              id = lines[0].split[1]
+              author = lines[1].match('Author:\s+(.*)$')[1]
+              time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]).localtime
 
               Revision.new({
                 :identifier => id,
@@ -104,10 +105,9 @@ module Redmine
                 :message => nil, 
                 :paths => nil 
               })
-            rescue NoMethodError => e
+          rescue NoMethodError => e
               logger.error("The revision '#{path}' has a wrong format")
               return nil
-            end
           end
         end