Commit 56d64409588726e1ee12bbb96c3ec3ae0bdadf7b

Authored by Genadi Samokovarov
1 parent 0d1cab60
Exists in master and in 1 other branch production

Support GitHub Enterprise repository links

Let companies or groups that run their own GitHub Enterprise installs be
able to link their own repositories.

That's the case with our company and we can't easily link the internal
repositories.
app/models/app.rb
@@ -99,7 +99,7 @@ class App @@ -99,7 +99,7 @@ class App
99 end 99 end
100 100
101 def github_url 101 def github_url
102 - "https://github.com/#{github_repo}" if github_repo? 102 + "#{Errbit::Config.github_url}/#{github_repo}" if github_repo?
103 end 103 end
104 104
105 def github_url_to_file(file) 105 def github_url_to_file(file)
@@ -196,8 +196,10 @@ class App @@ -196,8 +196,10 @@ class App
196 196
197 def normalize_github_repo 197 def normalize_github_repo
198 return if github_repo.blank? 198 return if github_repo.blank?
  199 + github_host = URI.parse(Errbit::Config.github_url).host
  200 + github_host = Regexp.escape(github_host)
199 github_repo.strip! 201 github_repo.strip!
200 - github_repo.sub!(/(git@|https?:\/\/)github\.com(\/|:)/, '') 202 + github_repo.sub!(/(git@|https?:\/\/)#{github_host}(\/|:)/, '')
201 github_repo.sub!(/\.git$/, '') 203 github_repo.sub!(/\.git$/, '')
202 end 204 end
203 end 205 end
config/config.example.yml
@@ -98,6 +98,10 @@ github_secret: 'GITHUB_SECRET' @@ -98,6 +98,10 @@ github_secret: 'GITHUB_SECRET'
98 # [] - No permission to create issues on any repos. 98 # [] - No permission to create issues on any repos.
99 github_access_scope: ['repo'] 99 github_access_scope: ['repo']
100 100
  101 +# Change this to point to the URL of your GitHub Enterprise installation, if
  102 +# you want to link local repositories.
  103 +github_url: https://github.com
  104 +
101 # Configure SMTP settings. If you are running Errbit on Heroku, 105 # Configure SMTP settings. If you are running Errbit on Heroku,
102 # sendgrid will be configured by default. 106 # sendgrid will be configured by default.
103 # ------------------------------------------------------------------------ 107 # ------------------------------------------------------------------------
config/initializers/_load_config.rb
@@ -21,6 +21,7 @@ unless defined?(Errbit::Config) @@ -21,6 +21,7 @@ unless defined?(Errbit::Config)
21 Errbit::Config.use_gravatar = ENV['ERRBIT_USE_GRAVATAR'] 21 Errbit::Config.use_gravatar = ENV['ERRBIT_USE_GRAVATAR']
22 Errbit::Config.gravatar_default = ENV['ERRBIT_GRAVATAR_DEFAULT'] 22 Errbit::Config.gravatar_default = ENV['ERRBIT_GRAVATAR_DEFAULT']
23 23
  24 + Errbit::Config.github_url = ENV['GITHUB_URL']
24 Errbit::Config.github_authentication = ENV['GITHUB_AUTHENTICATION'] 25 Errbit::Config.github_authentication = ENV['GITHUB_AUTHENTICATION']
25 Errbit::Config.github_client_id = ENV['GITHUB_CLIENT_ID'] 26 Errbit::Config.github_client_id = ENV['GITHUB_CLIENT_ID']
26 Errbit::Config.github_secret = ENV['GITHUB_SECRET'] 27 Errbit::Config.github_secret = ENV['GITHUB_SECRET']
@@ -64,6 +65,10 @@ default_config.each do |k,v| @@ -64,6 +65,10 @@ default_config.each do |k,v|
64 Errbit::Config.send("#{k}=", v) if Errbit::Config.send(k) === nil 65 Errbit::Config.send("#{k}=", v) if Errbit::Config.send(k) === nil
65 end 66 end
66 67
  68 +# Make sure the GitHub link doesn't end with a slash, so we don't have to deal
  69 +# with it later on in the code.
  70 +Errbit::Config.github_url.gsub!(/\/*\z/, '')
  71 +
67 # Disable GitHub oauth if gem is missing 72 # Disable GitHub oauth if gem is missing
68 Errbit::Config.github_authentication = false unless defined?(OmniAuth::Strategies::GitHub) 73 Errbit::Config.github_authentication = false unless defined?(OmniAuth::Strategies::GitHub)
69 74