lib/grit/status.rb in gitlab-grit-2.5.2 vs lib/grit/status.rb in gitlab-grit-2.6.0

- old
+ new

@@ -88,38 +88,37 @@ private def construct_status @files = ls_files - Dir.chdir(@base.working_dir) do - # find untracked in working dir - Dir.glob('**/*') do |file| - if !@files[file] - @files[file] = {:path => file, :untracked => true} if !File.directory?(file) - end + # find untracked in working dir + Dir.glob(File.join(@base.working_dir, '**/*')) do |full_file| + file = full_file.gsub "#{@base.working_dir}/", "" + if !@files[file] + @files[file] = {:path => file, :untracked => true} if !File.directory?(file) end + end - # find modified in tree - diff_files.each do |path, data| - @files[path] ? @files[path].merge!(data) : @files[path] = data - end + # find modified in tree + diff_files.each do |path, data| + @files[path] ? @files[path].merge!(data) : @files[path] = data + end - # find added but not committed - new files - diff_index('HEAD').each do |path, data| - @files[path] ? @files[path].merge!(data) : @files[path] = data - end + # find added but not committed - new files + 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 + @files.each do |k, file_hash| + @files[k] = StatusFile.new(@base, file_hash) end end # compares the index and the working directory def diff_files hsh = {} - @base.git.diff_files.split("\n").each do |line| + @base.git.diff_files(chdir: @base.working_dir).split("\n").each do |line| (info, file) = line.split("\t") (mode_src, mode_dest, sha_src, sha_dest, type) = info.split hsh[file] = {:path => file, :mode_file => mode_src.to_s[1, 7], :mode_index => mode_dest, :sha_file => sha_src, :sha_index => sha_dest, :type => type} end @@ -127,27 +126,27 @@ end # compares the index and the repository def diff_index(treeish) hsh = {} - @base.git.diff_index({}, treeish).split("\n").each do |line| + @base.git.diff_index({chdir: @base.working_dir}, treeish).split("\n").each do |line| (info, file) = line.split("\t") (mode_src, mode_dest, sha_src, sha_dest, type) = info.split hsh[file] = {:path => file, :mode_repo => mode_src.to_s[1, 7], :mode_index => mode_dest, :sha_repo => sha_src, :sha_index => sha_dest, :type => type} end hsh end def ls_files hsh = {} - lines = @base.git.ls_files({:stage => true}) + lines = @base.git.ls_files({chdir: @base.working_dir, :stage => true}) lines.split("\n").each do |line| (info, file) = line.split("\t") (mode, sha, stage) = info.split hsh[file] = {:path => file, :mode_index => mode, :sha_index => sha, :stage => stage} end hsh end end -end \ No newline at end of file +end