É necessário executar 'cvs init'?

Não! O repositório já está inicializado e é único: está em /home/cvs/comp.
Não está em /home/cvs/comp/compNNN; isto é a localização do módulo compNNN dentro do repositório /home/cvs/comp.

Como configuro o acesso ao repositório?

Só exite um repositório para compiladores e está em mega.ist.utl.pt no directório /home/cvs/comp.

A variavel CVSROOT deve ser definida de uma das seguintes formas:

  • /home/cvs/comp (quando o acesso for feito do mega)
  • :ext:<user>@mega.ist.utl.pt:/home/cvs/comp (quando o acesso for feito de fora do mega). Neste caso é necessário definir também a variável de ambiente CVS_RSH cujo valor deverá ser o programa que pretendem usar para efectuar a ligação ao servidor (ex.: 'export CVS_RSH=ssh' ou 'setenv CVS_RSH ssh')
No caso do acesso ser feito por ssh é possível configurar a ligação de forma a que não seja pedida uma password sempre que se executa um comando cvs na máquina cliente. Tal procedimento, é opcional e é descrito em seguida.

Posso fazer login no mega sem usar password?

Sim. A solução consiste em usar o mecanismo de autenticação por chave pública. Este mecanismo é ainda mais seguro que o uso de password pois evita que a password seja enviada na ligação. Embora por ssh esta já seja transmitida cifrada, com o mecanismo de autenticação por chave pública a password nem sequer é transmitida. Deixamos a explicação do funcionamento deste mecanismo para outras disciplinas ;)

No caso da cadeira de compiladores, o interesse de fazer login sem usar password, é o de poder executar os comandos cvs numa máquina cliente sem estar sempre a introduzir a password a cada comando. Vamos ao procedimento, supondo que nos pretendemos ligar à máquina A a partir da máquina B sem password (usando o ssh):

  1. Gerar um par de ficheiros <Chave pública, Chave privada>:
    ssh-keygen -t rsa -b 2048
    Aceitar a proposta de omissão para guardar os ficheiros (em $HOME/.ssh) e deixar a passphrase vazia.
  2. Colocar a chave pública na máquina A dentro do ficheiro $HOME/.ssh/authorized_keys.
    ex. cat id_rsa.pub >> $HOME/.ssh/authorized_keys
  3. Colocar a chave privada no directório $HOME/.ssh da máquina B (*);
  4. testar a ligação:
    ssh @A
    Neste momento é suposto o login em A ser feito automaticamente.

(*) MUITA ATENÇÃO! a chave privada permite o acesso imediato à máquina A sem password! Devem ter muito cuidado com os sítios onde guardam este ficheiro. Em particular se trabalharem num computador de acesso a muitos utilizadores (caso da RNL) NUNCA deixem lá ficar a vossa chave privada, sob pena de estarem a oferecer acesso livre à vossa área a quem apanhar tal ficheiro. Mesmo quando guardado num local seguro, deve ser protegido contra acessos de terceiros:
chmod 600 id_rsa

Mais info: man ssh-keygen

Como resolvo locks no CVS?

Façam login no mega e procurem no directório
/home/cvs/comp/compNNN

(onde NNN é o vosso número de grupo) por possiveis ficheiros de lock e removam-nos.

Qq coisa como:
find /home/cvs/comp/compNNN -name #\*

Os ficheiros nestas condições podem normalmente ser removidos em segurança desde que nenhum elemento do grupo esteja a operar com o cvs. Estas situações tendem a ocorrer quando uma operação de cvs é abortada.

NOTA: Tenham cuidado, pois os outros ficheiros dentro de /home/cvs/comp/compNNN, são os ficheiros do vosso projecto sobre controlo de versões.