class Git::Status
def construct_status
def construct_status @files = @base.lib.ls_files # find untracked in working dir Dir.chdir(@base.dir.path) do Dir.glob('**/*') do |file| @files[file] = {:path => file, :untracked => true} unless @files[file] || File.directory?(file) end end # find modified in tree @base.lib.diff_files.each do |path, data| @files[path] ? @files[path].merge!(data) : @files[path] = data end # 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 @files.each do |k, file_hash| @files[k] = StatusFile.new(@base, file_hash) end end