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 | 64 | # ref - name of the branch or reference, eg. stable |
| 65 | 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 | 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 | 70 | paths = extract_paths(text) |
| 69 | 71 | paths.each do |file_path| |
| 70 | 72 | new_path = rebuild_path(project_path_with_namespace, file_path, requested_path, ref) |
| ... | ... | @@ -145,13 +147,18 @@ module GitlabMarkdownHelper |
| 145 | 147 | |
| 146 | 148 | def file_exists?(path) |
| 147 | 149 | return false if path.nil? || path.empty? |
| 148 | - File.exists?(Rails.root.join(path)) | |
| 150 | + File.exists?(path_on_fs(path)) | |
| 149 | 151 | end |
| 150 | 152 | |
| 151 | 153 | # Check if the path is pointing to a directory(tree) or a file(blob) |
| 152 | 154 | # eg. doc/api is directory and doc/README.md is file |
| 153 | 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 | 162 | end |
| 156 | 163 | |
| 157 | 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 | 36 | |
| 37 | 37 | def preprocess(full_document) |
| 38 | 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 | 40 | else |
| 41 | 41 | full_document |
| 42 | 42 | end | ... | ... |
spec/factories.rb
spec/support/test_env.rb
| ... | ... | @@ -97,6 +97,15 @@ module TestEnv |
| 97 | 97 | FileUtils.rm_rf File.join(testing_path(), "#{name}.wiki.git") |
| 98 | 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 | 109 | # Create a repo and it's satellite |
| 101 | 110 | def create_repo(namespace, name) |
| 102 | 111 | setup_stubs | ... | ... |