submodule_links: Handle in-repository submodule urls
Sometimes it is useful to store submodules in the same repository which contains links to them. Make the UI support this. See https://github.com/twosigma/git-meta/wiki/The-Omega-Repo for information about this strategy Signed-off-by: David Turner <novalis@novalis.org>
This commit is contained in:
parent
ea5d43a3b8
commit
897a85a461
3 changed files with 21 additions and 0 deletions
|
@ -7,6 +7,10 @@ module SubmoduleHelper
|
|||
def submodule_links(submodule_item, ref = nil, repository = @repository)
|
||||
url = repository.submodule_url_for(ref, submodule_item.path)
|
||||
|
||||
if url == '.' || url == './'
|
||||
url = File.join(Gitlab.config.gitlab.url, @project.full_path)
|
||||
end
|
||||
|
||||
if url =~ /([^\/:]+)\/([^\/]+(?:\.git)?)\Z/
|
||||
namespace, project = $1, $2
|
||||
project.sub!(/\.git\z/, '')
|
||||
|
|
4
changelogs/unreleased/omega-submodules.yml
Normal file
4
changelogs/unreleased/omega-submodules.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: 'Repository browser: handle in-repository submodule urls'
|
||||
merge_request:
|
||||
author: David Turner
|
|
@ -81,6 +81,19 @@ describe SubmoduleHelper do
|
|||
end
|
||||
end
|
||||
|
||||
context 'in-repository submodule' do
|
||||
let(:group) { create(:group, name: "Master Project", path: "master-project") }
|
||||
let(:project) { create(:empty_project, group: group) }
|
||||
before do
|
||||
self.instance_variable_set(:@project, project)
|
||||
end
|
||||
|
||||
it 'in-repository' do
|
||||
stub_url('./')
|
||||
expect(submodule_links(submodule_item)).to eq(["/master-project/#{project.path}", "/master-project/#{project.path}/tree/hash"])
|
||||
end
|
||||
end
|
||||
|
||||
context 'submodule on gitlab.com' do
|
||||
it 'detects ssh' do
|
||||
stub_url('git@gitlab.com:gitlab-org/gitlab-ce.git')
|
||||
|
|
Loading…
Reference in a new issue