class ProjMgr::Git

A wrapper class for interacting with a git repository

@author Jacob Hammack <jacob.hammack@hammackj.com>

Public Instance Methods

checkout() click to toggle source

Checks out a git repo and places it, in the path specified by the @path variable

@return [String] The results from the ‘git clone’ command

# File lib/projmgr/git.rb, line 16
def checkout
        if path_exists? == true
                return "path exists, cannot checkout onto an existing repo"
        else
                parent = project_parent_directory

                cmd = IO.popen "cd #{parent} && git clone #{@url} &> /dev/null && cd #{@root}"
                results = cmd.readlines
                cmd.close

                return "project checked out to #{parent}/#{@project}"
        end
end
has_local_changes?() click to toggle source

Checks for local changes in the target repository

@return [Boolean] if there is local changes or not

# File lib/projmgr/git.rb, line 50
def has_local_changes?
        if path_exists? == false
                return false, "path does not exists, please check the path or check it out"
        else
                results = `cd #{@path} && git status && cd #{@root}`

                if results !~ /nothing to commit/
                        return true, "has local changes"
                elsif results =~ /Your branch is ahead of/
                        return true, "has local changes"
                elsif results =~ /Untracked files/
                        return true, "has local changes"
                else
                        return false, "has no local changes"
                end
        end
end
update() click to toggle source

Checks for updates in the target repository

@return [String] the results of ‘git pull’ on the target repository

# File lib/projmgr/git.rb, line 33
def update
        if path_exists? == false
                return "path does not exists, cannot update repository"
        else
                results = `cd #{@path} && git pull && cd #{@root}`

                if results =~ /Already up-to-date./
                        return "Already up-to-date!"
                else
                        return results
                end
        end
end