【问题标题】:How to define multiple CVS ROOT?如何定义多个CVS ROOT?
【发布时间】:2016-04-24 19:28:33
【问题描述】:

我有一个位于远程位置的 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

我做错了什么?

【问题讨论】:

  • 当您说“它似乎不起作用”时,不清楚“它”是什么,但根据您的原始变量,您可能想要export CVSROOT=":ext:xyz@fgh.com:/cvs/cvsroot"
  • 对不起,我的语言不清楚,我更新了帖子。谢谢!

标签: linux bash ssh cvs


【解决方案1】:

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

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

# 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

【讨论】:

  • 太棒了!这很好地解决了我的问题。谢谢!我(错误地)假设我们需要在更新存储库时定义 CVSROOT,以便 CVS 知道从哪里更新它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 2013-11-28
  • 1970-01-01
相关资源
最近更新 更多