diff options
author | randx <dmitriy.zaporozhets@gmail.com> | 2012-05-26 13:37:49 +0300 |
---|---|---|
committer | randx <dmitriy.zaporozhets@gmail.com> | 2012-05-26 13:37:49 +0300 |
commit | 3272620f724737f4dbb5e8c02f1610946435cd29 (patch) | |
tree | ae9fb3daccdf6b008ccb9c31d435e9548113c6ee /lib/gitlabhq | |
parent | 8ceb94081ac516ccaed43f0f4841725a4f9fe2db (diff) | |
download | gitlab-ce-3272620f724737f4dbb5e8c02f1610946435cd29.tar.gz |
lib/ refactoring. Module Gitlabhq renamed to Gitlab
Diffstat (limited to 'lib/gitlabhq')
-rw-r--r-- | lib/gitlabhq/encode.rb | 20 | ||||
-rw-r--r-- | lib/gitlabhq/git_host.rb | 21 | ||||
-rw-r--r-- | lib/gitlabhq/gitolite.rb | 157 | ||||
-rw-r--r-- | lib/gitlabhq/logger.rb | 8 | ||||
-rw-r--r-- | lib/gitlabhq/satellite.rb | 41 |
5 files changed, 0 insertions, 247 deletions
diff --git a/lib/gitlabhq/encode.rb b/lib/gitlabhq/encode.rb deleted file mode 100644 index df40206d5eb..00000000000 --- a/lib/gitlabhq/encode.rb +++ /dev/null @@ -1,20 +0,0 @@ -module Gitlabhq - module Encode - extend self - - def utf8 message - return nil unless message - - hash = CharlockHolmes::EncodingDetector.detect(message) rescue {} - if hash[:encoding] - CharlockHolmes::Converter.convert(message, hash[:encoding], 'UTF-8') - else - message - end.force_encoding("utf-8") - # Prevent app from crash cause of - # encoding errors - rescue - "" - end - end -end diff --git a/lib/gitlabhq/git_host.rb b/lib/gitlabhq/git_host.rb deleted file mode 100644 index 9a6eecb3f0a..00000000000 --- a/lib/gitlabhq/git_host.rb +++ /dev/null @@ -1,21 +0,0 @@ -require File.join(Rails.root, "lib", "gitlabhq", "gitolite") - -module Gitlabhq - class GitHost - def self.system - Gitlabhq::Gitolite - end - - def self.admin_uri - GIT_HOST["admin_uri"] - end - - def self.url_to_repo(path) - if !GIT_HOST["port"] or GIT_HOST["port"] == 22 - "#{GIT_HOST["git_user"]}@#{GIT_HOST["host"]}:#{path}.git" - else - "ssh://#{GIT_HOST["git_user"]}@#{GIT_HOST["host"]}:#{GIT_HOST["port"]}/#{path}.git" - end - end - end -end diff --git a/lib/gitlabhq/gitolite.rb b/lib/gitlabhq/gitolite.rb deleted file mode 100644 index 48c67082b22..00000000000 --- a/lib/gitlabhq/gitolite.rb +++ /dev/null @@ -1,157 +0,0 @@ -require 'gitolite' -require 'timeout' -require 'fileutils' - -module Gitlabhq - class Gitolite - class AccessDenied < StandardError; end - - def self.update_project(path, project) - self.new.configure { |git| git.update_project(path, project) } - end - - def self.destroy_project(project) - self.new.configure { |git| git.destroy_project(project) } - end - - def pull - # create tmp dir - @local_dir = File.join(Dir.tmpdir,"gitlabhq-gitolite-#{Time.now.to_i}") - Dir.mkdir @local_dir - - `git clone #{GitHost.admin_uri} #{@local_dir}/gitolite` - end - - def push - Dir.chdir(File.join(@local_dir, "gitolite")) - `git add -A` - `git commit -am "Gitlab"` - `git push` - Dir.chdir(Rails.root) - - FileUtils.rm_rf(@local_dir) - end - - def configure - status = Timeout::timeout(20) do - File.open(File.join(Dir.tmpdir,"gitlabhq-gitolite.lock"), "w+") do |f| - begin - f.flock(File::LOCK_EX) - pull - yield(self) - push - ensure - f.flock(File::LOCK_UN) - end - end - end - rescue Exception => ex - Gitlabhq::Logger.error(ex.message) - raise Gitolite::AccessDenied.new("gitolite timeout") - end - - def destroy_project(project) - FileUtils.rm_rf(project.path_to_repo) - - ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite')) - conf = ga_repo.config - conf.rm_repo(project.path) - ga_repo.save - end - - #update or create - def update_keys(user, key) - File.open(File.join(@local_dir, 'gitolite/keydir',"#{user}.pub"), 'w') {|f| f.write(key.gsub(/\n/,'')) } - end - - def delete_key(user) - File.unlink(File.join(@local_dir, 'gitolite/keydir',"#{user}.pub")) - `cd #{File.join(@local_dir,'gitolite')} ; git rm keydir/#{user}.pub` - end - - # update or create - def update_project(repo_name, project) - ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite')) - conf = ga_repo.config - repo = update_project_config(project, conf) - conf.add_repo(repo, true) - - ga_repo.save - end - - # Updates many projects and uses project.path as the repo path - # An order of magnitude faster than update_project - def update_projects(projects) - ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite')) - conf = ga_repo.config - - projects.each do |project| - repo = update_project_config(project, conf) - conf.add_repo(repo, true) - end - - ga_repo.save - end - - def update_project_config(project, conf) - repo_name = project.path - - repo = if conf.has_repo?(repo_name) - conf.get_repo(repo_name) - else - ::Gitolite::Config::Repo.new(repo_name) - end - - name_readers = project.repository_readers - name_writers = project.repository_writers - name_masters = project.repository_masters - - pr_br = project.protected_branches.map(&:name).join(" ") - - repo.clean_permissions - - # Deny access to protected branches for writers - unless name_writers.blank? || pr_br.blank? - repo.add_permission("-", pr_br, name_writers) - end - - # Add read permissions - repo.add_permission("R", "", name_readers) unless name_readers.blank? - - # Add write permissions - repo.add_permission("RW+", "", name_writers) unless name_writers.blank? - repo.add_permission("RW+", "", name_masters) unless name_masters.blank? - - repo - end - - def admin_all_repo - ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite')) - conf = ga_repo.config - owner_name = "" - - # Read gitolite-admin user - # - begin - repo = conf.get_repo("gitolite-admin") - owner_name = repo.permissions[0]["RW+"][""][0] - raise StandardError if owner_name.blank? - rescue => ex - puts "Cant determine gitolite-admin owner".red - raise StandardError - end - - # @ALL repos premission for gitolite owner - repo_name = "@all" - repo = if conf.has_repo?(repo_name) - conf.get_repo(repo_name) - else - ::Gitolite::Config::Repo.new(repo_name) - end - - repo.add_permission("RW+", "", owner_name) - conf.add_repo(repo, true) - ga_repo.save - end - end -end diff --git a/lib/gitlabhq/logger.rb b/lib/gitlabhq/logger.rb deleted file mode 100644 index 08b4bde0b0c..00000000000 --- a/lib/gitlabhq/logger.rb +++ /dev/null @@ -1,8 +0,0 @@ -module Gitlabhq - class Logger - def self.error(message) - @@logger ||= ::Logger.new(File.join(Rails.root, "log/githost.log")) - @@logger.error(message) - end - end -end diff --git a/lib/gitlabhq/satellite.rb b/lib/gitlabhq/satellite.rb deleted file mode 100644 index cd713a647cc..00000000000 --- a/lib/gitlabhq/satellite.rb +++ /dev/null @@ -1,41 +0,0 @@ -module Gitlabhq - class Satellite - - PARKING_BRANCH = "__parking_branch" - - attr_accessor :project - - def initialize project - self.project = project - end - - def create - `git clone #{project.url_to_repo} #{path}` - end - - def path - File.join(Rails.root, "tmp", "repo_satellites", project.path) - end - - def exists? - File.exists? path - end - - #will be deleted all branches except PARKING_BRANCH - def clear - Dir.chdir(path) do - heads = Grit::Repo.new(".").heads.map{|head| head.name} - if heads.include? PARKING_BRANCH - `git checkout #{PARKING_BRANCH}` - else - `git checkout -b #{PARKING_BRANCH}` - end - heads.delete(PARKING_BRANCH) - heads.each do |head| - `git branch -D #{head}` - end - end - end - - end -end |