class Raykit::Git::Repository
Functionality to manage a remote git repository
Attributes
clone_directory[RW]
url[RW]
The url of the remote repository
work_directory[RW]
Public Class Methods
new(url)
click to toggle source
# File lib/raykit/git/repository.rb, line 10 def initialize(url) @url=url @clone_directory = Raykit::Git::Directory.new(get_dev_dir('clone')) @work_directory = Raykit::Git::Directory.new(get_dev_dir('work')) end
parse(json)
click to toggle source
# File lib/raykit/git/repository.rb, line 20 def self.parse(json) hash=JSON.parse(json) repo=Repository.new(hash["url"]) repo end
Public Instance Methods
branches()
click to toggle source
The branches for the git repository
# File lib/raykit/git/repository.rb, line 46 def branches results = Array.new update_local_clone_directory if(Dir.exist?(local_clone_directory)) Dir.chdir(local_clone_directory) do `git branch`.split('\n').each{|line| branch = line.gsub('*','').strip results.insert(-1,branch) if(branch.length > 0) } end end results end
clone(directory,depth=0)
click to toggle source
Clone the repository to a specific directory
# File lib/raykit/git/repository.rb, line 37 def clone(directory,depth=0) if(depth == 0) PROJECT.run("git clone #{@url} #{directory}") else PROJECT.run("git clone #{@url} #{directory} --depth #{depth}") end end
get_dev_dir(dir)
click to toggle source
# File lib/raykit/git/repository.rb, line 31 def get_dev_dir(dir) dev_dir=Environment::get_dev_dir(dir) return "#{dev_dir}/#{relative_path}" end
latest_commit(branch)
click to toggle source
The latest commit id for a branch of the repostiory
# File lib/raykit/git/repository.rb, line 61 def latest_commit(branch) if(checkout_local_clone_directory_branch(branch)) text=`git log -n 1` scan=text.scan(/commit ([\w]+)\s/) return scan[0][0].to_s end '' end
latest_tag(branch)
click to toggle source
The latest tag for a branch of the repository
# File lib/raykit/git/repository.rb, line 71 def latest_tag(branch) if(checkout_local_clone_directory_branch(branch)) return `git describe --abbrev=0`.strip end '' end
relative_path()
click to toggle source
The relative path is a valid local path name derived from the url
# File lib/raykit/git/repository.rb, line 27 def relative_path @url.gsub('https://','').gsub('.git','').gsub('http://','') end
to_json()
click to toggle source
# File lib/raykit/git/repository.rb, line 16 def to_json JSON.generate({"url" => @url}) end
Private Instance Methods
checkout_local_clone_directory_branch(branch)
click to toggle source
# File lib/raykit/git/repository.rb, line 93 def checkout_local_clone_directory_branch(branch) update_local_clone_directory if(Dir.exist?(local_clone_directory)) Dir.chdir(local_clone_directory) do check=`git branch` if(!check.include?("* #{branch}")) t = `git checkout #{branch}` end check=`git branch` return check.include?("* #{branch}") end end false end
local_clone_directory()
click to toggle source
# File lib/raykit/git/repository.rb, line 78 def local_clone_directory clone_dir="#{Environment::get_dev_dir('clone')}/#{relative_path}" end
update_local_clone_directory()
click to toggle source
# File lib/raykit/git/repository.rb, line 82 def update_local_clone_directory if(Dir.exist?(local_clone_directory)) Dir.chdir(local_clone_directory) do Raykit::Command.new('git pull') #t = `git pull` end else PROJECT.run("git clone #{@url} #{local_clone_directory}") end end