gollum lib -- A wiki built on top of Git.
========================================
This is a fork
It is made for the GitLab application and used in the Gitaly project.
For use outside of GitLab, refer to the upstream gollum-lib
gem.
DESCRIPTION
Gollum is a simple wiki system built on
top of Git that powers GitHub Wikis.
Gollum-lib is the Ruby API that allows you to retrieve raw or formatted wiki
content from a Git repository, write new content to the repository, and collect
various meta data about the wiki as a whole.
Gollum-lib follows the rules of Semantic Versioning and uses
TomDoc for inline documentation.
SYSTEM REQUIREMENTS
- Ruby 2.4+
- Unix like operating system (OS X, Ubuntu, Debian, and more)
- By default the Rugged adapter is used for MRI.
- Will not work on Windows.
INSTALLATION
The best way to install Gollum-lib is with RubyGems:
$ [sudo] gem install gitlab-gollum-lib
If you're installing from source, you can use Bundler to pick up all the
gems:
$ bundle install
In order to use the various formats that Gollum supports, you will need to
separately install the necessary dependencies for each format. You only need
to install the dependencies for the formats that you plan to use.
SYNTAX
Gollum supports a variety of formats and extensions (Markdown, MediaWiki, Textile, …).
On top of these formats Gollum lets you insert headers, footers, links, image, math and more.
Check out the Gollum Wiki for all of Gollum's formats and syntactic options.
API DOCUMENTATION
Initialize the Gollum::Repo
object:
require 'rubygems'
require 'gollum-lib'
wiki = Gollum::Wiki.new("my-gollum-repo.git")
By default, internal wiki links are all absolute from the root. To specify a different
base path, you can specify the :base_path
option:
wiki = Gollum::Wiki.new("my-gollum-repo.git", :base_path => "/wiki")
Note that base_path
just modifies the links.
Get the latest version of the given human or canonical page name:
page = wiki.page('page-name')
page.raw_data
page.formatted_data
page.format
vsn = page.version
vsn.id
Get the footer (if any) for a given page:
page.footer
Get the header (if any) for a given page:
page.header
Get a list of versions for a given page:
vsns = wiki.page('page-name').versions
vsns.first.id
vsns.first.authored_date
Get a specific version of a given canonical page file:
wiki.page('page-name', '5ec521178e0eec4dc39741a8978a2ba6616d0f0a')
Get the latest version of a given static file:
file = wiki.file('asset.js')
file.raw_data
file.version
Get a specific version of a given static file:
wiki.file('asset.js', '5ec521178e0eec4dc39741a8978a2ba6616d0f0a')
Get an in-memory Page preview (useful for generating previews for web
interfaces):
preview = wiki.preview_page("My Page", "# Contents", :markdown)
preview.formatted_data
Methods that write to the repository require a Hash of commit data that takes
the following form:
commit = { :message => 'commit message',
:name => 'Tom Preston-Werner',
:email => 'tom@github.com' }
Write a new version of a page (the file will be created if it does not already
exist) and commit the change. The file will be written at the repo root.
wiki.write_page('Page Name', :markdown, 'Page contents', commit)
Update an existing page. If the format is different than the page's current
format, the file name will be changed to reflect the new format.
page = wiki.page('Page Name')
wiki.update_page(page, page.name, page.format, 'Page contents', commit)
To delete a page and commit the change:
wiki.delete_page(page, commit)
Register or unregister a hook to be called after a page commit:
Gollum::Hook.register(:post_commit, :hook_id) do |committer, sha1|
end
Gollum::Hook.unregister(:post_commit, :hook_id)
WINDOWS FILENAME VALIDATION
Note that filenames on windows must not contain any of the following characters \ / : * ? " < > |
. See this support article for details.
RELEASING
Gollum-lib uses Semantic Versioning. Having x.y.z
:
For z releases:
$ rake bump
$ rake release
For x.y releases:
$ rake gemspec
$ rake release
BUILDING THE GEM FROM MASTER
$ gem uninstall -aIx gollum-lib
$ git clone https://github.com/gollum/gollum-lib.git
$ cd gollum-lib
gollum-lib$ rake build
gollum-lib$ rake install
RUN THE TESTS
$ bundle install
$ bundle exec rake test
WORK WITH TEST REPOS
An example of how to add a test file to the bare repository lotr.git
.
$ mkdir tmp; cd tmp
$ git clone ../lotr.git/ .
Cloning into '.'...
done.
$ git log
$ echo "test" > test.md
$ git add . ; git commit -am "Add test"
$ git push ../lotr.git/ master