class ProjMgr::Cvs

A wrapper class for interacting with a cvs repository

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

Public Instance Methods

checkout() click to toggle source

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

@return [String] The results from the ‘cvs co’ command

# File lib/projmgr/cvs.rb, line 15
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} && CVSROOT=#{@url} cvs co #{@project} &> /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/cvs.rb, line 54
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} && cvs -q status | grep ^[?F] | grep -v \"to-date\" && cd #{@root}`

          if results =~ /\? (.*)/ 
                        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 repo

@return [String] the results of ‘cvs update’ on the target repository

# File lib/projmgr/cvs.rb, line 32
def update
        if path_exists? == false
                return "path does not exists, cannot update repository"
        else
                results = `cd #{@path} && cvs update 2>&1 && cd #{@root}`
                results = results.split("\n")
                
                results.delete_if do |x|
                        x =~ /cvs update: /
                end
                                
                if results.empty?
                        return "Already up-to-date!"
                else
                        return results.join("\n")
                end
        end
end