Permalink
Browse files

merrrge

  • Loading branch information...
2 parents 2523b4e + 8403868 commit ad561226b9e724877002115e68e3e572fdadba2d @technoweenie technoweenie committed Mar 31, 2011
Showing with 76 additions and 15 deletions.
  1. +4 −0 bin/gollum
  2. +3 −3 lib/gollum/committer.rb
  3. +2 −2 lib/gollum/page.rb
  4. +19 −10 lib/gollum/wiki.rb
  5. +13 −0 test/test_committer.rb
  6. +35 −0 test/test_wiki.rb
View
@@ -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|
wiki_options[:page_file_dir] = path
end
+
+ opts.on("--ref [REF]", "Specify the repository ref to use (default: master).") do |ref|
+ wiki_options[:ref] = ref
+ end
end
# Read command line options into `options` hash
@@ -62,7 +62,7 @@ def actor
# Returns an array of Grit::Commit instances.
def parents
@parents ||= begin
- arr = [@options[:parent] || @wiki.repo.commit('master')]
+ arr = [@options[:parent] || @wiki.repo.commit(@wiki.ref)]
arr.flatten!
arr.compact!
arr
@@ -142,7 +142,7 @@ def update_working_dir(dir, name, format)
#
# Returns the String SHA1 of the new commit.
def commit
- sha1 = index.commit(@options[:message], parents, actor)
+ sha1 = index.commit(@options[:message], parents, actor, nil, @wiki.ref)
@callbacks.each do |cb|
cb.call(self, sha1)
end
@@ -214,4 +214,4 @@ def method_missing(name, *args)
index.send(name, *args)
end
end
-end
+end
View
@@ -199,10 +199,10 @@ def versions(options = {})
options[:pretty] = 'raw'
options.delete :max_count
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)
else
- @wiki.repo.log('master', @path, log_pagination_options(options))
+ @wiki.repo.log(@wiki.ref, @path, log_pagination_options(options))
end
end
View
@@ -12,6 +12,9 @@ class << self
# Sets the markup class used by all instances of this Wiki.
attr_writer :markup_class
+ # Sets the default ref for the wiki.
+ attr_accessor :default_ref
+
# Sets the default name for commits.
attr_accessor :default_committer_name
@@ -80,6 +83,7 @@ def history_sanitization
end
end
+ self.default_ref = 'master'
self.default_committer_name = 'Anonymous'
self.default_committer_email = 'anon@anon.com'
@@ -94,6 +98,9 @@ def history_sanitization
# Gets the sanitization options for older page revisions used by this Wiki.
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.
attr_reader :page_file_dir
@@ -109,6 +116,7 @@ def history_sanitization
# :markup_class - The markup Class. Default: Gollum::Markup
# :sanitization - An instance of Sanitization.
# :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.
def initialize(path, options = {})
@@ -124,6 +132,7 @@ def initialize(path, options = {})
@file_class = options[:file_class] || self.class.file_class
@markup_class = options[:markup_class] || self.class.markup_class
@repo = @access.repo
+ @ref = options[:ref] || self.class.default_ref
@sanitization = options[:sanitization] || self.class.sanitization
@history_sanitization = options[:history_sanitization] ||
self.class.history_sanitization
@@ -139,20 +148,20 @@ def exist?
# Public: Get the formatted page for a given page name.
#
# 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.
- def page(name, version = 'master')
+ def page(name, version = @ref)
@page_class.new(self).find(name, version)
end
# Public: Get the static file for a given name.
#
# 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.
- def file(name, version = 'master')
+ def file(name, version = @ref)
@file_class.new(self).find(name, version)
end
@@ -290,7 +299,7 @@ def delete_page(page, commit)
else
Committer.new(self, commit)
end
-
+
committer.delete(page.path)
committer.after_commit do |index, sha|
@@ -381,11 +390,11 @@ def revert_commit(sha1, sha2 = nil, commit = {})
# 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.
def pages(treeish = nil)
- tree_list(treeish || 'master')
+ tree_list(treeish || @ref)
end
# Public: Returns the number of pages accessible from a commit
@@ -394,7 +403,7 @@ def pages(treeish = nil)
#
# Returns a Fixnum
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)
end
rescue Grit::GitRuby::Repository::NoSuchShaFound
@@ -407,7 +416,7 @@ def size(ref = nil)
#
# Returns an Array with Objects of page name and count of matches
def search(query)
- args = [{}, '-i', '-c', query, 'master', '--']
+ args = [{}, '-i', '-c', query, @ref, '--']
args << '--' << @page_file_dir if @page_file_dir
@repo.git.grep(*args).split("\n").map! do |line|
@@ -429,7 +438,7 @@ def search(query)
#
# Returns an Array of Grit::Commit.
def log(options = {})
- @repo.log('master', nil, log_pagination_options(options))
+ @repo.log(@ref, nil, log_pagination_options(options))
end
# Public: Refreshes just the cached Git reference data. This should
@@ -48,4 +48,17 @@
FileUtils.rm_rf(@path)
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
View
@@ -301,3 +301,38 @@
FileUtils.rm_r(@path)
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

0 comments on commit ad56122

Please sign in to comment.