Commit 1521f467cbf8b1b9b3e9cb4169f3e96a9984bb46

Authored by Jason Hollingsworth
1 parent 26c8b316

Update default public pull url.

This updates the default pull URL for public projects when the user
is not logged in.
app/helpers/projects_helper.rb
@@ -179,4 +179,12 @@ module ProjectsHelper @@ -179,4 +179,12 @@ module ProjectsHelper
179 179
180 title 180 title
181 end 181 end
  182 +
  183 + def default_url_to_repo
  184 + current_user ? @project.url_to_repo : @project.http_url_to_repo
  185 + end
  186 +
  187 + def default_clone_protocol
  188 + current_user ? "ssh" : "http"
  189 + end
182 end 190 end
app/views/projects/empty.html.haml
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
29 touch README 29 touch README
30 git add README 30 git add README
31 git commit -m 'first commit' 31 git commit -m 'first commit'
32 - %span.clone= "git remote add origin #{@project.url_to_repo}" 32 + %span.clone= "git remote add origin #{default_url_to_repo}"
33 :preserve 33 :preserve
34 git push -u origin master 34 git push -u origin master
35 35
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 %pre.dark 38 %pre.dark
39 :preserve 39 :preserve
40 cd existing_git_repo 40 cd existing_git_repo
41 - %span.clone= "git remote add origin #{@project.url_to_repo}" 41 + %span.clone= "git remote add origin #{default_url_to_repo}"
42 :preserve 42 :preserve
43 git push -u origin master 43 git push -u origin master
44 44
app/views/shared/_clone_panel.html.haml
1 .git-clone-holder 1 .git-clone-holder
2 - %button{class: "btn #{ current_user ? 'active' : '' }", :"data-clone" => @project.ssh_url_to_repo} SSH  
3 - %button{class: "btn #{ current_user ? '' : 'active' }", :"data-clone" => @project.http_url_to_repo}= gitlab_config.protocol.upcase  
4 - = text_field_tag :project_clone, (current_user ? @project.url_to_repo : @project.http_url_to_repo), class: "one_click_select span5", readonly: true 2 + %button{class: "btn #{ 'active' if default_clone_protocol == 'ssh' }", :"data-clone" => @project.ssh_url_to_repo} SSH
  3 + %button{class: "btn #{ 'active' if default_clone_protocol == 'http' }", :"data-clone" => @project.http_url_to_repo}= gitlab_config.protocol.upcase
  4 + = text_field_tag :project_clone, default_url_to_repo, class: "one_click_select span5", readonly: true
features/public/public_projects.feature
@@ -26,6 +26,14 @@ Feature: Public Projects Feature @@ -26,6 +26,14 @@ Feature: Public Projects Feature
26 Given public empty project "Empty Public Project" 26 Given public empty project "Empty Public Project"
27 When I visit empty project page 27 When I visit empty project page
28 Then I should see empty public project details 28 Then I should see empty public project details
  29 + And I should see empty public project details with http clone info
  30 +
  31 + Scenario: I visit an empty public project page as user
  32 + Given I sign in as a user
  33 + And public empty project "Empty Public Project"
  34 + When I visit empty project page
  35 + Then I should see empty public project details
  36 + And I should see empty public project details with ssh clone info
29 37
30 Scenario: I visit public area as user 38 Scenario: I visit public area as user
31 Given I sign in as a user 39 Given I sign in as a user
@@ -42,10 +50,15 @@ Feature: Public Projects Feature @@ -42,10 +50,15 @@ Feature: Public Projects Feature
42 Scenario: I visit public project page 50 Scenario: I visit public project page
43 When I visit project "Community" page 51 When I visit project "Community" page
44 Then I should see project "Community" home page 52 Then I should see project "Community" home page
45 - And I should see a http link to the repository 53 + And I should see an http link to the repository
46 54
47 - Scenario: I visit public area as user 55 + Scenario: I visit public project page as user
48 Given I sign in as a user 56 Given I sign in as a user
49 When I visit project "Community" page 57 When I visit project "Community" page
50 Then I should see project "Community" home page 58 Then I should see project "Community" home page
51 - And I should see a ssh link to the repository 59 + And I should see an ssh link to the repository
  60 +
  61 + Scenario: I visit an empty public project page
  62 + Given public empty project "Empty Public Project"
  63 + When I visit empty project page
  64 + Then I should see empty public project details
features/steps/public/projects_feature.rb
@@ -46,6 +46,20 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps @@ -46,6 +46,20 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
46 page.should have_content 'Git global setup' 46 page.should have_content 'Git global setup'
47 end 47 end
48 48
  49 + step 'I should see empty public project details with http clone info' do
  50 + project = Project.find_by_name('Empty Public Project')
  51 + page.all(:css, '.git-empty .clone').each do |element|
  52 + element.text.should include(project.http_url_to_repo)
  53 + end
  54 + end
  55 +
  56 + step 'I should see empty public project details with ssh clone info' do
  57 + project = Project.find_by_name('Empty Public Project')
  58 + page.all(:css, '.git-empty .clone').each do |element|
  59 + element.text.should include(project.url_to_repo)
  60 + end
  61 + end
  62 +
49 step 'private project "Enterprise"' do 63 step 'private project "Enterprise"' do
50 create :project, name: 'Enterprise' 64 create :project, name: 'Enterprise'
51 end 65 end
@@ -84,12 +98,12 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps @@ -84,12 +98,12 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
84 end 98 end
85 end 99 end
86 100
87 - Then 'I should see a http link to the repository' do 101 + step 'I should see an http link to the repository' do
88 project = Project.find_by_name 'Community' 102 project = Project.find_by_name 'Community'
89 page.should have_field('project_clone', with: project.http_url_to_repo) 103 page.should have_field('project_clone', with: project.http_url_to_repo)
90 end 104 end
91 105
92 - Then 'I should see a ssh link to the repository' do 106 + step 'I should see an ssh link to the repository' do
93 project = Project.find_by_name 'Community' 107 project = Project.find_by_name 'Community'
94 page.should have_field('project_clone', with: project.url_to_repo) 108 page.should have_field('project_clone', with: project.url_to_repo)
95 end 109 end