Usunąłem w kratkę w pliku z gałęzi CVS, tj .:Jak przywrócić usunięty plik w CVS?
cvs remove -f file.txt
cvs commit
Jak przywrócić plik?
Usunąłem w kratkę w pliku z gałęzi CVS, tj .:Jak przywrócić usunięty plik w CVS?
cvs remove -f file.txt
cvs commit
Jak przywrócić plik?
Wierzę, że:
cvs add file.txt
cvs commit file.txt
... wskrzesi go ze strychu.
Zauważyłem, że nie można użyć cvs add
do cofnięcia operacji cvs remove
, która już się zakończyła. Tak to działa:
$ cvs remove -f file.txt
$ cvs add file.txt
ale to nie działa:
$ cvs remove -f file.txt
$ cvs commit
$ cvs add file.txt
Najprostszym sposobem znalazłem tak daleko jest do uruchomienia cvs status file.txt
, aby dowiedzieć się numer wersji. Następnie chwycić zawartość rewizji i dodać go ponownie:
$ cvs update -p -r rev file.txt > file.txt
$ cvs add file.txt
$ cvs commit
Biorąc pod uwagę brak Harry'ego sukcesu, oto zapis tego, co zrobiłem, aby wykazać, że powyższa odpowiedź działa (przeprosiny z góry do jego długości):
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
Najwyraźniej postępuje słusznie, ale zachowanie, które obserwuje, jest inne. Być może jest różnica między wersją CVS (używam wersji 1.11.22 w systemie Windows).
Dziękuję Jasonowi za poświęcenie czasu na udzielenie szczegółowej odpowiedzi. – Harry
Nie działa dla mnie cvs add
, ponieważ moja wersja cvs na serwerze była bardzo stara. Potwierdziłem, że działa dobrze z wersją CVS 1.11.22.
Cieszę się, że doszliśmy do tego, Harry. Byłem trochę zaniepokojony. :-) –
Oto, co robię. Po prostu utworzę pusty plik o tej samej nazwie, a następnie dodam i zatwierdzam, następnie pobierz starszą wersję i ponownie ją zatwierdz.
Spróbuj:
cvs add file.txt
cvs update file.txt
cvs commit file.txt
cd do katalogu $ CVSROOT i odpowiedni katalog moduł, a następnie na poddaszu Edycja fileOfInterest, V i zmienić linię, która mówi martwe; do Exp; a następnie przenieść plikOfInterest, v do powyższego katalogu.
Aktualizacja w module wyewidencjonowanym spowoduje odtworzenie pliku.
Najprostszym, choć najmniej eleganckim sposobem na to jest "cd" do katalogu CVS w tym samym miejscu, co usunięty plik.
Następnie edytuj plik o nazwie "Wpisy".
Znajdź linię reprezentującą usunięty plik. Zauważ, że po "/"/ usuniesz "-", zapisz plik i voila!
Fuj, ale działa.
Nie pamiętasz ostatniej wersji pliku?cvs log [FILENAME] – jjohn