<?php
/**
 * BRAINSTORMING ONLY
 * 
 * interface for a version control system
 * @author hahn
 */
interface iVcs {

    // ----------------------------------------------------------------------
    // get metadata 
    // ----------------------------------------------------------------------

    /**
     * return url to vcs sources
     */
    public function getUrl();
    
    /**
     * return url to view sources in webrowser to generate an infolink
     */
    public function getWebGuiUrl();
    
    /**
     * return the build type, i.e. git|svn|cvs|
     */
    public function getBuildType();
    
    // ----------------------------------------------------------------------
    // actions
    // ----------------------------------------------------------------------
    /**
     * cleanup unneeded files and directories in a checked out directory
     * and remove all vcs specific files and directories
     * @return bool
     */
    public function cleanupWorkdir($sWorkDir);
    
    /**
     * get current revision and commit message from remote repository
     * @param boolean  $bRefresh  optional: refresh data; default: use cache
     * @return array
     */
    public function getRepoRevision($bRefresh=false);
    
    /**
     * get current revision and log message from given directory
     * @return array
     */
    public function getRevision($sWorkDir);
    
    /**
     * get sources from vsc and check them out in given directory
     * @return bool
     */
    public function getSources($sWorkDir);
    

}