module Gitlab 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