Compare commits

...

18 Commits

Author SHA1 Message Date
rick 748d76dff1 Release 1.3.0 2011-04-25 20:59:57 -04:00
rick 2ebed41225 Merge branch 'master' of github.com:github/gollum 2011-04-25 20:47:46 -04:00
rick 86d14fa7ab Merged pull request #134 from mrjbq7/master.
Fixing search box location.
2011-04-25 11:38:01 -07:00
rick 82e31e971a Merged pull request #136 from freerange/master.
Remove redundant 1.8 compatibilty
2011-04-25 11:37:21 -07:00
Chris Roos 3d591b49cb Updated the gemspec.
Commit df505a7289 removed ruby1.8.rb but it was still included in the gemspec which caused Bundler to complain about an invalid Gemspec.

*NOTE* There are five test failures when running 'rake'.  I checked out the last commit before Tom's change (d3594f6652) and that also has these five failures so I'm happy that we didn't introduce them.
2011-04-15 15:54:35 +01:00
Tom Ward df505a7289 ruby1.8 compatibility isn't required to run gollum using ruby 1.8.7
The sanitize gem requires 1.8.7 or later, so compatibility with earlier versions is moot
2011-04-12 15:23:23 +01:00
rick 17dcde1f61 fix xss vulnerability in mathjax parsing 2011-04-11 23:29:06 -04:00
John Benediktsson 2a052cae8d Remove default width of page name header. 2011-04-10 22:28:37 -07:00
Tom Clark d3594f6652 Added 'All Pages' route and view 2011-04-09 14:09:36 -07:00
rick ad561226b9 merrrge 2011-03-31 15:11:24 -07:00
Tom Clark 8403868ac3 Test that wikis can write to different branches in isolation 2011-02-22 00:12:32 -05:00
Tom Clark a1d760df1e Write pages to the proper branch 2011-02-21 23:32:27 -05:00
Randy Merrill e3950d52c1 Removing the ref as an argument to the Committer#parents and just using the @wiki.ref.
Updated the test to reflect the change and to test creating a wiki with a custom ref returns the correct parent for the `Committer#parents`.
2011-01-27 13:59:39 -08:00
Randy Merrill 7427ddd900 Adding some tests to test that the commiter can retrieve parents that are not the same as the wiki ref.
Also testing that the default wiki ref works without passing a ref.
2011-01-27 13:00:54 -08:00
Randy Merrill 364b2b85ae Moving the ref to be an argument to the parents that defaults to the @wiki.ref 2011-01-27 12:46:29 -08:00
Randy Merrill a71ab7c418 Changing from using branch as the variable to using ref. 2011-01-27 11:38:48 -08:00
Randy Merrill 2bb1937fa9 Fixing the docs for the default branch. 2011-01-27 11:29:21 -08:00
Randy Merrill 3c44205be7 Adding the logic to accept a command line flag for the branch to use to retrieve pages. 2011-01-27 11:24:15 -08:00
16 changed files with 169 additions and 32 deletions
+19 -2
View File
@@ -1,4 +1,21 @@
# HEAD # 1.3.0 / 2011-04-25
* Major Enhancements
* Listing of all Pages
* Support for running Gollum under a separate branch.
* Minor Enhancements
* Fix a security issue with rendering Mathjax.
# 1.2.0 / 2011-03-11
* Major Enhancements
* Major HTML/CSS/JS overhaul.
* Add Sidebars (similar to Footers).
* Add commit reverts.
* Minor Enhancements
* Optimization in source code highlighting, resulting in a huge
decrease in rendering time.
* Security fixes related to source code highlighting.
* Major Enhancements * Major Enhancements
* Add Page sidebars, similar to Page footers. * Add Page sidebars, similar to Page footers.
@@ -51,4 +68,4 @@
# 1.0.0 / 2010-08-12 # 1.0.0 / 2010-08-12
* Open Source Birthday! * Open Source Birthday!
+4
View File
@@ -48,6 +48,10 @@ opts = OptionParser.new do |opts|
opts.on("--page-file-dir [PATH]", "Specify the sub directory for all page files (default: repository root).") do |path| opts.on("--page-file-dir [PATH]", "Specify the sub directory for all page files (default: repository root).") do |path|
wiki_options[:page_file_dir] = path wiki_options[:page_file_dir] = path
end end
opts.on("--ref [REF]", "Specify the repository ref to use (default: master).") do |ref|
wiki_options[:ref] = ref
end
end end
# Read command line options into `options` hash # Read command line options into `options` hash
+4 -3
View File
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
s.rubygems_version = '1.3.5' s.rubygems_version = '1.3.5'
s.name = 'gollum' s.name = 'gollum'
s.version = '1.2.0' s.version = '1.3.0'
s.date = '2011-03-31' s.date = '2011-04-25'
s.rubyforge_project = 'gollum' s.rubyforge_project = 'gollum'
s.summary = "A simple, Git-powered wiki." s.summary = "A simple, Git-powered wiki."
@@ -697,6 +697,7 @@ Gem::Specification.new do |s|
lib/gollum/frontend/templates/history.mustache lib/gollum/frontend/templates/history.mustache
lib/gollum/frontend/templates/layout.mustache lib/gollum/frontend/templates/layout.mustache
lib/gollum/frontend/templates/page.mustache lib/gollum/frontend/templates/page.mustache
lib/gollum/frontend/templates/pages.mustache
lib/gollum/frontend/templates/search.mustache lib/gollum/frontend/templates/search.mustache
lib/gollum/frontend/templates/searchbar.mustache lib/gollum/frontend/templates/searchbar.mustache
lib/gollum/frontend/views/compare.rb lib/gollum/frontend/views/compare.rb
@@ -707,12 +708,12 @@ Gem::Specification.new do |s|
lib/gollum/frontend/views/history.rb lib/gollum/frontend/views/history.rb
lib/gollum/frontend/views/layout.rb lib/gollum/frontend/views/layout.rb
lib/gollum/frontend/views/page.rb lib/gollum/frontend/views/page.rb
lib/gollum/frontend/views/pages.rb
lib/gollum/frontend/views/search.rb lib/gollum/frontend/views/search.rb
lib/gollum/git_access.rb lib/gollum/git_access.rb
lib/gollum/markup.rb lib/gollum/markup.rb
lib/gollum/page.rb lib/gollum/page.rb
lib/gollum/pagination.rb lib/gollum/pagination.rb
lib/gollum/ruby1.8.rb
lib/gollum/sanitization.rb lib/gollum/sanitization.rb
lib/gollum/wiki.rb lib/gollum/wiki.rb
templates/formatting.html templates/formatting.html
+1 -4
View File
@@ -7,9 +7,6 @@ require 'grit'
require 'github/markup' require 'github/markup'
require 'sanitize' require 'sanitize'
# ruby 1.8 compatibility
require 'gollum/ruby1.8'
# internal # internal
require 'gollum/git_access' require 'gollum/git_access'
require 'gollum/committer' require 'gollum/committer'
@@ -23,7 +20,7 @@ require 'gollum/albino'
require 'gollum/sanitization' require 'gollum/sanitization'
module Gollum module Gollum
VERSION = '1.2.0' VERSION = '1.3.0'
class Error < StandardError; end class Error < StandardError; end
+3 -3
View File
@@ -62,7 +62,7 @@ module Gollum
# Returns an array of Grit::Commit instances. # Returns an array of Grit::Commit instances.
def parents def parents
@parents ||= begin @parents ||= begin
arr = [@options[:parent] || @wiki.repo.commit('master')] arr = [@options[:parent] || @wiki.repo.commit(@wiki.ref)]
arr.flatten! arr.flatten!
arr.compact! arr.compact!
arr arr
@@ -142,7 +142,7 @@ module Gollum
# #
# Returns the String SHA1 of the new commit. # Returns the String SHA1 of the new commit.
def commit def commit
sha1 = index.commit(@options[:message], parents, actor) sha1 = index.commit(@options[:message], parents, actor, nil, @wiki.ref)
@callbacks.each do |cb| @callbacks.each do |cb|
cb.call(self, sha1) cb.call(self, sha1)
end end
@@ -214,4 +214,4 @@ module Gollum
index.send(name, *args) index.send(name, *args)
end end
end end
end end
+7
View File
@@ -169,6 +169,13 @@ module Precious
mustache :search mustache :search
end end
get '/pages' do
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
@results = wiki.pages
@ref = wiki.ref
mustache :pages
end
get '/*' do get '/*' do
show_page_or_file(params[:splat].first) show_page_or_file(params[:splat].first)
end end
@@ -42,7 +42,6 @@ a:hover, a:visited {
line-height: normal; line-height: normal;
margin: 0; margin: 0;
padding: 0.08em 0 0 0; padding: 0.08em 0 0 0;
width: 50%;
} }
#head ul.actions { #head ul.actions {
@@ -2,6 +2,8 @@
<div id="head"> <div id="head">
<h1>{{title}}</h1> <h1>{{title}}</h1>
<ul class="actions"> <ul class="actions">
<li class="minibutton"><a href="/pages"
class="action-all-pages">All Pages</a></li>
<li class="minibutton" class="jaws"> <li class="minibutton" class="jaws">
<a href="#" id="minibutton-new-page">New Page</a></li> <a href="#" id="minibutton-new-page">New Page</a></li>
<li class="minibutton"><a href="/edit/{{escaped_name}}" <li class="minibutton"><a href="/edit/{{escaped_name}}"
@@ -0,0 +1,35 @@
<div id="wiki-wrapper" class="results">
<div id="head">
<h1>{{title}}</h1>
<ul class="actions">
<li class="minibutton"><a href="/"
class="action-edit-page">Home</a></li>
</ul>
{{>searchbar}}
</div>
<div id="results">
{{#has_results}}
<ul>
{{#results}}
<li>
<a href="/{{name}}">{{name}}</a>
</li>
{{/results}}
</ul>
{{/has_results}}
{{#no_results}}
<p id="no-results">
There are no pages in <strong>{{ref}}</strong>.
</p>
{{/no_results}}
</div>
<div id="footer">
<ul class="actions">
<li class="minibutton"><a href="#">Back to Top</a></li>
</ul>
</div>
</div>
+19
View File
@@ -0,0 +1,19 @@
module Precious
module Views
class Pages < Layout
attr_reader :results, :ref
def title
"All pages in #{@ref}"
end
def has_results
!@results.empty?
end
def no_results
@results.empty?
end
end
end
end
+6 -4
View File
@@ -74,12 +74,14 @@ module Gollum
# Returns the placeholder'd String data. # Returns the placeholder'd String data.
def extract_tex(data) def extract_tex(data)
data.gsub(/\\\[\s*(.*?)\s*\\\]/m) do data.gsub(/\\\[\s*(.*?)\s*\\\]/m) do
id = Digest::SHA1.hexdigest($1) tag = CGI.escapeHTML($1)
@texmap[id] = [:block, $1] id = Digest::SHA1.hexdigest(tag)
@texmap[id] = [:block, tag]
id id
end.gsub(/\\\(\s*(.*?)\s*\\\)/m) do end.gsub(/\\\(\s*(.*?)\s*\\\)/m) do
id = Digest::SHA1.hexdigest($1) tag = CGI.escapeHTML($1)
@texmap[id] = [:inline, $1] id = Digest::SHA1.hexdigest(tag)
@texmap[id] = [:inline, tag]
id id
end end
end end
+2 -2
View File
@@ -199,10 +199,10 @@ module Gollum
options[:pretty] = 'raw' options[:pretty] = 'raw'
options.delete :max_count options.delete :max_count
options.delete :skip options.delete :skip
log = @wiki.repo.git.native "log", options, "master", "--", @path log = @wiki.repo.git.native "log", options, @wiki.ref, "--", @path
Grit::Commit.list_from_string(@wiki.repo, log) Grit::Commit.list_from_string(@wiki.repo, log)
else else
@wiki.repo.log('master', @path, log_pagination_options(options)) @wiki.repo.log(@wiki.ref, @path, log_pagination_options(options))
end end
end end
-3
View File
@@ -1,3 +0,0 @@
class String
alias :lines :to_a if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
end
+19 -10
View File
@@ -12,6 +12,9 @@ module Gollum
# Sets the markup class used by all instances of this Wiki. # Sets the markup class used by all instances of this Wiki.
attr_writer :markup_class attr_writer :markup_class
# Sets the default ref for the wiki.
attr_accessor :default_ref
# Sets the default name for commits. # Sets the default name for commits.
attr_accessor :default_committer_name attr_accessor :default_committer_name
@@ -80,6 +83,7 @@ module Gollum
end end
end end
self.default_ref = 'master'
self.default_committer_name = 'Anonymous' self.default_committer_name = 'Anonymous'
self.default_committer_email = 'anon@anon.com' self.default_committer_email = 'anon@anon.com'
@@ -94,6 +98,9 @@ module Gollum
# Gets the sanitization options for older page revisions used by this Wiki. # Gets the sanitization options for older page revisions used by this Wiki.
attr_reader :history_sanitization attr_reader :history_sanitization
# Gets the String ref in which all page files reside.
attr_reader :ref
# Gets the String directory in which all page files reside. # Gets the String directory in which all page files reside.
attr_reader :page_file_dir attr_reader :page_file_dir
@@ -109,6 +116,7 @@ module Gollum
# :markup_class - The markup Class. Default: Gollum::Markup # :markup_class - The markup Class. Default: Gollum::Markup
# :sanitization - An instance of Sanitization. # :sanitization - An instance of Sanitization.
# :page_file_dir - String the directory in which all page files reside # :page_file_dir - String the directory in which all page files reside
# :ref - String the repository ref to retrieve pages from
# #
# Returns a fresh Gollum::Repo. # Returns a fresh Gollum::Repo.
def initialize(path, options = {}) def initialize(path, options = {})
@@ -124,6 +132,7 @@ module Gollum
@file_class = options[:file_class] || self.class.file_class @file_class = options[:file_class] || self.class.file_class
@markup_class = options[:markup_class] || self.class.markup_class @markup_class = options[:markup_class] || self.class.markup_class
@repo = @access.repo @repo = @access.repo
@ref = options[:ref] || self.class.default_ref
@sanitization = options[:sanitization] || self.class.sanitization @sanitization = options[:sanitization] || self.class.sanitization
@history_sanitization = options[:history_sanitization] || @history_sanitization = options[:history_sanitization] ||
self.class.history_sanitization self.class.history_sanitization
@@ -139,20 +148,20 @@ module Gollum
# Public: Get the formatted page for a given page name. # Public: Get the formatted page for a given page name.
# #
# name - The human or canonical String page name of the wiki page. # name - The human or canonical String page name of the wiki page.
# version - The String version ID to find (default: "master"). # version - The String version ID to find (default: @ref).
# #
# Returns a Gollum::Page or nil if no matching page was found. # Returns a Gollum::Page or nil if no matching page was found.
def page(name, version = 'master') def page(name, version = @ref)
@page_class.new(self).find(name, version) @page_class.new(self).find(name, version)
end end
# Public: Get the static file for a given name. # Public: Get the static file for a given name.
# #
# name - The full String pathname to the file. # name - The full String pathname to the file.
# version - The String version ID to find (default: "master"). # version - The String version ID to find (default: @ref).
# #
# Returns a Gollum::File or nil if no matching file was found. # Returns a Gollum::File or nil if no matching file was found.
def file(name, version = 'master') def file(name, version = @ref)
@file_class.new(self).find(name, version) @file_class.new(self).find(name, version)
end end
@@ -290,7 +299,7 @@ module Gollum
else else
Committer.new(self, commit) Committer.new(self, commit)
end end
committer.delete(page.path) committer.delete(page.path)
committer.after_commit do |index, sha| committer.after_commit do |index, sha|
@@ -381,11 +390,11 @@ module Gollum
# Public: Lists all pages for this wiki. # Public: Lists all pages for this wiki.
# #
# treeish - The String commit ID or ref to find (default: master) # treeish - The String commit ID or ref to find (default: @ref)
# #
# Returns an Array of Gollum::Page instances. # Returns an Array of Gollum::Page instances.
def pages(treeish = nil) def pages(treeish = nil)
tree_list(treeish || 'master') tree_list(treeish || @ref)
end end
# Public: Returns the number of pages accessible from a commit # Public: Returns the number of pages accessible from a commit
@@ -394,7 +403,7 @@ module Gollum
# #
# Returns a Fixnum # Returns a Fixnum
def size(ref = nil) def size(ref = nil)
tree_map_for(ref || 'master').inject(0) do |num, entry| tree_map_for(ref || @ref).inject(0) do |num, entry|
num + (@page_class.valid_page_name?(entry.name) ? 1 : 0) num + (@page_class.valid_page_name?(entry.name) ? 1 : 0)
end end
rescue Grit::GitRuby::Repository::NoSuchShaFound rescue Grit::GitRuby::Repository::NoSuchShaFound
@@ -407,7 +416,7 @@ module Gollum
# #
# Returns an Array with Objects of page name and count of matches # Returns an Array with Objects of page name and count of matches
def search(query) def search(query)
args = [{}, '-i', '-c', query, 'master', '--'] args = [{}, '-i', '-c', query, @ref, '--']
args << '--' << @page_file_dir if @page_file_dir args << '--' << @page_file_dir if @page_file_dir
@repo.git.grep(*args).split("\n").map! do |line| @repo.git.grep(*args).split("\n").map! do |line|
@@ -429,7 +438,7 @@ module Gollum
# #
# Returns an Array of Grit::Commit. # Returns an Array of Grit::Commit.
def log(options = {}) def log(options = {})
@repo.log('master', nil, log_pagination_options(options)) @repo.log(@ref, nil, log_pagination_options(options))
end end
# Public: Refreshes just the cached Git reference data. This should # Public: Refreshes just the cached Git reference data. This should
+13
View File
@@ -48,4 +48,17 @@ context "Wiki" do
FileUtils.rm_rf(@path) FileUtils.rm_rf(@path)
end end
end end
test "parents with default master ref" do
ref = 'a8ad3c09dd842a3517085bfadd37718856dee813'
committer = Gollum::Committer.new(@wiki)
assert_equal ref, committer.parents.first.sha
end
test "parents with custom ref" do
ref = '60f12f4254f58801b9ee7db7bca5fa8aeefaa56b'
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"), :ref => ref)
committer = Gollum::Committer.new(@wiki)
assert_equal ref, committer.parents.first.sha
end
end end
+35
View File
@@ -301,3 +301,38 @@ context "page_file_dir option" do
FileUtils.rm_r(@path) FileUtils.rm_r(@path)
end end
end end
context "Wiki page writing with different branch" do
setup do
@path = testpath("examples/test.git")
FileUtils.rm_rf(@path)
@repo = Grit::Repo.init_bare(@path)
@wiki = Gollum::Wiki.new(@path)
# We need an initial commit to create the master branch
# before we can create new branches
cd = commit_details
@wiki.write_page("Gollum", :markdown, "# Gollum", cd)
# Create our test branch and check it out
@repo.update_ref("test", @repo.commits.first.id)
@branch = Gollum::Wiki.new(@path, :ref => "test")
end
teardown do
FileUtils.rm_rf(@path)
end
test "write_page" do
cd = commit_details
@branch.write_page("Bilbo", :markdown, "# Bilbo", commit_details)
assert @branch.page("Bilbo")
assert @wiki.page("Gollum")
assert_equal 1, @wiki.repo.commits.size
assert_equal 1, @branch.repo.commits.size
assert_equal nil, @wiki.page("Bilbo")
end
end