Class: GitProc::GitStatus
- Inherits:
-
Object
- Object
- GitProc::GitStatus
- Defined in:
- lib/git-process/git_status.rb
Overview
The status of the Git repository.
Instance Attribute Summary collapse
-
#added ⇒ Enumerable
readonly
A sorted list of files that have been added.
-
#deleted ⇒ Enumerable
readonly
A sorted list of deleted files.
-
#modified ⇒ Enumerable
readonly
A sorted list of modified files.
-
#unknown ⇒ Enumerable
readonly
A sorted list of unknown files.
-
#unmerged ⇒ Enumerable
readonly
A sorted list of unmerged files.
Instance Method Summary collapse
-
#clean? ⇒ Boolean
Are there any changes in the index or working directory?.
-
#initialize(lib) ⇒ GitStatus
constructor
A new instance of GitStatus.
- #unquote(file) ⇒ Object
Constructor Details
#initialize(lib) ⇒ GitStatus
Returns a new instance of GitStatus.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# 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 |
Instance Attribute Details
#added ⇒ Enumerable (readonly)
Returns a sorted list of files that have been added.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/git-process/git_status.rb', line 28 class GitStatus attr_reader :unmerged, :modified, :deleted, :added, :unknown 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 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end # @return [Boolean] are there any changes in the index or working directory? def clean? @unmerged.empty? and @modified.empty? and @deleted.empty? and @added.empty? and @unknown.empty? end end |
#deleted ⇒ Enumerable (readonly)
Returns a sorted list of deleted files.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/git-process/git_status.rb', line 28 class GitStatus attr_reader :unmerged, :modified, :deleted, :added, :unknown 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 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end # @return [Boolean] are there any changes in the index or working directory? def clean? @unmerged.empty? and @modified.empty? and @deleted.empty? and @added.empty? and @unknown.empty? end end |
#modified ⇒ Enumerable (readonly)
Returns a sorted list of modified files.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/git-process/git_status.rb', line 28 class GitStatus attr_reader :unmerged, :modified, :deleted, :added, :unknown 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 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end # @return [Boolean] are there any changes in the index or working directory? def clean? @unmerged.empty? and @modified.empty? and @deleted.empty? and @added.empty? and @unknown.empty? end end |
#unknown ⇒ Enumerable (readonly)
Returns a sorted list of unknown files.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/git-process/git_status.rb', line 28 class GitStatus attr_reader :unmerged, :modified, :deleted, :added, :unknown 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 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end # @return [Boolean] are there any changes in the index or working directory? def clean? @unmerged.empty? and @modified.empty? and @deleted.empty? and @added.empty? and @unknown.empty? end end |
#unmerged ⇒ Enumerable (readonly)
Returns a sorted list of unmerged files.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/git-process/git_status.rb', line 28 class GitStatus attr_reader :unmerged, :modified, :deleted, :added, :unknown 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 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end # @return [Boolean] are there any changes in the index or working directory? def clean? @unmerged.empty? and @modified.empty? and @deleted.empty? and @added.empty? and @unknown.empty? end end |
Instance Method Details
#clean? ⇒ Boolean
Returns are there any changes in the index or working directory?.
102 103 104 |
# 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) ⇒ Object
96 97 98 |
# File 'lib/git-process/git_status.rb', line 96 def unquote(file) file.match(/^"?(.*?)"?$/)[1] end |