Class: Gitdocs::Repository::Committer

Inherits:
Object
  • Object
show all
Defined in:
lib/gitdocs/repository/committer.rb

Instance Method Summary collapse

Constructor Details

#initialize(root_dirname) ⇒ Committer

Returns a new instance of Committer.

Raises:

  • if the repository is not valid for commits



6
7
8
9
10
11
12
13
14
15
# File 'lib/gitdocs/repository/committer.rb', line 6

def initialize(root_dirname)
  @root_dirname        = root_dirname
  @rugged              = Rugged::Repository.new(root_dirname)
  @grit                = Grit::Repo.new(root_dirname)
  @commit_message_path = File.expand_path('.gitmessage~', root_dirname)
rescue Rugged::OSError
  raise(Gitdocs::Repository::InvalidError, 'No directory')
rescue Rugged::RepositoryError
  raise(Gitdocs::Repository::InvalidError, 'Not a repository')
end

Instance Method Details

#commitBoolean

Returns:

  • (Boolean)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/gitdocs/repository/committer.rb', line 18

def commit
  # Do this first to allow the message file to be deleted, if it exists.
  message = read_and_delete_commit_message_file

  mark_empty_directories

  # FIXME: Consider a more appropriate location for the dirty check.
  return false unless Gitdocs::Repository.new(@root_dirname).dirty?
  Gitdocs.log_debug("Repo #{@root_dirname} is dirty")

  # Commit any changes in the working directory.
  Dir.chdir(@root_dirname) do
    @rugged.index.add_all
    @rugged.index.update_all
  end
  @rugged.index.write
  Gitdocs.log_debug("Index to be committed #{@rugged.index}")

  commit_result = @grit.commit_index(message)
  Gitdocs.log_debug("Commit result: <#{commit_result.inspect}>")

  true
end

#write_commit_message(message) ⇒ void

This method returns an undefined value.

Parameters:

  • message (String)


44
45
46
47
48
49
# File 'lib/gitdocs/repository/committer.rb', line 44

def write_commit_message(message)
  return unless message
  return if message.empty?

  File.open(@commit_message_path, 'w') { |f| f.print(message) }
end