class GitProc::GitStatus
The status of the Git repository.
@!attribute [r] unmerged
@return [Enumerable] a sorted list of unmerged files
@!attribute [r] modified
@return [Enumerable] a sorted list of modified files
@!attribute [r] deleted
@return [Enumerable] a sorted list of deleted files
@!attribute [r] added
@return [Enumerable] a sorted list of files that have been added
@!attribute [r] unknown
@return [Enumerable] a sorted list of unknown files
Attributes
added[R]
deleted[R]
modified[R]
unknown[R]
unmerged[R]
Public Class Methods
new(lib)
click to toggle source
# File lib/git-process/git_status.rb, line 32 def initialize(lib) unmerged = [] modified = [] deleted = [] added = [] unknown = [] stats = lib.porcelain_status.split("\n") stats.each do |s| stat = s[0..1] file = s[3..-1] #puts "stat #{stat} - #{file}" f = unquote(file) case stat when 'U ', ' U' unmerged << f when 'UU' unmerged << f modified << f when 'M ', ' M', 'MM' modified << f when 'MD' modified << f deleted << f when 'D ', ' D', 'DD' deleted << f when 'DU', 'UD' deleted << f unmerged << f when 'A ', ' A' added << f when 'AD' added << f deleted << f when 'AA', 'AU', 'UA' added << f unmerged << f when 'AM', 'MA' added << f modified << f when '??', '!!' unknown << f when 'R ' old_file, new_file = file.split(' -> ') deleted << unquote(old_file) added << unquote(new_file) when 'C ' old_file, new_file = file.split(' -> ') added << unquote(old_file) added << unquote(new_file) else raise "Do not know what to do with status #{stat} - #{file}" end end @unmerged = unmerged.sort.uniq.freeze @modified = modified.sort.uniq.freeze @deleted = deleted.sort.uniq.freeze @added = added.sort.uniq.freeze @unknown = unknown.sort.uniq.freeze end
Public Instance Methods
clean?()
click to toggle source
@return [Boolean] are there any changes in the index or working directory?
# File lib/git-process/git_status.rb, line 102 def clean? @unmerged.empty? and @modified.empty? and @deleted.empty? and @added.empty? and @unknown.empty? end
unquote(file)
click to toggle source
# File lib/git-process/git_status.rb, line 96 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end