class Git::Status


A class for git status

def [](file)

def [](file)
  @files[file]
end

def added

Returns:
  • (Enumerable) -
def added
  @files.select { |_k, f| f.type == 'A' }
end

def added?(file)

Returns:
  • (Boolean) -

Other tags:
    Example: Check if lib/git.rb is added. -

Parameters:
  • file (String) -- The name of the file.
def added?(file)
  added.member?(file)
end

def changed

Returns:
  • (Enumerable) -
def changed
  @files.select { |_k, f| f.type == 'M' }
end

def changed?(file)

Returns:
  • (Boolean) -

Other tags:
    Example: Check if lib/git.rb has changed. -

Parameters:
  • file (String) -- The name of the file.
def changed?(file)
  changed.member?(file)
end

def construct_status

def construct_status
  @files = @base.lib.ls_files
  fetch_untracked
  fetch_modified
  fetch_added
  @files.each do |k, file_hash|
    @files[k] = StatusFile.new(@base, file_hash)
  end
end

def deleted

Returns:
  • (Enumerable) -
def deleted
  @files.select { |_k, f| f.type == 'D' }
end

def deleted?(file)

Returns:
  • (Boolean) -

Other tags:
    Example: Check if lib/git.rb is deleted. -

Parameters:
  • file (String) -- The name of the file.
def deleted?(file)
  deleted.member?(file)
end

def each(&block)

def each(&block)
  @files.values.each(&block)
end

def fetch_added

def fetch_added
  # find added but not committed - new files
  @base.lib.diff_index('HEAD').each do |path, data|
    @files[path] ? @files[path].merge!(data) : @files[path] = data
  end
end

def fetch_modified

def fetch_modified
  # find modified in tree
  @base.lib.diff_files.each do |path, data|
    @files[path] ? @files[path].merge!(data) : @files[path] = data
  end
end

def fetch_untracked

def fetch_untracked
  ignore = @base.lib.ignored_files
  Dir.chdir(@base.dir.path) do
    Dir.glob('**/*', File::FNM_DOTMATCH) do |file|
      next if @files[file] || File.directory?(file) ||
              ignore.include?(file) || file =~ %r{^.git\/.+}
      @files[file] = { path: file, untracked: true }
    end
  end
end

def initialize(base)

def initialize(base)
  @base = base
  construct_status
end

def pretty

def pretty
  out = ''
  each do |file|
    out << pretty_file(file)
  end
  out << "\n"
  out
end

def pretty_file(file)

def pretty_file(file)
  <<-FILE.strip_heredoc
    #{file.path}
    \tsha(r) #{file.sha_repo} #{file.mode_repo}
    \tsha(i) #{file.sha_index} #{file.mode_index}
    \ttype   #{file.type}
    \tstage  #{file.stage}
    \tuntrac #{file.untracked}
  FILE
end

def untracked

Returns:
  • (Enumerable) -
def untracked
  @files.select { |_k, f| f.untracked }
end

def untracked?(file)

Returns:
  • (Boolean) -

Other tags:
    Example: Check if lib/git.rb is an untracked file. -

Parameters:
  • file (String) -- The name of the file.
def untracked?(file)
  untracked.member?(file)
end