def add_repo(repo_sha, repo_detail, cookbook_positions)
      @repositories ||= {}
      @repositories[repo_sha] = DevRepository.new(repo_detail[:repo_type],
                                                  repo_detail[:url],
                                                  repo_detail[:tag],
                                                  repo_detail[:cookboooks_path],
                                                  repo_detail[:ssh_key],
                                                  repo_detail[:username],
                                                  repo_detail[:password],
                                                  repo_sha,
                                                  cookbook_positions)
    end
def add_repo(repo_sha, repo_detail, cookbook_positions)
      @repositories ||= {}
      @repositories[repo_sha] = DevRepository.new(repo_detail[:repo_type],
                                                  repo_detail[:url],
                                                  repo_detail[:tag],
                                                  repo_detail[:cookboooks_path],
                                                  repo_detail[:ssh_key],
                                                  repo_detail[:username],
                                                  repo_detail[:password],
                                                  repo_sha,
                                                  cookbook_positions)
    end
Add a repository...

 === Parameters
 (Hash):: collection of repos to be checked out on the instance
 :repo_sha (String):: the hash id (SHA) of the repository
 :repo_detail (Hash):: info needed to checkout this repo
   {
     <Symbol> Type of repository: one of :git, :svn, :download or :local
       * :git denotes a 'git' repository that should be retrieved via 'git clone'
       * :svn denotes a 'svn' repository that should be retrieved via 'svn checkout'
       * :download denotes a tar ball that should be retrieved via HTTP GET (HTTPS if uri starts with https://)
       * :local denotes cookbook that is already local and doesn't need to be retrieved
     :repo_type => <Symbol>,
     <String> URL to repository (e.g. git://github.com/opscode/chef-repo.git)
     :url => <String>,
     <String> git commit or svn branch that should be used to retrieve repository
       Optional, use 'master' for git and 'trunk' for svn if tag is nil.
       Not used for raw repositories.
     :tag => <String>,
     <Array> Path to cookbooks inside repostory
       Optional (use location of repository as cookbook path if nil)
     :cookbooks_path => <Array>,
     <String> Private SSH key used to retrieve git repositories
       Optional, not used for svn and raw repositories.
     :ssh_key => <String>,
     <String> Username used to retrieve svn and raw repositories
       Optional, not used for git repositories.
     :username => <String>,
     <String> Password used to retrieve svn and raw repositories
       Optional, not used for git repositories.
     :password => <String>
  }
 :cookbook_positions (Array):: List of CookbookPositions to be developed.  Represents the subset of cookbooks identified as the "dev cookbooks"

 === Return
 result(Hash):: The entry added to the collection of repositories