summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-03-16 01:21:34 +0000
committerDouwe Maan <douwe@gitlab.com>2016-03-16 01:21:34 +0000
commitc9c14584b79a389f6a558a9a0b20d1b7ded03407 (patch)
tree7467268a34d23aca40bfcf98e5d5613af621cdc3
parentf83a596db3b58a5c4f4a1667c9e9c89d173e66e5 (diff)
parent8acad49fe0a492c2f4e16756135679b3a190543b (diff)
downloadgitlab-ce-c9c14584b79a389f6a558a9a0b20d1b7ded03407.tar.gz
Merge branch 'support-utf8-wiki-page-title' into 'master'
Support Wiki with UTF-8 page name ## What does this MR do? Support Wiki with UTF-8 page name. See https://github.com/gollum/gollum/pull/929 ## Why was this MR needed? Relax constraints for wiki slug in aac6598482036e12a20b4c75f2a508bd6a017245. It allows to create a wiki with UTF-8 name, but creating a wiki with UTF-8 name causes 500 error. Creating a wiki with UTF-8 name once, then creating or updating wiki with ascii name also cause 500 error i.e. no one can create and update any wiki pages in the project. ## Workaround 1. Go to `https://DOMAIN/repo/wikis/git_access` -> this page display the link to git clone 2. Clone the wiki repo 3. Find the page with UTF-8 name 4. Rename or Delete these files 5. Commit and push ## What are the relevant issue numbers? - #13979 - #13891 - #13698 - #13603 - #13317 - #12906 - #12825 - #10945 ## Todo - [x] Waiting for 'gollum-rugged_adapter' that support rugged v0.24.0 release 'gollum-rugged_adapter' gem doesn't allow to install rugged v0.24.0 (it's still beta version), but 'gitlab_git' gem depends on rugged v0.24.0b13. So it can't install both 'gollum-rugged_adapter' and 'gitlab_git' now. See merge request !2999
-rw-r--r--CHANGELOG1
-rw-r--r--Gemfile4
-rw-r--r--Gemfile.lock6
-rw-r--r--app/models/project_wiki.rb8
-rw-r--r--app/models/wiki_page.rb2
-rw-r--r--config/initializers/gollum.rb13
6 files changed, 27 insertions, 7 deletions
diff --git a/CHANGELOG b/CHANGELOG
index dc8c7040386..fcf659c07f9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,6 +10,7 @@ v 8.6.0 (unreleased)
setup. A password can be provided during setup (see installation docs), or
GitLab will ask the user to create a new one upon first visit.
- Fix issue when pushing to projects ending in .wiki
+ - Add support for wiki with UTF-8 page names (Hiroyuki Sato)
- Don't load all of GitLab in mail_room
- Update `omniauth-saml` to 1.5.0 to allow for custom response attributes to be set
- Memoize @group in Admin::GroupsController (Yatish Mehta)
diff --git a/Gemfile b/Gemfile
index a0e8e796627..a849d7493a7 100644
--- a/Gemfile
+++ b/Gemfile
@@ -58,7 +58,9 @@ gem "gitlab_git", '~> 9.0'
gem 'gitlab_omniauth-ldap', '~> 1.2.1', require: "omniauth-ldap"
# Git Wiki
-gem 'gollum-lib', '~> 4.1.0'
+# Required manually in config/initializers/gollum.rb to control load order
+gem 'gollum-lib', '~> 4.1.0', require: false
+gem 'gollum-rugged_adapter', '~> 0.4.2', require: false
# Language detection
gem "github-linguist", "~> 4.7.0", require: "linguist"
diff --git a/Gemfile.lock b/Gemfile.lock
index f4f5649eb75..669bfcf4d6b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -381,6 +381,9 @@ GEM
rouge (~> 1.9)
sanitize (~> 2.1.0)
stringex (~> 2.5.1)
+ gollum-rugged_adapter (0.4.2)
+ mime-types (>= 1.15)
+ rugged (~> 0.24.0, >= 0.21.3)
gon (6.0.1)
actionpack (>= 3.0)
json
@@ -703,7 +706,7 @@ GEM
rubyntlm (0.5.2)
rubypants (0.2.0)
rufus-scheduler (3.1.10)
- rugged (0.24.0b13)
+ rugged (0.24.0)
safe_yaml (1.0.4)
sanitize (2.1.0)
nokogiri (>= 1.4.4)
@@ -941,6 +944,7 @@ DEPENDENCIES
gitlab_meta (= 7.0)
gitlab_omniauth-ldap (~> 1.2.1)
gollum-lib (~> 4.1.0)
+ gollum-rugged_adapter (~> 0.4.2)
gon (~> 6.0.1)
grape (~> 0.13.0)
grape-entity (~> 0.4.2)
diff --git a/app/models/project_wiki.rb b/app/models/project_wiki.rb
index c96e6f0b8ea..59b1b86d1fb 100644
--- a/app/models/project_wiki.rb
+++ b/app/models/project_wiki.rb
@@ -2,7 +2,7 @@ class ProjectWiki
include Gitlab::ShellAdapter
MARKUPS = {
- 'Markdown' => :md,
+ 'Markdown' => :markdown,
'RDoc' => :rdoc,
'AsciiDoc' => :asciidoc
} unless defined?(MARKUPS)
@@ -47,7 +47,7 @@ class ProjectWiki
def wiki
@wiki ||= begin
Gollum::Wiki.new(path_to_repo)
- rescue Gollum::NoSuchPathError
+ rescue Rugged::OSError
create_repo!
end
end
@@ -90,7 +90,7 @@ class ProjectWiki
def create_page(title, content, format = :markdown, message = nil)
commit = commit_details(:created, message, title)
- wiki.write_page(title, format, content, commit)
+ wiki.write_page(title, format.to_sym, content, commit)
update_project_activity
rescue Gollum::DuplicatePageError => e
@@ -101,7 +101,7 @@ class ProjectWiki
def update_page(page, content, format = :markdown, message = nil)
commit = commit_details(:updated, message, page.title)
- wiki.update_page(page, page.name, format, content, commit)
+ wiki.update_page(page, page.name, format.to_sym, content, commit)
update_project_activity
end
diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb
index dbd70dc5a44..526760779a4 100644
--- a/app/models/wiki_page.rb
+++ b/app/models/wiki_page.rb
@@ -62,7 +62,7 @@ class WikiPage
# The raw content of this page.
def content
@attributes[:content] ||= if @page
- @page.raw_data
+ @page.text_data
end
end
diff --git a/config/initializers/gollum.rb b/config/initializers/gollum.rb
new file mode 100644
index 00000000000..703f24f93b2
--- /dev/null
+++ b/config/initializers/gollum.rb
@@ -0,0 +1,13 @@
+module Gollum
+ GIT_ADAPTER = "rugged"
+end
+require "gollum-lib"
+
+module Gollum
+ class Committer
+ # Patch for UTF-8 path
+ def method_missing(name, *args)
+ index.send(name, *args)
+ end
+ end
+end