2016-04-24 12 views
1

Ich hatte ein CVS-Repository in einem entfernten Standort befindet, die CVS über diese Umgebungsvariablen zugreifen können:Wie definiert man mehrere CVS ROOT?

export CVSROOT=:ext:[email protected]:/home/xyz/cvsroot 
export CVS_RSH=ssh 
export CVS_SERVER=cvs 

Vor kurzem habe ich einen anderen Server, die einen anderen Ort und eine andere Repository hat. Ich versuchte, die Lage über

export CVSROOT=$CVSROOT:ext:[email protected]:/cvs/cvsroot 

jedoch hinzufügen, ich bin nicht in der Lage Operationen auszuführen, wie Kasse und Update mit dem folgenden Fehler:

Cannot access /home/xyz/cvsroot:[email protected]:/cvs/cvsroot 
No such file or directory 

Was mache ich falsch?

+1

Es ist nicht klar, was „es“ ist, wenn Sie sagen, „es ist nicht zu funktionieren scheint“, sondern auf der Grundlage Ihrer ursprünglichen Variablen, Sie wollen wahrscheinlich 'export CVSROOT =": ext: [email protected]:/cvs/cvsroot "statt dessen. – indiv

+0

Sorry, meine Sprache war unklar, ich habe den Beitrag aktualisiert. Vielen Dank! – madchemist

Antwort

3

Wenn Sie in einem CVS-Repository sind, werden alle cvs-Operationen seine CVSROOT Informationen aus dem aktuellen Verzeichnis des nehmen CVS/Root Datei, unabhängig davon, was alle CVSROOT Umgebungsvariablen sind. Ihr einziges Problem besteht darin, wie Sie zunächst aus Ihren verschiedenen Repositorys auschecken.

Wenn Sie export CVSROOT=$CVSROOT:ext:[email protected]:/cvs/cvsroot Typ, der sagt „die Variable CVSROOT Umgebung verändern die alte Variable, um mit‚: ext: [email protected]:/cvs/cvsroot‘am Ende angehängt, wenn es das ist wahrscheinlich nicht das, was Sie wollen. . Sie müssen die $CVSROOT aus der rechten Seite nehmen.

als praktikable Workflow können Sie entweder

  • Lauf cvs -d <newcvsroot> co <reponame> jedes CVSROOT angeben, wie Sie tun, um Ihre cvs co (Sie unset CVS_RSH benötigen als Nun, ich weiß nicht, oder
  • könnte man auch export CVSROOT=<newcvsroot>; unset CVS_RSH; cvs co <reponame>.

Wenn Sie häufig sind aus mehreren Repositorys Check-out, können Sie die Umgebungsvariablen haben, wie diese aufgebaut, und dann können Sie ganz einfach von jedem Repo-Check-out. (In repos wie nötig.)

# in your .bashrc or someting 
export REPO1ROOT=:ext:[email protected]:/cvs/cvsroot 
export REPO2ROOT=:ext:[email protected]:/home/xyz/cvsroot 
export CVSROOT=$REPO1ROOT # default 

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

Ausgezeichnet! Das löst mein Problem sehr gut. Vielen Dank! Ich habe (fälschlicherweise) angenommen, dass wir CVSROOT auch während der Aktualisierung der Repositories definieren müssen, damit CVS weiß, von wo aus sie aktualisiert werden sollen. – madchemist