GetComponents: Allow !ANON_USER and !ANON_PASS not to be specified in a cvs checkout.

Issue #471 closed
Bruno Mundim created an issue

I would like to checkout cvs modules from a repository where ssh keys and ssh-agent are used to allow for a passwordless checkout. At the moment GetComponent doesn't seem to handle well this case. For example, once my keys are hold by ssh-agent the following command allows me to checkout cvs_module located at cvs_repo_path on cvsrepo repository:

cvs -d :ext:cvsrepo:cvs_repo_path co path_to_module/cvs_module

However if I set on the CRL file the following directives:

!TARGET = $ARR !TYPE = cvs !URL = :ext:cvsrepo:cvs_repo_path !REPO_PATH = path_to_module/$1 !CHECKOUT = cvs_module

I got the following error:

Checking out module: cvs_module from repository: :@:ext:cvsrepo:cvs_repo_path into: Cactus/arrangements Executing: cvs -z9 -q -d :@:ext:cvsrepo:cvs_repo_path checkout cvs_module In: Cactus/arrangements cvs checkout: Unknown method (@') in CVSROOT. cvs [checkout aborted]: Bad CVSROOT::@:ext:cvsrepo:cvs_repo_path'.

This happens because GetComponents expects the directives !ANON_USER and !ANON_PASS to be specified in a anonymous checkout (as I usually set when I use ssh keys to authenticate my access to a particular repository). However in doing so it prevents a passwordless checkout. The attached patch fix this problem, but maybe the best solution would be to allow the user to specify a promptless !AUTH_URL directive so that "$user:$pass\@" is not included in the repository specification.

Keyword:

Comments (3)

  1. Log in to comment