如何定义多个CVS ROOT?

How to define multiple CVS ROOT?

我有一个位于远程位置的 CVS 存储库,CVS 可以通过这些环境变量访问它:

export CVSROOT=:ext:xyz@abc.com:/home/xyz/cvsroot
export CVS_RSH=ssh
export CVS_SERVER=cvs

最近我添加了另一台服务器,它具有不同的位置和不同的存储库。我尝试通过

添加位置
export CVSROOT=$CVSROOT:ext:xyz@fgh.com:/cvs/cvsroot

但是,我无法执行结帐和更新等操作,出现以下错误:

Cannot access /home/xyz/cvsroot:xyz@fgh.com:/cvs/cvsroot
No such file or directory

我做错了什么?

当您在 CVS 存储库中时,任何 cvs 操作都将从当前目录的 CVS/Root 文件中获取其 CVSROOT 信息,无论那里有什么 CVSROOT 环境变量。因此,您唯一的问题是如何从不同的存储库进行初始结帐。

当您键入 export CVSROOT=$CVSROOT:ext:xyz@fgh.com:/cvs/cvsroot 时,上面写着“将 CVSROOT 环境变量更改为旧变量,并在末尾附加 ':ext:xyz@fgh.com:/cvs/cvsroot' 如果它。这可能不是您想要的。您需要从右侧取出 $CVSROOT

作为可行的工作流程,您可以

  • 运行 cvs -d <newcvsroot> co <reponame> 以指定每个 CVSROOT,就像您执行 cvs co 一样(您可能还需要 unset CVS_RSH,我不知道),或
  • 你也可以export CVSROOT=<newcvsroot>; unset CVS_RSH; cvs co <reponame>.

如果您经常从多个存储库中检出,您可能希望像这样设置环境变量,然后您可以轻松地从每个存储库中检出。 (根据需要添加回购协议。)

# in your .bashrc or someting
export REPO1ROOT=:ext:xyz@fgh.com:/cvs/cvsroot
export REPO2ROOT=:ext:xyz@abc.com:/home/xyz/cvsroot
export CVSROOT=$REPO1ROOT # default

# when you use the command line
cvs co repo1
cvs -d $REPO2ROOT co repo2