チェックインしたファイルを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では問題なく動作することを確認しました。
試してください:
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のバージョン(Windowsで1.11.22を使用している)が原因で違いがあるかもしれません。
$ CVSROOTディレクトリと関連するモジュールディレクトリ、次にAtticにcdして、fileOfInterest、vを編集し、Deadを示す行を変更します。 Expへ;次に、fileOfInterest、vを上記のディレクトリに移動します。
チェックアウトされたモジュールの更新により、ファイルが復元されます。
これを行うための最も単純ですが、可能な限りエレガントではない方法は、削除されたファイルと同じ場所のCVSディレクトリに「cd」することです。
次に、「エントリ」というファイルを編集します。
削除したファイルを表す行を見つけます。 /の後に「-」があることに注意してください。
「-」を削除して、ファイルを保存してください。
ああ、それはうまくいく。
これが私がすることです。同じ名前の空のファイルを作成し、それを追加してコミットしてから、古いバージョンを取得して再コミットします。