class Git::Status
A class for git status
def [](file)
def [](file) @files[file] end
def added
-
(Enumerable)
-
def added @files.select { |_k, f| f.type == 'A' } end
def added?(file)
-
(Boolean)
-
Other tags:
- Example: Check if lib/git.rb is added. -
Parameters:
-
file
(String
) -- The name of the file.
def added?(file) added.member?(file) end
def changed
-
(Enumerable)
-
def changed @files.select { |_k, f| f.type == 'M' } end
def changed?(file)
-
(Boolean)
-
Other tags:
- Example: Check if lib/git.rb has changed. -
Parameters:
-
file
(String
) -- The name of the file.
def changed?(file) changed.member?(file) end
def construct_status
def construct_status @files = @base.lib.ls_files fetch_untracked fetch_modified fetch_added @files.each do |k, file_hash| @files[k] = StatusFile.new(@base, file_hash) end end
def deleted
-
(Enumerable)
-
def deleted @files.select { |_k, f| f.type == 'D' } end
def deleted?(file)
-
(Boolean)
-
Other tags:
- Example: Check if lib/git.rb is deleted. -
Parameters:
-
file
(String
) -- The name of the file.
def deleted?(file) deleted.member?(file) end
def each(&block)
def each(&block) @files.values.each(&block) end
def fetch_added
def fetch_added # find added but not committed - new files @base.lib.diff_index('HEAD').each do |path, data| @files[path] ? @files[path].merge!(data) : @files[path] = data end end
def fetch_modified
def fetch_modified # find modified in tree @base.lib.diff_files.each do |path, data| @files[path] ? @files[path].merge!(data) : @files[path] = data end end
def fetch_untracked
def fetch_untracked ignore = @base.lib.ignored_files Dir.chdir(@base.dir.path) do Dir.glob('**/*', File::FNM_DOTMATCH) do |file| next if @files[file] || File.directory?(file) || ignore.include?(file) || file =~ %r{^.git\/.+} @files[file] = { path: file, untracked: true } end end end
def initialize(base)
def initialize(base) @base = base construct_status end
def pretty
def pretty out = '' each do |file| out << pretty_file(file) end out << "\n" out end
def pretty_file(file)
def pretty_file(file) <<-FILE.strip_heredoc #{file.path} \tsha(r) #{file.sha_repo} #{file.mode_repo} \tsha(i) #{file.sha_index} #{file.mode_index} \ttype #{file.type} \tstage #{file.stage} \tuntrac #{file.untracked} FILE end
def untracked
-
(Enumerable)
-
def untracked @files.select { |_k, f| f.untracked } end
def untracked?(file)
-
(Boolean)
-
Other tags:
- Example: Check if lib/git.rb is an untracked file. -
Parameters:
-
file
(String
) -- The name of the file.
def untracked?(file) untracked.member?(file) end