如何定义多个CVS ROOT?

时间:2016-04-24 19:28:34

标签: linux bash ssh cvs

我有一个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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

当您在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