summaryrefslogtreecommitdiffstats
path: root/lib/git/status.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/git/status.rb')
-rw-r--r--lib/git/status.rb23
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