Code Monkey home page Code Monkey logo

gollum's Introduction

gollum -- A git-based Wiki

Gem Version Build Status Open Source Helpers Cutting Edge Dependency Status Docker Pulls

See the wiki for extensive documentation, along with screenshots of Gollum's features.

DESCRIPTION

Gollum is a simple wiki system built on top of Git. A Gollum Wiki is simply a git repository of a specific nature:

  • A Gollum repository's contents are human-editable text or markup files.

  • Pages may be organized into directories any way you choose.

  • Other content can also be included, for example images, PDFs and headers/footers for your pages.

  • Gollum pages:

    • May be written in a variety of markups.
    • Can be edited with your favourite editor (changes will be visible after committing) or with the built-in web interface.
    • Can be displayed in all versions, reverted, etc.
  • Gollum strives to be compatible with GitHub and GitLab wikis.

    • Just clone your GitHub/GitLab wiki and view and edit it locally!
  • Gollum supports advanced functionality like:

SYSTEM REQUIREMENTS

Gollum runs both on Unix-like systems and on Windows.

Gollum runs either using 'normal' Ruby (MRI) or JRuby (Ruby on the Java Virtual Machine). On Windows, Gollum runs only using JRuby (either from source, or prebuilt).

On MRI, Gollum uses the rugged git library, while on JRuby/Java it utilizes the rjgit and JGit libraries. See here for more info.

INSTALLATION

As a Ruby Gem

Ruby is best installed either via RVM or a package manager of choice. Then simply: gem install gollum

Installation examples for individual systems can be seen here.

To run, simply:

  1. Run: gollum /path/to/wiki where /path/to/wiki is an initialized Git repository.
  2. Open http://localhost:4567 in your browser.

Via Docker

See here for instructions on how to run Gollum via Docker.

As a web application resource (Java)

The latest Release of Gollum will always contain a downloadable gollum.war file that can be directly executed on any system with a working Java installation:

java -jar gollum.war -S gollum <your-gollum-arguments-here>

Misc

See below for information on running Gollum from source, as a Rack app, and more.

MARKUPS

Gollum allows using different markup languages on different wiki pages. It presently ships with support for the following markups:

You can easily activate support for other markups by installing additional renderers (any that are supported by github-markup):

  • AsciiDoc -- gem install asciidoctor
  • Creole -- gem install creole
  • MediaWiki -- gem install wikicloth
  • Org -- gem install org-ruby
  • Pod -- requires Perl >= 5.10 (the perl command must be available on your command line)
    • Lower versions should install Pod::Simple from CPAN.
  • ReStructuredText -- requires python >= 3
    • Note that Gollum will also need you to install docutils for python
  • Textile -- gem install RedCloth

Markdown flavors

By default, Gollum ships with the kramdown gem to render Markdown. However, you can use any Markdown renderer supported by github-markup. This includes CommonMark support via the commonmarker gem. The first installed renderer from the list will be used (e.g., redcarpet will NOT be used if github/markdown is installed). Just gem install the renderer of your choice.

See here for instructions on how to use custom rendering gems and set custom options.

RUNNING FROM SOURCE

  1. git clone https://github.com/gollum/gollum
  2. cd gollum
  3. [sudo] bundle install
  4. bundle exec bin/gollum
  5. Open http://localhost:4567 in your browser.

Rack

Gollum can also be run with any rack-compatible web server. More on that over here.

Rack, with an authentication server

Gollum can also be run alongside a CAS (Central Authentication Service) SSO (single sign-on) server. With a bit of tweaking, this adds basic user-support to Gollum. To see an example and an explanation, navigate over here.

Service

Gollum can also be run as a service. More on that over here.

ENVIRONMENT

Gollum uses the environment variable APP_ENV primarily to control how the underlying Sinatra app behaves:

  • development โ€“ reload the app on every request
  • production โ€“ load the app only once

CONFIGURATION

Gollum comes with the following command line options:

Option Arguments Description
--host [HOST] Specify the hostname or IP address to listen on. Default: '0.0.0.0'.1
--port [PORT] Specify the port to bind Gollum with. Default: 4567.
--config [FILE] Specify path to Gollum's configuration file.
--ref [REF] Specify the git branch to serve. Default: master.
--bare none Tell Gollum that the git repository should be treated as bare.
--adapter [ADAPTER] Launch Gollum using a specific git adapter. Default: rugged.2
--base-path [PATH] Specify the leading portion of all Gollum URLs (path info). Setting this to /wiki will make the wiki accessible under http://localhost:4567/wiki/. Default: /.
--page-file-dir [PATH] Specify the subdirectory for all pages. If set, Gollum will only serve pages from this directory and its subdirectories. Default: repository root.
--static, --no-static none Use static assets. Defaults to false in development/test, true in production/staging.
--assets [PATH] Set the path to look for static assets.
--css none Tell Gollum to inject custom CSS into each page. Uses custom.css from wiki root.3
--js none Tell Gollum to inject custom JS into each page. Uses custom.js from wiki root.3
--no-edit none Disable the feature of editing pages.
--local-time none Use the browser's local timezone instead of the server's for displaying dates. Default: false.
--follow-renames, --no-follow-renames none Follow pages across renames in the History view. Default: true.
--allow-uploads [MODE] Enable file uploads. If set to dir, Gollum will store all uploads in the /uploads/ directory in repository root. If set to page, Gollum will store each upload at the currently edited page.4
--mathjax none Enables MathJax (renders mathematical equations). By default, uses the TeX-AMS-MML_HTMLorMML config with the autoload-all extension.5
--critic-markup none Enable support for annotations using CriticMarkup.
--irb none Launch Gollum in "console mode", with a predefined API.
--h1-title none Tell Gollum to use the first <h1> as page title.
--no-display-metadata none Do not render metadata tables in pages.
--user-icons [MODE] Tell Gollum to use specific user icons for history view. Can be set to gravatar, identicon or none. Default: none.
--mathjax-config [FILE] Specify path to a custom MathJax configuration. If not specified, uses the mathjax.config.js file from repository root.
--template-dir [PATH] Specify custom mustache template directory. Only overrides templates that exist in this directory.
--template-page none Use _Template in root as a template for new pages. Must be committed.
--emoji none Parse and interpret emoji tags (e.g. :heart:) except when the leading colon is backslashed (e.g. \:heart:).
--default-keybind none Set the default keybinding for the editor. Can be set to vim, or emacs.
--lenient-tag-lookup none Internal links resolve case-insensitively, will treat spaces as hyphens, and will match the first page found with a certain filename, anywhere in the repository. Provides compatibility with Gollum 4.x.
--help none Display the list of options on the command line.
--version none Display the current version of Gollum.
--versions none Display the current version of Gollum and auxiliary gems.

Notes:

  1. The 0.0.0.0 IP address allows remote access. Should you wish for Gollum to turn into a personal Wiki, use 127.0.0.1.
  2. Before using --adapter, you should probably read this first.
  3. When --css or --js is used, respective files must be committed to your git repository or you will get a 302 redirect to the create a page.
  4. Files can be uploaded simply by dragging and dropping them onto the editor's text area when --allow-uploads is used.

Config file

When --config option is used, certain inner parts of Gollum can be customized. This is used throughout our wiki for certain user-level alterations, among which customizing supported markups will probably stand out. See here for documentation about settings configurable in config.rb .

All of the mentioned alterations work both for Gollum's config file (config.rb) and Rack's config file (config.ru).

CONTRIBUTING

Please consider helping out! See CONTRIBUTING for information on how to submit issues, and how to start hacking on gollum.

gollum's People

Contributors

amenonsen avatar arr2036 avatar atmos avatar bartkamphorst avatar benjaminwil avatar blmarket avatar bootstraponline avatar cpence avatar dazoakley avatar dekimsey avatar dometto avatar ggrossetie avatar giga avatar heavywatal avatar henrikh avatar josh avatar jsoref avatar kristi avatar mojombo avatar mrjoy avatar nikitaivanovv avatar programfan avatar rgroux avatar simonzack avatar sunny avatar technoweenie avatar timtim123456 avatar trans avatar vmg avatar zoramite avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gollum's Issues

web front end isn't writing files when created or updated

if i make a file using the gollum web front end, the file is never written to the file system, so a git status reports that those files are deleted.

    [master] jamie@~/Documents/Projects/test: git status
         On branch master
         Changes to be committed:
         (use "git reset HEAD <file>..." to unstage)
         modified:   Home.md
         deleted:    test-new-page.md
    [master] jamie@~/Documents/Projects/test: 

markdown footnote problem

I use footnote syntax with gollum. Seems not work.

That's some text with a footnote.[^1]
 
[^1]: And that's the footnote.

Am I wrong? any idea??

frontend's method commit_message not setting author of commit properly

There's a code in frontend/app.rb in method commit_message:

author_name = `git config --get user.name`.strip || 'Anonymous'
author_email = `git config --get user.email`.strip || '[email protected]'

If git command doesn't return anything and result of the expression is empty string, it causes problems while viewing history via web frontend:

TypeError: can't convert nil into String
        /opt/ree/lib/ruby/gems/1.8/gems/gollum-1.0.1/lib/gollum/frontend/views/history.rb:21:in `digest'
        /opt/ree/lib/ruby/gems/1.8/gems/gollum-1.0.1/lib/gollum/frontend/views/history.rb:21:in `hexdigest'
        /opt/ree/lib/ruby/gems/1.8/gems/gollum-1.0.1/lib/gollum/frontend/views/history.rb:21:in `versions'
        /opt/ree/lib/ruby/gems/1.8/gems/gollum-1.0.1/lib/gollum/frontend/views/history.rb:12:in `map'
        /opt/ree/lib/ruby/gems/1.8/gems/gollum-1.0.1/lib/gollum/frontend/views/history.rb:12:in `versions'

page link mapping is confusing

Currently both [[Frodo Baggins]] and [[Frodo/Baggins]] links to Frodo-Baggins.ext.

This is confusing for two reasons:

1, In most wikis, Frodo Baggins maps to Frodo_Baggins.

2, Some users will use [[Frodo Baggins]], others will use [[Frodo/Baggins]] (and maybe some
will use [[Frodo-Baggins]]?). It appears there are three different wiki pages, but in fact they are talking about the same page.

Static generation

What about static generation? It would be nice if I could generate HTML (and also to customize it with templates).

I was really excited about jekyll. And it would be great if gollum also had such functionality.

I know, gollum is positioned as a wiki, but what if one could use it for personal weblogs or general purpose websites? Hah, we're moving back to old days of static web (with JS though).

My proposal is to add a command line parameter --static destination.

HTML format

I started on the patch to add raw HTML format option, but was not sure how to handle the editbar.mustache file for it.

NoSuchPathError for Wiki_sync_with_working_directory tests

Seems to me something might have been left out of the new working directory sync changes?

$ rake --trace
(in /Users/paul/gollum)
** Invoke default (first_time)
** Invoke test (first_time)
** Execute test
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -I"lib:lib:test:." "/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/test_file.rb" "test/test_markup.rb" "test/test_page.rb" "test/test_wiki.rb" 
Loaded suite /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
..........................................................................EEEEEEEEEEEE
Finished in 4.353747 seconds.

  1) Error:
test_delete_a_page(Wiki_sync_with_working_directory):
Grit::NoSuchPathError: /Users/paul/gollum/test/examples/wdtest
    /Library/Ruby/Gems/1.8/gems/grit-2.2.0/lib/grit/repo.rb:36:in `initialize'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `new'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `initialize'
    ./test/test_wiki.rb:220:in `new'
    ./test/test_wiki.rb:220:in `setup'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:18:in `run'

  2) Error:
test_delete_a_page(Wiki_sync_with_working_directory):
Errno::ENOENT: No such file or directory - ./test/./examples/wdtest
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1302:in `platform_support'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1296:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1285:in `remove'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:756:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1339:in `postorder_traverse'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:754:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:612:in `rm_r'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `each'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `rm_r'
    ./test/test_wiki.rb:267:in `teardown'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:30:in `run'

  3) Error:
test_update_a_page_with_different_name_and_different_format(Wiki_sync_with_working_directory):
Grit::NoSuchPathError: /Users/paul/gollum/test/examples/wdtest
    /Library/Ruby/Gems/1.8/gems/grit-2.2.0/lib/grit/repo.rb:36:in `initialize'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `new'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `initialize'
    ./test/test_wiki.rb:220:in `new'
    ./test/test_wiki.rb:220:in `setup'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:18:in `run'

  4) Error:
test_update_a_page_with_different_name_and_different_format(Wiki_sync_with_working_directory):
Errno::ENOENT: No such file or directory - ./test/./examples/wdtest
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1302:in `platform_support'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1296:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1285:in `remove'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:756:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1339:in `postorder_traverse'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:754:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:612:in `rm_r'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `each'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `rm_r'
    ./test/test_wiki.rb:267:in `teardown'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:30:in `run'

  5) Error:
test_update_a_page_with_different_name_and_same_format(Wiki_sync_with_working_directory):
Grit::NoSuchPathError: /Users/paul/gollum/test/examples/wdtest
    /Library/Ruby/Gems/1.8/gems/grit-2.2.0/lib/grit/repo.rb:36:in `initialize'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `new'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `initialize'
    ./test/test_wiki.rb:220:in `new'
    ./test/test_wiki.rb:220:in `setup'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:18:in `run'

  6) Error:
test_update_a_page_with_different_name_and_same_format(Wiki_sync_with_working_directory):
Errno::ENOENT: No such file or directory - ./test/./examples/wdtest
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1302:in `platform_support'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1296:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1285:in `remove'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:756:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1339:in `postorder_traverse'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:754:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:612:in `rm_r'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `each'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `rm_r'
    ./test/test_wiki.rb:267:in `teardown'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:30:in `run'

  7) Error:
test_update_a_page_with_same_name_and_different_format(Wiki_sync_with_working_directory):
Grit::NoSuchPathError: /Users/paul/gollum/test/examples/wdtest
    /Library/Ruby/Gems/1.8/gems/grit-2.2.0/lib/grit/repo.rb:36:in `initialize'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `new'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `initialize'
    ./test/test_wiki.rb:220:in `new'
    ./test/test_wiki.rb:220:in `setup'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:18:in `run'

  8) Error:
test_update_a_page_with_same_name_and_different_format(Wiki_sync_with_working_directory):
Errno::ENOENT: No such file or directory - ./test/./examples/wdtest
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1302:in `platform_support'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1296:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1285:in `remove'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:756:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1339:in `postorder_traverse'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:754:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:612:in `rm_r'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `each'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `rm_r'
    ./test/test_wiki.rb:267:in `teardown'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:30:in `run'

  9) Error:
test_update_a_page_with_same_name_and_format(Wiki_sync_with_working_directory):
Grit::NoSuchPathError: /Users/paul/gollum/test/examples/wdtest
    /Library/Ruby/Gems/1.8/gems/grit-2.2.0/lib/grit/repo.rb:36:in `initialize'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `new'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `initialize'
    ./test/test_wiki.rb:220:in `new'
    ./test/test_wiki.rb:220:in `setup'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:18:in `run'

 10) Error:
test_update_a_page_with_same_name_and_format(Wiki_sync_with_working_directory):
Errno::ENOENT: No such file or directory - ./test/./examples/wdtest
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1302:in `platform_support'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1296:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1285:in `remove'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:756:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1339:in `postorder_traverse'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:754:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:612:in `rm_r'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `each'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `rm_r'
    ./test/test_wiki.rb:267:in `teardown'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:30:in `run'

 11) Error:
test_write_a_page(Wiki_sync_with_working_directory):
Grit::NoSuchPathError: /Users/paul/gollum/test/examples/wdtest
    /Library/Ruby/Gems/1.8/gems/grit-2.2.0/lib/grit/repo.rb:36:in `initialize'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `new'
    /Users/paul/gollum/test/../lib/gollum/wiki.rb:62:in `initialize'
    ./test/test_wiki.rb:220:in `new'
    ./test/test_wiki.rb:220:in `setup'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:18:in `run'

 12) Error:
test_write_a_page(Wiki_sync_with_working_directory):
Errno::ENOENT: No such file or directory - ./test/./examples/wdtest
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1297:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1302:in `platform_support'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1296:in `remove_file'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1285:in `remove'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:756:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1339:in `postorder_traverse'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:754:in `remove_entry'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:612:in `rm_r'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `each'
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:608:in `rm_r'
    ./test/test_wiki.rb:267:in `teardown'
    /Library/Ruby/Gems/1.8/gems/mocha-0.9.8/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb:30:in `run'

80 tests, 165 assertions, 0 failures, 12 errors
rake aborted!
Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...]
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:995:in `sh'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1010:in `call'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1010:in `sh'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1094:in `sh'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1029:in `ruby'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1094:in `ruby'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/testtask.rb:117:in `define'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1112:in `verbose'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/testtask.rb:102:in `define'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:607:in `invoke_prerequisites'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `invoke_prerequisites'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:596:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

Deployment

What are the instructions for serving the wiki in production? Using gollum [folder] allows anyone to edit using your credentials.

Alternatively, is there an option to disallow editing?

Invalid command-line options make gollum spit out a stack trace instead of usage information

$ gollum --invalid
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1450:in `complete': invalid option: --invalid (OptionParser::InvalidOption)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1448:in `catch'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1448:in `complete'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1261:in `parse_in_order'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1254:in `catch'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1248:in `order!'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1339:in `permute!'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/optparse.rb:1360:in `parse!'
    from /Library/Ruby/Gems/1.8/gems/gollum-1.0.1/bin/gollum:40
    from /usr/bin/gollum:19:in `load'
    from /usr/bin/gollum:19

Gollum crashes with empty repo

When initializing a new repo, Gollum 1.0.1 crashes if there are no commits in the repository.

It would be awesome if Gollum had a init command that created a repo and initialized it with at least one commit.

Error running tests with TestUnit 2.0.3

trans@logisys:gollum$ rake test
(in /home/trans/Documents/programs/github.com/rubyworks/smeagol/vendor/gollum)
/usr/bin/ruby1.8 -I"lib:lib:test:." "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/test_markup.rb" "test/test_wiki.rb" "test/test_page.rb" "test/test_file.rb" 
/usr/lib/ruby/gems/1.8/gems/test-unit-2.0.3/lib/test/unit/testresult.rb:28: uninitialized constant Test::Unit::TestResult::TestResultFailureSupport (NameError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/lib/ruby/gems/1.8/gems/test-unit-2.0.3/lib/test/unit/ui/testrunnermediator.rb:9
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/lib/ruby/gems/1.8/gems/test-unit-2.0.3/lib/test/unit/ui/console/testrunner.rb:9
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/lib/ruby/1.8/test/unit/autorunner.rb:25
    from /usr/lib/ruby/1.8/test/unit/autorunner.rb:214:in `[]'
    from /usr/lib/ruby/1.8/test/unit/autorunner.rb:214:in `run'
    from /usr/lib/ruby/1.8/test/unit/autorunner.rb:12:in `run'
    from /usr/lib/ruby/1.8/test/unit.rb:279
    from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
rake aborted!
Command failed with status (1): [/usr/bin/ruby1.8 -I"lib:lib:test:." "/usr/...]

alternative escaping character

The single quote escaping is very interesting if users have some lisp background: avoid the evaluation of gollum tag.

But it feels strange for non lisp people. So I suggest support backslash escaping also. That is,

\[[Page Link]]

is equivalent to:

'[[Page Link]]

"Loading: <element>" frame hides "save page" button

It would be nice to move the "Loading: stuff" frame from left to right because when something is longer than expected to load (in my case "TeX web-font"), this caption hides the "save page" button and makes it almost inaccessible.

git hooks are not firing when using gollum web interface

In my wiki git repository, I created a post-commit hook which should push the commit changes to the remote server

#!/usr/bin/env bash
git push myserver master
exit

Manual commits fire the hook, however commits when editing gollum interface do not seem to fire post-commit hook. Am I missing something and/or doing something outrageously odd way?

I'm new to both gollum and git, so please be patient to my ignorance.

How does a commit work? New pages are deleted in git status

Maybe im not getting the idea, but how does a commit really work. I have Gollum working through the API and through gollum itself. But when i do some changes my "git status" says modified: Home.md and deleted: New-Page.md. I would think the files should be build on the filesystem and commited in the git repository?

app.rb should return content type for the file it's serving

when requesting a url to a static file gollum should set the content type.

i changed the show_page_or_file(name) method to the following in app.rb to fix the issue:

 def show_page_or_file(name)
   wiki = Gollum::Wiki.new($path)
   if page = wiki.page(name)
    @page = page
    @name = name
    @content = page.formatted_data
    mustache :page
  elsif file = wiki.file(name)
    content_type "application/octet-stream"
    file.raw_data
  else
    @name = name
    mustache :create
  end
end

ArgumentError - invalid byte sequence in UTF-8

$ /opt/ruby-1.9.2/bin/ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
$ /opt/ruby-1.9.2/bin/gem -v
1.3.7
$ echo $LANG
ru_RU.utf8

$ cd workspace/wiki && /opt/ruby-1.9.2/bin/gollum
== Sinatra/1.0 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

After hit http://localhost:4567/ I got error:
ArgumentError - invalid byte sequence in UTF-8:
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/ruby1.9.rb:3:in ord' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/ruby1.9.rb:3:ingetord'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/internal/loose.rb:130:in legacy_loose_object?' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/internal/loose.rb:43:inget_raw_object'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/internal/loose.rb:32:in []' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/repository.rb:84:inblock in get_raw_object_by_sha1'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/repository.rb:83:in each' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/repository.rb:83:inget_raw_object_by_sha1'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/repository.rb:334:in walk_log' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/repository.rb:287:inlog'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby/repository.rb:306:in rev_list' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby.rb:68:inblock in rev_list'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby.rb:224:in block in try_run' /opt/ruby-1.9.2/lib/ruby/1.9.1/timeout.rb:57:intimeout'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby.rb:223:in try_run' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/git-ruby.rb:68:inrev_list'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/commit.rb:94:in find_all' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/grit-2.1.0/lib/grit/repo.rb:261:incommit'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/gollum-1.0.1/lib/gollum/page.rb:254:in find' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/gollum-1.0.1/lib/gollum/wiki.rb:74:inpage'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/gollum-1.0.1/lib/gollum/frontend/app.rb:132:in show_page_or_file' /opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/gollum-1.0.1/lib/gollum/frontend/app.rb:38:inblock in class:App'
/opt/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865:in `call'
....

ArgumentError in repo.rb (of Grit) when trying to compare revisions

When I try to compare two revisions, I get this error:

ArgumentError at /compare/Setup-Guide/bb04377d9a542820fa814c8faab8aa098eb1a284...dafd269e2692d3e2f0a6a48d8ef055cdd81990d9
wrong number of arguments (5 for 3)
file: repo.rb location: diff line: 290

Stack Trace:

/Library/Ruby/Gems/1.8/gems/grit-2.0.0/lib/grit/repo.rb in diff
      self.git.diff({}, a, b, '--', *paths)
/Library/Ruby/Gems/1.8/gems/grit-2.0.0/lib/grit/repo.rb in diff
      self.git.diff({}, a, b, '--', *paths)
/Library/Ruby/Gems/1.8/gems/gollum-1.0.0/bin/../lib/gollum/frontend/app.rb in GET /compare/:name/:version_list
      diffs     = wiki.repo.diff(@versions.first, @versions.last, @page.path)
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call
            proc { unbound_method.bind(self).call(*@block_params) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route
            proc { unbound_method.bind(self).call(*@block_params) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in instance_eval
      throw :halt, instance_eval(&block)
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route_eval
      throw :halt, instance_eval(&block)
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route!
              route_eval(&block)
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in catch
            pass_block = catch(:pass) do
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route!
            pass_block = catch(:pass) do
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in each
        routes.each do |pattern, keys, conditions, block|
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route!
        routes.each do |pattern, keys, conditions, block|
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in dispatch!
      route!
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call!
      invoke { dispatch! }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in instance_eval
      res = catch(:halt) { instance_eval(&block) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in invoke
      res = catch(:halt) { instance_eval(&block) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in catch
      res = catch(:halt) { instance_eval(&block) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in invoke
      res = catch(:halt) { instance_eval(&block) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call!
      invoke { dispatch! }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call
      dup.call!(env)
/Library/Ruby/Gems/1.8/gems/rack-1.2.1/lib/rack/showexceptions.rb in call
      @app.call(env)
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call
        synchronize { prototype.call(env) }
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in synchronize
          yield
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call
        synchronize { prototype.call(env) }
/Library/Ruby/Gems/1.8/gems/rack-1.2.1/lib/rack/content_length.rb in call
      status, headers, body = @app.call(env)
/Library/Ruby/Gems/1.8/gems/rack-1.2.1/lib/rack/chunked.rb in call
      status, headers, body = @app.call(env)
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb in pre_process
        response = @app.call(@request.env)
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb in catch
      catch(:async) do
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb in pre_process
      catch(:async) do
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb in process
        post_process(pre_process)
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb in receive_data
      process if @request.parse(data)
/Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb in run_machine
        run_machine
/Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb in run
        run_machine
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/backends/base.rb in start
          EventMachine.run(&starter)
/Library/Ruby/Gems/1.8/gems/thin-1.2.7/lib/thin/server.rb in start
      @backend.start
/Library/Ruby/Gems/1.8/gems/rack-1.2.1/lib/rack/handler/thin.rb in run
        server.start
/Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in run!
        handler.run self, :Host => bind, :Port => port do |server|
/Library/Ruby/Gems/1.8/gems/gollum-1.0.0/bin/gollum in nil
Precious::App.run!(options)
/usr/bin/gollum in load
load Gem.bin_path('gollum', 'gollum', version)
/usr/bin/gollum in nil
load Gem.bin_path('gollum', 'gollum', version)

Is there any way to customize in gollum?

I found gollum today after searching github and installed it.
Very cool wiki i think.
Is there any way to customize the frontend ui??
I'm novice and please help some idea. thanks.

Documentation

What about gollum's documentation? Where to find it? Is the README.md all I need?

Can't seem to run behind Passenger

I see there's a wiki page to talk about something similar but I can't seem to get Gollum to run behind Passenger.

I'm trying Passenger + Gollum + Mongrel + RVM & a dedicated gemset. Sinatra takes the stage (per the Apache error_log) , but Gollum never returns the first page.

Here's the config.ru that I cribbed using RVM's instructions for a gemset + the gollum executable from the gem:

http://gist.github.com/564090

One last thing: this config.ru works fine when run w/ ruby config.ru

Virtual "all pages" page

On github, the wikis have a list of all pages in a given wiki, which can be handy for tracking down pages that have become orphaned. It'd be nice if gollum had a similar page too.

Gollum CMS

I have been wanting a CMS system that works much like Gollum for some time (git storage in particular). At this point I am think of forking Gollum and modifying to be a CMS instead of a Wiki.

But I am wondering, would it be possible to make Gollum configurable so as to support CMS usage rather then creating a whole new project?

Is any one else interested in a Gollum CMS?

Creole internal links and external links are not detected correctly

If I have a link like this in a creole document.

[[/documentation/|Documentation]]

Gollum parses it like this ...

<img src="/documentation/" />

When it should be a link.

Maybe I'm missing something but seems that gollum it's using the same tags for links/images as creole. http://www.wikicreole.org/wiki/Creole1.0#section-Creole1.0-LinksInternalExternalAndInterwiki

I've tried the http://github.com/mojombo/gollum-demo and have the same results when rendering creole pages. (http://localhost:4567/creole)

no such file to load -- shoulda (LoadError)

Maybe, it's a newbie question, but how to compile it?
When running rake I see this error:

    /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in
    `gem_original_require':
    no such file to load -- shoulda (LoadError)

When running gem install gollum I see that error:

    Building native extensions.  This could take a while...
    ERROR:  Error installing gollum:
    ERROR: Failed to build gem native extension.

What is gem native extension and how to install it?

Is Gollum supposed to work on Windows?

I'm trying to get gollum to work on a windows machine.

Environment:

  • ruby 1.9.2.p0 (via rubyinstaller)
  • msysgit: Git-1.7.0.2-preview20100309
  • Windows XP / 32 Bit

After doing a gem install gollum (succeeds without errors) I am trying to run gollum, but get the following error:

   D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:753:in `read': Invalid argument - <internal:lib/rubygems/custom_require> (Errno::EINVAL)
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:753:in `inline_templates='
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:706:in `set'
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:715:in `block in enable'
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:715:in `each'
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:715:in `enable'
    from (__DELEGATE__):2:in `enable'
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra.rb:7:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/gollum-1.0.1/lib/gollum/frontend/app.rb:1:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from D:/Ruby192/lib/ruby/gems/1.9.1/gems/gollum-1.0.1/bin/gollum:90:in `<top (required)>'
    from D:/Ruby192/bin/gollum:19:in `load'
    from D:/Ruby192/bin/gollum:19:in `<main>'

Any ideas what could be wrong? Or isn't it even supposed to run under Windows? :-)

1.9 Enumerable String

Tried to use Gollum on a 1.9 install and ran into a couple issues. I sat down and fixed the issue in a manner similar to how I saw 1.9 compatibility added to Grit. The branch can be found here

The basic issue was that 1.9 strings do not include enumerable any more but use the String#lines method to get an Enumerable object. I just defined a proxy to that method when running in 1.9 and fixed a few other minor 1.9 issues to get tests running.

A note in the commit message states that there is a corresponding fix to Grit that needs to occur to have Gollum work completely in a 1.9 instance. That issue is here.

Mount multiple Gollum-based Rack apps

Ideally I would like to be able do something like this in a config.ru:

require 'gollum/frontend/app'

run Rack::URLMap.new \
  "/wiki1" => Precious::App.new('path_to_repo_1'),
  "/wiki2" => Precious::App.new('path_to_repo_2')

Is something like this possible?

I see that the latest code has gollum_path for setting the path of the repository, but it isn't obvious to me right now how to properly wire this up.

Add ability to use a per repository config file

It would make it a bit easier to extend Gollum without having to mess with core. I'm thinking along the lines of a app.rb or config.rb file that gets added to the repo that will be read by Gollum when using the web-interface.

frontend url paths for versioned images

We may need to somehow add the version hash to images so that URLs don't break on old pages. How should the URLs work? Currently:

/:name - shows the page
/:name/:sha - shows a versioned page if :sha is a 40 character string.
/path/to/image.png - shows the image

My proposal is putting the sha in the front of all image links like this:

/:sha/path/to/image.png

Use alternate Markdown engine

I'd like to use Maruku (instead of RDiscount) to run the Markdown conversion, but I can't locate in the code where I can define which engine :markdown refers to in /lib/gollum/page.rb. Is the Markdown engine configurable and how?

Thanks!

add Table of Contents

Add a table of contents that is displayed as a submenu, like this. Follow the same rules as _Footer, allowing pages in subdirectories to have their own TOC.

Double escaping of '\' in LaTeX formulas

The backslash character needs to be escaped twice in LaTeX formulas.

Testcase (taken from MathJAX demo page):
[
\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k}
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0
\end{vmatrix}
]

The linebreaks doesn't show up until the '\' sequences are replaced with '\\'. Tested this with the ReST format.

Integrated with gist

Three backticks syntax highlight is cool. But we already have gist, so why not just integrate gist?

For example, just link to the gist:

[[http://gist.github.com/118964]]

And gollum will expand the gist automatically.

basic MediaWiki like functions in gollum

I find some automation in MediaWiki (http://www.mediawiki.org) handy:

  • generating content list from headers in a page. good for long pages.
  • reference tags link to auto-generated reference list at the bottom of the page.
  • columns for long lists.
  • category tags and article list generated for categories.

Great work, thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.