Я удалил проверенный файл из ветки CVS, то есть:
cvs remove -f file.txt
cvs commit
Как восстановить файл?
Я удалил проверенный файл из ветки CVS, то есть:
cvs remove -f file.txt
cvs commit
Как восстановить файл?
Я считаю, что:
cvs add file.txt
cvs commit file.txt
... воскресит его с чердака.
Я обнаружил, что вы не можете использовать cvs add
для отмены операции cvs remove
, которая уже была выполнена. Итак, это работает:
$ cvs remove -f file.txt
$ cvs add file.txt
но это не работает:
$ cvs remove -f file.txt
$ cvs commit
$ cvs add file.txt
Самый простой метод, который я нашел до сих пор, - запустить cvs status file.txt
, чтобы узнать номер версии. Затем возьмите содержимое ревизии и добавьте ее обратно:
$ cvs update -p -r rev file.txt > file.txt
$ cvs add file.txt
$ cvs commit
cvs add
не работал у меня, потому что моя версия cvs на сервере была очень старой. Я подтвердил, что он отлично работает с CVS версии 1.11.22.
Try:
cvs add file.txt
cvs update file.txt
cvs commit 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
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
Ясно, что он поступает правильно, но поведение, которое он наблюдает, отличается. Возможно, есть разница из-за версии CVS (я использую 1.11.22 в Windows).
cd в каталог $CVSROOT и соответствующий каталог модулей, а затем чердак, отредактируйте файлOfInterest, v и измените строку, в которой говорится "Мертвые"; Exp; а затем переместите файлOfInterest, v в каталог выше.
Обновление в извлеченном модуле теперь восстановит файл.
Самый простой, хотя и наименее элегантный способ сделать это - "cd" в каталог CVS в том же месте, что и удаленный файл.
Затем отредактируйте файл под названием "Записи".
Найдите строку, представляющую ваш удаленный файл. Заметим, что после того, как /
Удалите '-', сохраните файл и вуаля!
Yuck, но он работает.
Вот что я делаю. Я просто создаю пустой файл с тем же именем, затем добавляю и фиксирую его, затем извлекаю более старую версию и повторно фиксирую ее.