diff options
Diffstat (limited to 'lib/git/status.rb')
-rw-r--r-- | lib/git/status.rb | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/git/status.rb b/lib/git/status.rb index 24fd98d..f738644 100644 --- a/lib/git/status.rb +++ b/lib/git/status.rb @@ -27,8 +27,8 @@ module Git out = '' self.each do |file| out << file.path - out << "\n\tsha(r) " + file.sha_repo.to_s - out << "\n\tsha(i) " + file.sha_index.to_s + out << "\n\tsha(r) " + file.sha_repo.to_s + ' ' + file.mode_repo.to_s + out << "\n\tsha(i) " + file.sha_index.to_s + ' ' + file.mode_index.to_s out << "\n\ttype " + file.type.to_s out << "\n\tstage " + file.stage.to_s out << "\n\tuntrac " + file.untracked.to_s @@ -55,7 +55,10 @@ module Git attr_accessor :mode_index, :mode_repo attr_accessor :sha_index, :sha_repo - def initialize(hash) + @base = nil + + def initialize(base, hash) + @base = base @path = hash[:path] @type = hash[:type] @stage = hash[:stage] @@ -66,6 +69,14 @@ module Git @untracked = hash[:untracked] end + def blob(type = :index) + if type == :repo + @base.object(@sha_repo) + else + @base.object(@sha_index) rescue @base.object(@sha_repo) + end + end + end @@ -85,16 +96,16 @@ module Git # find modified in tree @base.lib.diff_files.each do |path, data| - @files[path].merge!(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].merge!(data) + @files[path] ? @files[path].merge!(data) : @files[path] = data end @files.each do |k, file_hash| - @files[k] = StatusFile.new(file_hash) + @files[k] = StatusFile.new(@base, file_hash) end end |