normalize commit hashes so they at least show 'anonymous' if no git user is set.
This commit is contained in:
@@ -143,12 +143,9 @@ module Precious
|
|||||||
end
|
end
|
||||||
|
|
||||||
def commit_message
|
def commit_message
|
||||||
message = params[:message]
|
{ :message => params[:message],
|
||||||
author_name = `git config --get user.name`.strip || 'Anonymous'
|
:name => `git config --get user.name `.strip,
|
||||||
author_email = `git config --get user.email`.strip || 'anon@anon.com'
|
:email => `git config --get user.email`.strip }
|
||||||
{ :message => message,
|
|
||||||
:name => author_name,
|
|
||||||
:email => author_email }
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+26
-2
@@ -9,6 +9,12 @@ module Gollum
|
|||||||
# Sets the file class used by all instances of this Wiki.
|
# Sets the file class used by all instances of this Wiki.
|
||||||
attr_writer :file_class
|
attr_writer :file_class
|
||||||
|
|
||||||
|
# Sets the default name for commits.
|
||||||
|
attr_accessor :default_committer_name
|
||||||
|
|
||||||
|
# Sets the default email for commits.
|
||||||
|
attr_accessor :default_committer_email
|
||||||
|
|
||||||
# Gets the page class used by all instances of this Wiki.
|
# Gets the page class used by all instances of this Wiki.
|
||||||
# Default: Gollum::Page.
|
# Default: Gollum::Page.
|
||||||
def page_class
|
def page_class
|
||||||
@@ -32,6 +38,8 @@ module Gollum
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.default_committer_name = 'Anonymous'
|
||||||
|
self.default_committer_email = 'anon@anon.com'
|
||||||
|
|
||||||
# The String base path to prefix to internal links. For example, when set
|
# The String base path to prefix to internal links. For example, when set
|
||||||
# to "/wiki", the page "Hobbit" will be linked as "/wiki/Hobbit". Defaults
|
# to "/wiki", the page "Hobbit" will be linked as "/wiki/Hobbit". Defaults
|
||||||
@@ -115,7 +123,8 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns the String SHA1 of the newly written version.
|
# Returns the String SHA1 of the newly written version.
|
||||||
def write_page(name, format, data, commit = {})
|
def write_page(name, format, data, commit = {})
|
||||||
map = {}
|
commit = normalize_commit(commit)
|
||||||
|
map = {}
|
||||||
if pcommit = @repo.commit('master')
|
if pcommit = @repo.commit('master')
|
||||||
map = tree_map(pcommit.tree)
|
map = tree_map(pcommit.tree)
|
||||||
end
|
end
|
||||||
@@ -144,6 +153,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns the String SHA1 of the newly written version.
|
# Returns the String SHA1 of the newly written version.
|
||||||
def update_page(page, name, format, data, commit = {})
|
def update_page(page, name, format, data, commit = {})
|
||||||
|
commit = normalize_commit(commit)
|
||||||
pcommit = @repo.commit('master')
|
pcommit = @repo.commit('master')
|
||||||
map = tree_map(pcommit.tree)
|
map = tree_map(pcommit.tree)
|
||||||
name ||= page.name
|
name ||= page.name
|
||||||
@@ -169,7 +179,7 @@ module Gollum
|
|||||||
# page - The Gollum::Page to delete.
|
# page - The Gollum::Page to delete.
|
||||||
# commit - The commit Hash details:
|
# commit - The commit Hash details:
|
||||||
# :message - The String commit message.
|
# :message - The String commit message.
|
||||||
# :author - The String author full name.
|
# :name - The String author full name.
|
||||||
# :email - The String email address.
|
# :email - The String email address.
|
||||||
#
|
#
|
||||||
# Returns the String SHA1 of the newly written version.
|
# Returns the String SHA1 of the newly written version.
|
||||||
@@ -331,5 +341,19 @@ module Gollum
|
|||||||
(container || map).delete(name)
|
(container || map).delete(name)
|
||||||
map
|
map
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Ensures a commit hash has all the required fields for a commit.
|
||||||
|
#
|
||||||
|
# commit - The commit Hash details:
|
||||||
|
# :message - The String commit message.
|
||||||
|
# :name - The String author full name.
|
||||||
|
# :email - The String email address.
|
||||||
|
#
|
||||||
|
# Returns the commit Hash
|
||||||
|
def normalize_commit(commit = {})
|
||||||
|
commit[:name] = self.class.default_committer_name if commit[:name].to_s.empty?
|
||||||
|
commit[:email] = self.class.default_committer_email if commit[:email].to_s.empty?
|
||||||
|
commit
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -38,6 +38,21 @@ context "Wiki" do
|
|||||||
%w(Bilbo-Baggins.md Eye-Of-Sauron.md Home.textile My-Precious.md),
|
%w(Bilbo-Baggins.md Eye-Of-Sauron.md Home.textile My-Precious.md),
|
||||||
pages.map { |p| p.filename }.sort
|
pages.map { |p| p.filename }.sort
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "normalizes commit hash" do
|
||||||
|
commit = {:message => 'abc'}
|
||||||
|
assert_equal({:message => 'abc', :name => 'Anonymous', :email => 'anon@anon.com'},
|
||||||
|
@wiki.normalize_commit(commit.dup))
|
||||||
|
|
||||||
|
commit[:name] = 'bob'
|
||||||
|
commit[:email] = ''
|
||||||
|
assert_equal({:message => 'abc', :name => 'bob', :email => 'anon@anon.com'},
|
||||||
|
@wiki.normalize_commit(commit.dup))
|
||||||
|
|
||||||
|
commit[:email] = 'foo@bar.com'
|
||||||
|
assert_equal({:message => 'abc', :name => 'bob', :email => 'foo@bar.com'},
|
||||||
|
@wiki.normalize_commit(commit.dup))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "Wiki page previewing" do
|
context "Wiki page previewing" do
|
||||||
|
|||||||
Reference in New Issue
Block a user