Sha256: 03c2634672563c524f940c66dfc1a242cdc683f2738150ed5c1dfafcd437212a

Contents?: true

Size: 1.88 KB

Versions: 8

Compression:

Stored size: 1.88 KB

Contents

module Git
  class Diff
    # Monkey patch process_full_diff until https://github.com/schacon/ruby-git/issues/326 is resolved
    def process_full_diff
      defaults = {
        :mode => '',
        :src => '',
        :dst => '',
        :type => 'modified'
      }
      final = {}
      current_file = nil
      full_diff_utf8_encoded = @full_diff.encode("UTF-8", "binary", {
    :invalid => :replace,
    :undef => :replace
  })
      full_diff_utf8_encoded.split("\n").each do |line|
        if m = /^diff --git a\/(.*?) b\/(.*?)/.match(line)
          current_file = m[1]
          final[current_file] = defaults.merge({:patch => line, :path => current_file})
        elsif !current_file.nil?
          if m = /^index (.......)\.\.(.......)( ......)*/.match(line)
            final[current_file][:src] = m[1]
            final[current_file][:dst] = m[2]
            final[current_file][:mode] = m[3].strip if m[3]
          end
          if m = /^([[:alpha:]]*?) file mode (......)/.match(line)
            final[current_file][:type] = m[1]
            final[current_file][:mode] = m[2]
          end
          if m = /^Binary files /.match(line)
            final[current_file][:binary] = true
          end
          final[current_file][:patch] << "\n" + line
        end
      end
      final.map { |e| [e[0], DiffFile.new(@base, e[1])] }
    end
  end

  class Lib
    # Monkey patch ls_files until https://github.com/ruby-git/ruby-git/pull/320 is resolved
    def ls_files(location=nil)
      location ||= '.'
      hsh = {}
      command_lines('ls-files', ['--stage', location]).each do |line|
        (info, file) = line.split("\t")
        (mode, sha, stage) = info.split
        file = eval(file) if file =~ /^\".*\"$/ # This takes care of quoted strings returned from git
        hsh[file] = {:path => file, :mode_index => mode, :sha_index => sha, :stage => stage}
      end
      hsh
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
modulesync-2.0.1 lib/monkey_patches.rb
modulesync-2.0.0 lib/monkey_patches.rb
modulesync-1.3.0 lib/monkey_patches.rb
modulesync-1.2.0 lib/monkey_patches.rb
modulesync-1.1.0 lib/monkey_patches.rb
modulesync-1.0.0 lib/monkey_patches.rb
modulesync-0.10.0 lib/monkey_patches.rb
modulesync-0.9.0 lib/monkey_patches.rb