Pergunta

Eu removi um check-in de arquivos do ramo CVS, ou seja:.

cvs remove -f file.txt
cvs commit

Como faço para restaurar o arquivo?

Foi útil?

Solução

Eu acredito que:

cvs add file.txt
cvs commit file.txt

... vai ressuscitá-lo a partir do sótão.

Outras dicas

Eu descobri que você não pode usar cvs add para desfazer uma operação cvs remove que já tenha sido comprometidos. Então isso funciona:

$ cvs remove -f file.txt
$ cvs add file.txt

mas isso não funciona:

$ cvs remove -f file.txt
$ cvs commit
$ cvs add file.txt

O método mais simples que eu encontrei até agora é executar cvs status file.txt para descobrir o número de revisão. Em seguida, pegue o conteúdo da revisão e adicioná-lo de volta em:

$ cvs update -p -r rev file.txt > file.txt
$ cvs add file.txt
$ cvs commit

O cvs add não funcionou para mim, porque a minha versão cvs no servidor era muito velho. Tenho confirmou que ele funciona bem com o CVS versão 1.11.22.

Tente:

cvs add file.txt
cvs update file.txt
cvs commit file.txt

Dada a falta de sucesso de Harry, aqui está uma transcrição do que eu fiz para demonstrar que as obras resposta acima (desculpas antecipadamente para a sua extensão):

C:\foo>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 344F-1517

 Directory of C:\foo

28/09/2008  05:12 PM    <DIR>          .
28/09/2008  05:12 PM    <DIR>          ..
28/09/2008  05:12 PM    <DIR>          CVS
28/09/2008  05:11 PM                19 file.txt
               1 File(s)             19 bytes
               3 Dir(s)  22,686,416,896 bytes free

C:\foo>cvs status file.txt
===================================================================
File: file.txt          Status: Up-to-date

   Working revision:    1.2     Sun Sep 28 07:11:58 2008
   Repository revision: 1.2     C:\jason\CVSROOT/foo/file.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)


C:\foo>cvs rm -f file.txt
cvs remove: scheduling `file.txt' for removal
cvs remove: use 'cvs commit' to remove this file permanently

C:\foo>cvs commit -m "" file.txt
Removing file.txt;
C:\jason\CVSROOT/foo/file.txt,v  <--  file.txt
new revision: delete; previous revision: 1.2
done

C:\foo>cvs status file.txt
===================================================================
File: no file file.txt          Status: Up-to-date

   Working revision:    No entry for file.txt
   Repository revision: 1.3     C:\jason\CVSROOT/foo/Attic/file.txt,v

C:\foo>more file.txt
Cannot access file C:\foo\file.txt

C:\foo>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 344F-1517

 Directory of C:\foo

28/09/2008  05:12 PM    <DIR>          .
28/09/2008  05:12 PM    <DIR>          ..
28/09/2008  05:12 PM    <DIR>          CVS
               0 File(s)              0 bytes
               3 Dir(s)  22,686,400,512 bytes free

C:\foo>cvs add file.txt
cvs add: Resurrecting file `file.txt' from revision 1.2.
U file.txt
cvs add: Re-adding file `file.txt' (in place of dead revision 1.3).
cvs add: use 'cvs commit' to add this file permanently

C:\foo>cvs commit -m "" file.txt
Checking in file.txt;
C:\jason\CVSROOT/foo/file.txt,v  <--  file.txt
new revision: 1.4; previous revision: 1.3
done

C:\foo>more file.txt
This is a test...

C:\jason\work\dev1\nrta\foo>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 344F-1517

 Directory of C:\jason\foo

28/09/2008  05:15 PM    <DIR>          .
28/09/2008  05:15 PM    <DIR>          ..
28/09/2008  05:13 PM    <DIR>          CVS
28/09/2008  05:13 PM                19 file.txt
               1 File(s)             19 bytes
               3 Dir(s)  22,686,375,936 bytes free

É claro que ele está fazendo a coisa certa, mas o comportamento que ele está observando é diferente. Talvez haja uma diferença devido a versão CVS (estou usando 1.11.22 no Windows).

cd em $ diretório CVSROOT eo diretório módulo relevante e, em seguida, o Attic, editar o fileOfInterest, v e alterar a linha que diz Morto; para Exp; e depois mover a fileOfInterest, v para o diretório acima.

Uma atualização no check-out módulo irá agora restaurar o arquivo.

O mais simples, embora possível forma menos elegante de fazer isso é 'cd' para o diretório CVS no mesmo local que o arquivo removido.

Em seguida, edite o arquivo chamado "Entradas".

Encontre a linha que representa o arquivo removido. Note-se que há um '-' após o /

Remova o '-'!, Salve o arquivo e voila

Yuck, mas funciona.

Aqui está o que eu faço. Eu só criar um arquivo vazio com o mesmo nome, em seguida, adicionar e confirmá-lo, em seguida, recuperar a versão mais antiga e re-confirmação disso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top