it-roy-ru.com

Как восстановить удаленный файл в CVS?

Я удалил зарегистрированный файл из ветки CVS, т.е.

cvs remove -f file.txt
cvs commit

Как мне восстановить файл?

38
Harry

Я полагаю, что:

cvs add file.txt
cvs commit file.txt

... воскресит его с чердака.

38
Jason Etheridge

Я обнаружил, что вы не можете использовать 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
23
Harry

cvs add не работал для меня, потому что моя версия cvs на сервере была очень старой. Я подтвердил, что он отлично работает с CVS версии 1.11.22.

4
Harry

Пытаться:

cvs add file.txt
cvs update file.txt
cvs commit file.txt
4
vvkatwss vvkatwss

Учитывая отсутствие успеха у Гарри, вот расшифровка того, что я сделал, чтобы продемонстрировать, что приведенный выше ответ работает (заранее извиняюсь за его длину):

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).

3
Jason Etheridge

перейдите в каталог $ CVSROOT и соответствующий каталог модуля, а затем в чердак, отредактируйте файл vInterest, v и измените строку с надписью Dead; Exp; и затем переместите файлOfInterest, v в каталог выше.

Обновление в извлеченном модуле теперь восстановит файл.

3
Andy Page

Самый простой, хотя и наименее изящный способ сделать это, это зайти в каталог CVS в том же месте, что и удаленный файл.

Затем отредактируйте файл под названием «Записи».

Найдите строку, представляющую ваш удаленный файл. Обратите внимание, что после/стоит знак «-»

Удалите «-», сохраните файл и вуаля!

Фу, но это работает.

1
PKCLsoft

Вот что я делаю. Я просто создаю пустой файл с тем же именем, затем добавляю и фиксирую его, затем извлекаю старую версию и повторно фиксирую это.

0
Mike Glasspool