def initialize(base = nil, logger = nil)
      @git_dir = nil
      @git_index_file = nil
      @git_work_dir = nil
      @path = nil
      @logger = logger || Logger.new(nil)

      if base.is_a?(Git::Base)
        @git_dir = base.repo.path
        @git_index_file = base.index.path if base.index
        @git_work_dir = base.dir.path if base.dir
      elsif base.is_a?(Hash)
        @git_dir = base[:repository]
        @git_index_file = base[:index]
        @git_work_dir = base[:working_directory]
      end
    end
Create a new Git::Lib object

@overload initialize(base, logger)

@param base [Hash] the hash containing paths to the Git working copy,
the Git repository directory, and the Git index file.

@option base [Pathname] :working_directory
@option base [Pathname] :repository
@option base [Pathname] :index

@param [Logger] logger

@overload initialize(base, logger)

@param base [#dir, #repo, #index] an object with methods to get the Git worktree (#dir),
the Git repository directory (#repo), and the Git index file (#index).

@param [Logger] logger