Improve API server's git rev-list calls.
authorBrett Smith <brett@curoverse.com>
Tue, 8 Jul 2014 17:01:44 +0000 (13:01 -0400)
committerBrett Smith <brett@curoverse.com>
Mon, 14 Jul 2014 21:11:09 +0000 (17:11 -0400)
This doesn't completely silence errors, but it makes them less verbose
and prevents git from trying to look up paths, which we never want.

services/api/app/models/commit.rb

index 6239011a1bda462dca713feec0bc18250025e54b..8735741ce9bafc1d54a6b505d27983ebc1fcd60a 100644 (file)
@@ -46,7 +46,7 @@ class Commit < ActiveRecord::Base
 
         # Get the commit hash for the upper bound
         max_hash = nil
-        IO.foreach("|git rev-list --max-count=1 #{maximum.shellescape}") do |line|
+        IO.foreach("|git rev-list --max-count=1 #{maximum.shellescape} --") do |line|
           max_hash = line.strip
         end
 
@@ -58,7 +58,7 @@ class Commit < ActiveRecord::Base
           resolved_exclude = []
           exclude.each do |e|
             if git_check_ref_format(e)
-              IO.foreach("|git rev-list --max-count=1 #{e.shellescape}") do |line|
+              IO.foreach("|git rev-list --max-count=1 #{e.shellescape} --") do |line|
                 resolved_exclude.push(line.strip)
               end
             else
@@ -71,7 +71,7 @@ class Commit < ActiveRecord::Base
         if minimum
           # Get the commit hash for the lower bound
           min_hash = nil
-          IO.foreach("|git rev-list --max-count=1 #{minimum.shellescape}") do |line|
+          IO.foreach("|git rev-list --max-count=1 #{minimum.shellescape} --") do |line|
             min_hash = line.strip
           end
 
@@ -79,7 +79,7 @@ class Commit < ActiveRecord::Base
           next if !min_hash or !git_check_ref_format(min_hash)
 
           # Now find all commits between them
-          IO.foreach("|git rev-list #{min_hash.shellescape}..#{max_hash.shellescape}") do |line|
+          IO.foreach("|git rev-list #{min_hash.shellescape}..#{max_hash.shellescape} --") do |line|
             hash = line.strip
             commits.push(hash) if !resolved_exclude or !resolved_exclude.include? hash
           end