Welcome to mirror list, hosted at ThFree Co, Russian Federation.

satellite.rb « gitlabhq « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cd713a647cc52e9f64328adea501a7a38295ad89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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