Commit bd2ca33d5827401a5ef380ddf323cff86ab38439
Exists in
master
and in
4 other branches
Merge branch 'relative' of /home/git/repositories/gitlab/gitlabhq
Showing
4 changed files
with
21 additions
and
4 deletions
Show diff stats
app/helpers/gitlab_markdown_helper.rb
@@ -64,7 +64,9 @@ module GitlabMarkdownHelper | @@ -64,7 +64,9 @@ module GitlabMarkdownHelper | ||
64 | # ref - name of the branch or reference, eg. stable | 64 | # ref - name of the branch or reference, eg. stable |
65 | # requested_path - path of request, eg. doc/api/README.md, used in special case when path is pointing to the .md file were the original request is coming from | 65 | # requested_path - path of request, eg. doc/api/README.md, used in special case when path is pointing to the .md file were the original request is coming from |
66 | # wiki - whether the markdown is from wiki or not | 66 | # wiki - whether the markdown is from wiki or not |
67 | - def create_relative_links(text, project_path_with_namespace, ref, requested_path, wiki = false) | 67 | + def create_relative_links(text, project, ref, requested_path, wiki = false) |
68 | + @path_to_satellite = project.satellite.path | ||
69 | + project_path_with_namespace = project.path_with_namespace | ||
68 | paths = extract_paths(text) | 70 | paths = extract_paths(text) |
69 | paths.each do |file_path| | 71 | paths.each do |file_path| |
70 | new_path = rebuild_path(project_path_with_namespace, file_path, requested_path, ref) | 72 | new_path = rebuild_path(project_path_with_namespace, file_path, requested_path, ref) |
@@ -145,13 +147,18 @@ module GitlabMarkdownHelper | @@ -145,13 +147,18 @@ module GitlabMarkdownHelper | ||
145 | 147 | ||
146 | def file_exists?(path) | 148 | def file_exists?(path) |
147 | return false if path.nil? || path.empty? | 149 | return false if path.nil? || path.empty? |
148 | - File.exists?(Rails.root.join(path)) | 150 | + File.exists?(path_on_fs(path)) |
149 | end | 151 | end |
150 | 152 | ||
151 | # Check if the path is pointing to a directory(tree) or a file(blob) | 153 | # Check if the path is pointing to a directory(tree) or a file(blob) |
152 | # eg. doc/api is directory and doc/README.md is file | 154 | # eg. doc/api is directory and doc/README.md is file |
153 | def local_path(path) | 155 | def local_path(path) |
154 | - File.directory?(Rails.root.join(path)) ? "tree" : "blob" | 156 | + File.directory?(path_on_fs(path)) ? "tree" : "blob" |
157 | + end | ||
158 | + | ||
159 | + # Path to the file in the satellites repository on the filesystem | ||
160 | + def path_on_fs(path) | ||
161 | + [@path_to_satellite, path].join("/") | ||
155 | end | 162 | end |
156 | 163 | ||
157 | # We will assume that if no ref exists we can point to master | 164 | # We will assume that if no ref exists we can point to master |
lib/redcarpet/render/gitlab_html.rb
@@ -36,7 +36,7 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML | @@ -36,7 +36,7 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML | ||
36 | 36 | ||
37 | def preprocess(full_document) | 37 | def preprocess(full_document) |
38 | if @project | 38 | if @project |
39 | - h.create_relative_links(full_document, @project.path_with_namespace, @ref, @request_path, is_wiki?) | 39 | + h.create_relative_links(full_document, @project, @ref, @request_path, is_wiki?) |
40 | else | 40 | else |
41 | full_document | 41 | full_document |
42 | end | 42 | end |
spec/factories.rb
@@ -66,6 +66,7 @@ FactoryGirl.define do | @@ -66,6 +66,7 @@ FactoryGirl.define do | ||
66 | 66 | ||
67 | after :create do |project| | 67 | after :create do |project| |
68 | TestEnv.clear_repo_dir(project.namespace, project.path) | 68 | TestEnv.clear_repo_dir(project.namespace, project.path) |
69 | + TestEnv.reset_satellite_dir | ||
69 | TestEnv.create_repo(project.namespace, project.path) | 70 | TestEnv.create_repo(project.namespace, project.path) |
70 | end | 71 | end |
71 | end | 72 | end |
spec/support/test_env.rb
@@ -97,6 +97,15 @@ module TestEnv | @@ -97,6 +97,15 @@ module TestEnv | ||
97 | FileUtils.rm_rf File.join(testing_path(), "#{name}.wiki.git") | 97 | FileUtils.rm_rf File.join(testing_path(), "#{name}.wiki.git") |
98 | end | 98 | end |
99 | 99 | ||
100 | + def reset_satellite_dir | ||
101 | + setup_stubs | ||
102 | + FileUtils.cd(seed_satellite_path) do | ||
103 | + `git reset --hard --quiet` | ||
104 | + `git clean -fx` | ||
105 | + `git checkout --quiet origin/master` | ||
106 | + end | ||
107 | + end | ||
108 | + | ||
100 | # Create a repo and it's satellite | 109 | # Create a repo and it's satellite |
101 | def create_repo(namespace, name) | 110 | def create_repo(namespace, name) |
102 | setup_stubs | 111 | setup_stubs |