gitrb 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/gitrb.gemspec +2 -1
- data/lib/gitrb/gitobject.rb +1 -1
- data/lib/gitrb/reference.rb +3 -10
- data/lib/gitrb/repository.rb +36 -32
- data/lib/gitrb/tree.rb +1 -1
- data/lib/gitrb/util.rb +0 -1
- data/test/bare_repository_test.rb +3 -12
- data/test/benchmark.rb +5 -5
- data/test/commit_test.rb +11 -12
- data/test/helper.rb +11 -1
- data/test/profile.rb +4 -4
- data/test/repository_init_test.rb +34 -0
- data/test/repository_test.rb +20 -24
- data/test/tree_test.rb +3 -5
- data/test/trie_test.rb +0 -1
- metadata +4 -3
    
        data/gitrb.gemspec
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 | 
             
              s.name = 'gitrb'
         | 
| 3 | 
            -
              s.version = '0.2. | 
| 3 | 
            +
              s.version = '0.2.2'
         | 
| 4 4 | 
             
              s.summary = 'Pure ruby git implementation'
         | 
| 5 5 | 
             
              s.author = 'Daniel Mendler'
         | 
| 6 6 | 
             
              s.email = 'mail@daniel-mendler.de'
         | 
| @@ -33,6 +33,7 @@ test/commit_test.rb | |
| 33 33 | 
             
            test/helper.rb
         | 
| 34 34 | 
             
            test/profile.rb
         | 
| 35 35 | 
             
            test/repository_test.rb
         | 
| 36 | 
            +
            test/repository_init_test.rb
         | 
| 36 37 | 
             
            test/trie_test.rb
         | 
| 37 38 | 
             
            test/tree_test.rb
         | 
| 38 39 | 
             
            }
         | 
    
        data/lib/gitrb/gitobject.rb
    CHANGED
    
    
    
        data/lib/gitrb/reference.rb
    CHANGED
    
    | @@ -9,9 +9,7 @@ module Gitrb | |
| 9 9 |  | 
| 10 10 | 
             
                def method_missing(name, *args, &block)
         | 
| 11 11 | 
             
                  if @object
         | 
| 12 | 
            -
                     | 
| 13 | 
            -
                      # Ruby 1.9 uses the presence of the to_ary and to_str methods to determine if an object is coercable.
         | 
| 14 | 
            -
                      # If we create these methods, Ruby will incorrectly think that the object can be converted to an array.
         | 
| 12 | 
            +
                    if @object.respond_to? name
         | 
| 15 13 | 
             
                      instance_eval %{def self.#{name}(*args, &block); @object.send("#{name}", *args, &block); end}
         | 
| 16 14 | 
             
                    end
         | 
| 17 15 | 
             
                    @object.send(name, *args, &block)
         | 
| @@ -21,17 +19,12 @@ module Gitrb | |
| 21 19 | 
             
                    @properties[name]
         | 
| 22 20 | 
             
                  elsif @properties.include?(name.to_s)
         | 
| 23 21 | 
             
                    @properties[name.to_s]
         | 
| 24 | 
            -
                  elsif object
         | 
| 25 | 
            -
                    method_missing(name, *args, &block)
         | 
| 26 22 | 
             
                  else
         | 
| 27 | 
            -
                     | 
| 23 | 
            +
                    @object = repository.get(id)
         | 
| 24 | 
            +
                    method_missing(name, *args, &block)
         | 
| 28 25 | 
             
                  end
         | 
| 29 26 | 
             
                end
         | 
| 30 27 |  | 
| 31 | 
            -
                def object
         | 
| 32 | 
            -
                  @object ||= repository.get(id)
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
             | 
| 35 28 | 
             
                def resolved?
         | 
| 36 29 | 
             
                  @object != nil
         | 
| 37 30 | 
             
                end
         | 
    
        data/lib/gitrb/repository.rb
    CHANGED
    
    | @@ -17,6 +17,14 @@ module Gitrb | |
| 17 17 | 
             
              class Repository
         | 
| 18 18 | 
             
                attr_reader :path, :root, :branch, :head, :encoding
         | 
| 19 19 |  | 
| 20 | 
            +
                def self.git_path
         | 
| 21 | 
            +
                  @git_path ||= begin
         | 
| 22 | 
            +
                    path = `which git`.chomp
         | 
| 23 | 
            +
                    raise 'git not found' if $?.exitstatus != 0
         | 
| 24 | 
            +
                    path
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 20 28 | 
             
                SHA_PATTERN = /^[A-Fa-f0-9]{5,40}$/
         | 
| 21 29 | 
             
                REVISION_PATTERN = /^[\w\-\.]+([\^~](\d+)?)*$/
         | 
| 22 30 | 
             
                DEFAULT_ENCODING = 'utf-8'
         | 
| @@ -176,8 +184,8 @@ module Gitrb | |
| 176 184 | 
             
                                          :message => message.strip)
         | 
| 177 185 | 
             
                  end
         | 
| 178 186 | 
             
                  commits
         | 
| 179 | 
            -
                rescue => ex
         | 
| 180 | 
            -
                  return [] if ex. | 
| 187 | 
            +
                rescue CommandError => ex
         | 
| 188 | 
            +
                  return [] if ex.output =~ /bad default revision 'HEAD'/i
         | 
| 181 189 | 
             
                  raise
         | 
| 182 190 | 
             
                end
         | 
| 183 191 |  | 
| @@ -233,7 +241,7 @@ module Gitrb | |
| 233 241 | 
             
                    content, type = pack.get_object(offset)
         | 
| 234 242 | 
             
                  end
         | 
| 235 243 |  | 
| 236 | 
            -
                  @logger.debug "gitrb: Loaded #{id}"
         | 
| 244 | 
            +
                  @logger.debug "gitrb: Loaded #{type} #{id}"
         | 
| 237 245 |  | 
| 238 246 | 
             
                  set_encoding(id)
         | 
| 239 247 | 
             
                  object = GitObject.factory(type, :repository => self, :id => id, :data => content)
         | 
| @@ -249,6 +257,8 @@ module Gitrb | |
| 249 257 | 
             
                #
         | 
| 250 258 | 
             
                # Returns the object.
         | 
| 251 259 | 
             
                def put(object)
         | 
| 260 | 
            +
                  raise ArgumentError unless object && GitObject === object
         | 
| 261 | 
            +
             | 
| 252 262 | 
             
                  content = object.dump
         | 
| 253 263 | 
             
                  data = "#{object.type} #{content.bytesize rescue content.length}\0#{content}"
         | 
| 254 264 | 
             
                  id = sha(data)
         | 
| @@ -273,22 +283,25 @@ module Gitrb | |
| 273 283 | 
             
                  object
         | 
| 274 284 | 
             
                end
         | 
| 275 285 |  | 
| 276 | 
            -
                def method_missing(name, *args | 
| 286 | 
            +
                def method_missing(name, *args)
         | 
| 277 287 | 
             
                  cmd = name.to_s
         | 
| 278 288 | 
             
                  if cmd[0..3] == 'git_'
         | 
| 279 | 
            -
                    ENV['GIT_DIR'] = path
         | 
| 280 289 | 
             
                    cmd = cmd[4..-1].tr('_', '-')
         | 
| 281 | 
            -
                    args = args.flatten.compact.map {| | 
| 282 | 
            -
             | 
| 283 | 
            -
             | 
| 284 | 
            -
             | 
| 285 | 
            -
             | 
| 286 | 
            -
             | 
| 287 | 
            -
             | 
| 288 | 
            -
             | 
| 289 | 
            -
             | 
| 290 | 
            -
             | 
| 291 | 
            -
             | 
| 290 | 
            +
                    args = args.flatten.compact.map {|a| a.to_s }
         | 
| 291 | 
            +
             | 
| 292 | 
            +
                    @logger.debug "gitrb: #{self.class.git_path} #{cmd} #{args.inspect}"
         | 
| 293 | 
            +
             | 
| 294 | 
            +
                    out = IO.popen('-', 'rb') do |io|
         | 
| 295 | 
            +
                      if io
         | 
| 296 | 
            +
                        # Read in binary mode (ascii-8bit) and convert afterwards
         | 
| 297 | 
            +
                        block_given? ? yield(io) : set_encoding(io.read)
         | 
| 298 | 
            +
                      else
         | 
| 299 | 
            +
                        # child's stderr goes to stdout
         | 
| 300 | 
            +
                        STDERR.reopen(STDOUT)
         | 
| 301 | 
            +
                        ENV['GIT_DIR'] = path
         | 
| 302 | 
            +
                        exec(self.class.git_path, cmd, *args)
         | 
| 303 | 
            +
                      end
         | 
| 304 | 
            +
                    end
         | 
| 292 305 |  | 
| 293 306 | 
             
                    if $?.exitstatus > 0
         | 
| 294 307 | 
             
                      return '' if $?.exitstatus == 1 && out == ''
         | 
| @@ -302,18 +315,13 @@ module Gitrb | |
| 302 315 | 
             
                end
         | 
| 303 316 |  | 
| 304 317 | 
             
                def default_user
         | 
| 305 | 
            -
                   | 
| 306 | 
            -
             | 
| 307 | 
            -
             | 
| 308 | 
            -
                     | 
| 309 | 
            -
                     | 
| 310 | 
            -
                    name  | 
| 318 | 
            +
                  @default_user ||= begin
         | 
| 319 | 
            +
                    name = git_config('user.name').chomp
         | 
| 320 | 
            +
                    email = git_config('user.email').chomp
         | 
| 321 | 
            +
                    name = ENV['USER'] if name.empty?
         | 
| 322 | 
            +
                    email = ENV['USER'] + '@' + `hostname -f`.chomp if email.empty?
         | 
| 323 | 
            +
                    User.new(name, email)
         | 
| 311 324 | 
             
                  end
         | 
| 312 | 
            -
                  if email.empty?
         | 
| 313 | 
            -
                    require 'etc'
         | 
| 314 | 
            -
                    email = Etc.getlogin + '@' + `hostname -f`.chomp
         | 
| 315 | 
            -
                  end
         | 
| 316 | 
            -
                  User.new(name, email)
         | 
| 317 325 | 
             
                end
         | 
| 318 326 |  | 
| 319 327 | 
             
                private
         | 
| @@ -334,11 +342,7 @@ module Gitrb | |
| 334 342 | 
             
                  if create && !File.exists?("#{@path}/objects")
         | 
| 335 343 | 
             
                    FileUtils.mkpath(@path) if !File.exists?(@path)
         | 
| 336 344 | 
             
                    raise ArgumentError, "Not a valid Git repository: '#{@path}'" if !File.directory?(@path)
         | 
| 337 | 
            -
                     | 
| 338 | 
            -
                      Dir.chdir(@path) { git_init '--bare' }
         | 
| 339 | 
            -
                    else
         | 
| 340 | 
            -
                      Dir.chdir(@path[0..-6]) { git_init }
         | 
| 341 | 
            -
                    end
         | 
| 345 | 
            +
                    git_init(@bare ? '--bare' : nil)
         | 
| 342 346 | 
             
                  else
         | 
| 343 347 | 
             
                    raise ArgumentError, "Not a valid Git repository: '#{@path}'" if !File.directory?("#{@path}/objects")
         | 
| 344 348 | 
             
                  end
         | 
    
        data/lib/gitrb/tree.rb
    CHANGED
    
    
    
        data/lib/gitrb/util.rb
    CHANGED
    
    
| @@ -1,20 +1,11 @@ | |
| 1 1 | 
             
            require 'helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Gitrb do
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              REPO = '/tmp/gitrb_test.git'
         | 
| 6 | 
            -
             | 
| 7 4 | 
             
              before do
         | 
| 8 | 
            -
                FileUtils.rm_rf  | 
| 9 | 
            -
                Dir.mkdir  | 
| 10 | 
            -
             | 
| 11 | 
            -
                @repo = Gitrb::Repository.new(:path => REPO, :create => true)
         | 
| 12 | 
            -
              end
         | 
| 5 | 
            +
                FileUtils.rm_rf REPO_PATH
         | 
| 6 | 
            +
                Dir.mkdir REPO_PATH
         | 
| 13 7 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
                lambda {
         | 
| 16 | 
            -
                  Gitrb::Repository.new('/foo', 'master', true)
         | 
| 17 | 
            -
                }.should.raise(ArgumentError)
         | 
| 8 | 
            +
                @repo = Gitrb::Repository.new(:path => REPO_PATH, :create => true, :bare => true)
         | 
| 18 9 | 
             
              end
         | 
| 19 10 |  | 
| 20 11 | 
             
              it 'should save and load entries' do
         | 
    
        data/test/benchmark.rb
    CHANGED
    
    | @@ -3,13 +3,13 @@ require 'grit' | |
| 3 3 | 
             
            require 'benchmark'
         | 
| 4 4 | 
             
            require 'fileutils'
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 6 | 
            +
            REPO_PATH = '/tmp/gitrb_test'
         | 
| 7 7 |  | 
| 8 | 
            -
            FileUtils.rm_rf  | 
| 9 | 
            -
            FileUtils.mkpath  | 
| 10 | 
            -
            Dir.chdir  | 
| 8 | 
            +
            FileUtils.rm_rf REPO_PATH
         | 
| 9 | 
            +
            FileUtils.mkpath REPO_PATH
         | 
| 10 | 
            +
            Dir.chdir REPO_PATH
         | 
| 11 11 |  | 
| 12 | 
            -
            repo = Gitrb::Repository.new(:path =>  | 
| 12 | 
            +
            repo = Gitrb::Repository.new(:path => REPO_PATH, :create => true)
         | 
| 13 13 |  | 
| 14 14 | 
             
            grit = nil
         | 
| 15 15 | 
             
            gitrb = nil
         | 
    
        data/test/commit_test.rb
    CHANGED
    
    | @@ -1,14 +1,11 @@ | |
| 1 1 | 
             
            require 'helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Gitrb::Commit do
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              REPO = '/tmp/gitrb_test'
         | 
| 6 | 
            -
             | 
| 7 4 | 
             
              before do
         | 
| 8 | 
            -
                FileUtils.rm_rf  | 
| 9 | 
            -
                Dir.mkdir  | 
| 5 | 
            +
                FileUtils.rm_rf REPO_PATH
         | 
| 6 | 
            +
                Dir.mkdir REPO_PATH
         | 
| 10 7 |  | 
| 11 | 
            -
                @repo = Gitrb::Repository.new(:path =>  | 
| 8 | 
            +
                @repo = Gitrb::Repository.new(:path => REPO_PATH, :create => true)
         | 
| 12 9 | 
             
              end
         | 
| 13 10 |  | 
| 14 11 | 
             
              it "should dump in right format" do
         | 
| @@ -36,12 +33,14 @@ This is a message" | |
| 36 33 | 
             
                repo.root['a'] = Gitrb::Blob.new(:data => "Yay")
         | 
| 37 34 | 
             
                commit = repo.commit("Commit Message", author, author)
         | 
| 38 35 |  | 
| 39 | 
            -
                 | 
| 40 | 
            -
                   | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 36 | 
            +
                with_git_dir do
         | 
| 37 | 
            +
                  IO.popen("git log") do |io|
         | 
| 38 | 
            +
                    io.gets.should.equal "commit #{commit.id}\n"
         | 
| 39 | 
            +
                    io.gets.should.equal "Author: hans <hans@email.de>\n"
         | 
| 40 | 
            +
                    io.gets.should.equal "Date:   Mon Apr 20 00:00:00 2009 #{Time.now.strftime('%z')}\n"
         | 
| 41 | 
            +
                    io.gets.should.equal "\n"
         | 
| 42 | 
            +
                    io.gets.should.equal "    Commit Message\n"
         | 
| 43 | 
            +
                  end
         | 
| 45 44 | 
             
                end
         | 
| 46 45 | 
             
              end
         | 
| 47 46 |  | 
    
        data/test/helper.rb
    CHANGED
    
    | @@ -11,13 +11,23 @@ module TestHelper | |
| 11 11 | 
             
                  open(file, 'w') { |io| io << data }
         | 
| 12 12 |  | 
| 13 13 | 
             
                  repo.git_add(file)
         | 
| 14 | 
            -
                  repo.git_commit('-m',  | 
| 14 | 
            +
                  repo.git_commit('-m', "added #{file}")
         | 
| 15 15 | 
             
                  File.unlink(file)
         | 
| 16 16 | 
             
                end
         | 
| 17 17 | 
             
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def with_git_dir
         | 
| 20 | 
            +
                old_path = ENV['GIT_DIR']
         | 
| 21 | 
            +
                ENV['GIT_DIR'] = repo.path
         | 
| 22 | 
            +
                yield
         | 
| 23 | 
            +
              ensure
         | 
| 24 | 
            +
                ENV['GIT_DIR'] = old_path
         | 
| 25 | 
            +
              end
         | 
| 18 26 | 
             
            end
         | 
| 19 27 |  | 
| 20 28 | 
             
            class Bacon::Context
         | 
| 21 29 | 
             
              include TestHelper
         | 
| 22 30 | 
             
              attr_reader :repo
         | 
| 23 31 | 
             
            end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            REPO_PATH = '/tmp/gitrb_test'
         | 
    
        data/test/profile.rb
    CHANGED
    
    | @@ -3,12 +3,12 @@ require 'fileutils' | |
| 3 3 | 
             
            require 'grit'
         | 
| 4 4 | 
             
            require 'ruby-prof'
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 6 | 
            +
            REPO_PATH = '/tmp/gitrb_test'
         | 
| 7 7 |  | 
| 8 | 
            -
            FileUtils.rm_rf  | 
| 9 | 
            -
            FileUtils.mkpath  | 
| 8 | 
            +
            FileUtils.rm_rf REPO_PATH
         | 
| 9 | 
            +
            FileUtils.mkpath REPO_PATH
         | 
| 10 10 |  | 
| 11 | 
            -
            repo = Gitrb::Repository.new(:path =>  | 
| 11 | 
            +
            repo = Gitrb::Repository.new(:path => REPO_PATH, :create => true)
         | 
| 12 12 | 
             
            repo.transaction { 'aaa'.upto('jjj') { |key| repo.root[key] = Gitrb::Blob.new(:data => rand.to_s) } }
         | 
| 13 13 |  | 
| 14 14 | 
             
            result = RubyProf.profile do
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            require 'helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Gitrb do
         | 
| 4 | 
            +
              it 'should fail to initialize without a valid git repository' do
         | 
| 5 | 
            +
                File.exists?('/foo').should.be.false
         | 
| 6 | 
            +
                lambda do
         | 
| 7 | 
            +
                  Gitrb::Repository.new(:path => '/foo', :branch => 'master', :bare => true)
         | 
| 8 | 
            +
                end.should.raise(ArgumentError)
         | 
| 9 | 
            +
                File.exists?('/foo').should.be.false
         | 
| 10 | 
            +
                lambda do
         | 
| 11 | 
            +
                  Gitrb::Repository.new(:path => '/foo', :branch => 'master')
         | 
| 12 | 
            +
                end.should.raise(ArgumentError)
         | 
| 13 | 
            +
                File.exists?('/foo').should.be.false
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              it 'should create repository on relative path' do
         | 
| 17 | 
            +
                FileUtils.rm_rf('/tmp/gitrb_test')
         | 
| 18 | 
            +
                Dir.chdir('/tmp') do
         | 
| 19 | 
            +
                  Gitrb::Repository.new(:path => "gitrb_test/repo",
         | 
| 20 | 
            +
                                        :bare => true, :create => true)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                File.directory?('/tmp/gitrb_test/repo').should.be.true
         | 
| 23 | 
            +
                File.directory?('/tmp/gitrb_test/repo/objects').should.be.true
         | 
| 24 | 
            +
                File.exists?('/tmp/gitrb_test/repo/.git').should.be.false
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                FileUtils.rm_rf('/tmp/gitrb_test')
         | 
| 27 | 
            +
                Dir.chdir('/tmp') do
         | 
| 28 | 
            +
                  Gitrb::Repository.new(:path => "gitrb_test/repo", :create => true)
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
                File.directory?('/tmp/gitrb_test/repo').should.be.true
         | 
| 31 | 
            +
                File.directory?('/tmp/gitrb_test/repo/.git').should.be.true
         | 
| 32 | 
            +
                File.directory?('/tmp/gitrb_test/repo/.git/objects').should.be.true
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
    
        data/test/repository_test.rb
    CHANGED
    
    | @@ -1,19 +1,10 @@ | |
| 1 1 | 
             
            require 'helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Gitrb do
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              REPO = '/tmp/gitrb_test'
         | 
| 6 | 
            -
             | 
| 7 4 | 
             
              before do
         | 
| 8 | 
            -
                FileUtils.rm_rf  | 
| 9 | 
            -
                Dir.mkdir  | 
| 10 | 
            -
                @repo = Gitrb::Repository.new(:path =>  | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              it 'should fail to initialize without a valid git repository' do
         | 
| 14 | 
            -
                lambda do
         | 
| 15 | 
            -
                  Gitrb::Repository.new(:path => '/')
         | 
| 16 | 
            -
                end.should.raise(ArgumentError)
         | 
| 5 | 
            +
                FileUtils.rm_rf REPO_PATH
         | 
| 6 | 
            +
                Dir.mkdir REPO_PATH
         | 
| 7 | 
            +
                @repo = Gitrb::Repository.new(:path => REPO_PATH, :create => true)
         | 
| 17 8 | 
             
              end
         | 
| 18 9 |  | 
| 19 10 | 
             
              it 'should put and get objects by sha' do
         | 
| @@ -77,8 +68,8 @@ describe Gitrb do | |
| 77 68 |  | 
| 78 69 | 
             
                repo.refresh
         | 
| 79 70 |  | 
| 80 | 
            -
                repo.root['x']. | 
| 81 | 
            -
                repo.root['y']. | 
| 71 | 
            +
                repo.root['x'].git_object.should.be.kind_of(Gitrb::Tree)
         | 
| 72 | 
            +
                repo.root['y'].git_object.should.be.kind_of(Gitrb::Tree)
         | 
| 82 73 |  | 
| 83 74 | 
             
                repo.root['x']['a'].data.should.equal 'Hello'
         | 
| 84 75 | 
             
                repo.root['y']['b'].data.should.equal 'World'
         | 
| @@ -151,11 +142,12 @@ describe Gitrb do | |
| 151 142 |  | 
| 152 143 | 
             
                begin
         | 
| 153 144 | 
             
                  repo.transaction do
         | 
| 154 | 
            -
                    repo.root['a/b'] = 'Changed'
         | 
| 155 | 
            -
                    repo.root['x/a'] = 'Added'
         | 
| 156 | 
            -
                    raise
         | 
| 145 | 
            +
                    repo.root['a/b'] = Gitrb::Blob.new(:data => 'Changed')
         | 
| 146 | 
            +
                    repo.root['x/a'] = Gitrb::Blob.new(:data => 'Added')
         | 
| 147 | 
            +
                    raise 'boo'
         | 
| 157 148 | 
             
                  end
         | 
| 158 | 
            -
                rescue
         | 
| 149 | 
            +
                rescue RuntimeError => ex
         | 
| 150 | 
            +
                  ex.message.should.equal 'boo'
         | 
| 159 151 | 
             
                end
         | 
| 160 152 |  | 
| 161 153 | 
             
                repo.root['a/b'].data.should.equal 'Hello'
         | 
| @@ -172,8 +164,8 @@ describe Gitrb do | |
| 172 164 | 
             
                  repo.root['x/a'] = Gitrb::Blob.new(:data => 'Added')
         | 
| 173 165 | 
             
                end
         | 
| 174 166 |  | 
| 175 | 
            -
                a = ls_tree(repo.root['a']. | 
| 176 | 
            -
                x = ls_tree(repo.root['x']. | 
| 167 | 
            +
                a = ls_tree(repo.root['a'].id)
         | 
| 168 | 
            +
                x = ls_tree(repo.root['x'].id)
         | 
| 177 169 |  | 
| 178 170 | 
             
                a.should.equal [["100644", "blob", "b653cf27cef08de46da49a11fa5016421e9e3b32", "b"]]
         | 
| 179 171 | 
             
                x.should.equal [["100644", "blob", "87d2b203800386b1cc8735a7d540a33e246357fa", "a"]]
         | 
| @@ -203,9 +195,12 @@ describe Gitrb do | |
| 203 195 |  | 
| 204 196 | 
             
                ready = false
         | 
| 205 197 |  | 
| 198 | 
            +
                # This test case produces a deadlock in old ruby versions
         | 
| 199 | 
            +
                # (Works in 1.8.7_p302 and 1.9)
         | 
| 206 200 | 
             
                repo.transaction do
         | 
| 207 201 | 
             
                  Thread.start do
         | 
| 208 202 | 
             
                    repo.transaction do
         | 
| 203 | 
            +
                      sleep 0.1
         | 
| 209 204 | 
             
                      repo.root['a/b'] = Gitrb::Blob.new(:data => 'Changed by second thread')
         | 
| 210 205 | 
             
                    end
         | 
| 211 206 | 
             
                    ready = true
         | 
| @@ -213,15 +208,14 @@ describe Gitrb do | |
| 213 208 | 
             
                  repo.root['a/b'] = Gitrb::Blob.new(:data => 'Changed')
         | 
| 214 209 | 
             
                end
         | 
| 215 210 |  | 
| 216 | 
            -
                 | 
| 211 | 
            +
                repo.root['a/b'].data.should.equal 'Changed'
         | 
| 217 212 |  | 
| 218 | 
            -
                 | 
| 213 | 
            +
                sleep 0.01 until ready
         | 
| 219 214 |  | 
| 220 215 | 
             
                repo.root['a/b'].data.should.equal 'Changed by second thread'
         | 
| 221 216 | 
             
              end
         | 
| 222 217 |  | 
| 223 218 | 
             
              it 'should find all objects' do
         | 
| 224 | 
            -
                repo.refresh
         | 
| 225 219 | 
             
                repo.root['c'] = Gitrb::Blob.new(:data => 'Hello')
         | 
| 226 220 | 
             
                repo.root['d'] = Gitrb::Blob.new(:data => 'World')
         | 
| 227 221 | 
             
                repo.commit
         | 
| @@ -231,6 +225,8 @@ describe Gitrb do | |
| 231 225 | 
             
              end
         | 
| 232 226 |  | 
| 233 227 | 
             
              it "should load log" do
         | 
| 228 | 
            +
                repo.log.should.be.empty
         | 
| 229 | 
            +
             | 
| 234 230 | 
             
                repo.root['a'] = Gitrb::Blob.new(:data => 'a')
         | 
| 235 231 | 
             
                repo.commit 'added a'
         | 
| 236 232 |  | 
| @@ -253,7 +249,7 @@ describe Gitrb do | |
| 253 249 | 
             
                tag = repo.get(id)
         | 
| 254 250 |  | 
| 255 251 | 
             
                tag.tagtype.should.equal 'commit'
         | 
| 256 | 
            -
                tag.object. | 
| 252 | 
            +
                tag.object.git_object.should.equal repo.head
         | 
| 257 253 | 
             
                tag.tagger.name.should.equal user.name
         | 
| 258 254 | 
             
                tag.tagger.email.should.equal user.email
         | 
| 259 255 | 
             
                tag.message.should =~ /message/
         | 
    
        data/test/tree_test.rb
    CHANGED
    
    | @@ -1,13 +1,11 @@ | |
| 1 1 | 
             
            require 'helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Gitrb::Tree do
         | 
| 4 | 
            -
              REPO = '/tmp/gitrb_test'
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
              before do
         | 
| 7 | 
            -
                FileUtils.rm_rf  | 
| 8 | 
            -
                Dir.mkdir  | 
| 5 | 
            +
                FileUtils.rm_rf REPO_PATH
         | 
| 6 | 
            +
                Dir.mkdir REPO_PATH
         | 
| 9 7 |  | 
| 10 | 
            -
                @repo = Gitrb::Repository.new(:path =>  | 
| 8 | 
            +
                @repo = Gitrb::Repository.new(:path => REPO_PATH, :create => true)
         | 
| 11 9 | 
             
              end
         | 
| 12 10 |  | 
| 13 11 | 
             
              it "should write a table" do
         | 
    
        data/test/trie_test.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 7 | 
             
              - 2
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0.2. | 
| 8 | 
            +
              - 2
         | 
| 9 | 
            +
              version: 0.2.2
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Daniel Mendler
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010- | 
| 17 | 
            +
            date: 2010-09-03 00:00:00 +02:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -60,6 +60,7 @@ files: | |
| 60 60 | 
             
            - test/helper.rb
         | 
| 61 61 | 
             
            - test/profile.rb
         | 
| 62 62 | 
             
            - test/repository_test.rb
         | 
| 63 | 
            +
            - test/repository_init_test.rb
         | 
| 63 64 | 
             
            - test/trie_test.rb
         | 
| 64 65 | 
             
            - test/tree_test.rb
         | 
| 65 66 | 
             
            has_rdoc: true
         |