문제
나는 이것이 어떻게 일어 났는지 잘 모르겠지만, 어떻게 든 완전히 빈 디렉토리 계층이 내 저장소에서 끝났습니다.
com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/
나는이 디렉토리들이 파일에 파일을 가지고 있다고 생각했지만 개발자는 빌드 프로세스의 부산물이기 때문에 처음부터 확인해서는 안된다는 것을 깨달았습니다. 파일이지만 어떻게 든 빈 디렉토리는 저장소에 고대 유물로 남아 있습니다.
CVS에서 이것을 제거하려면 어떻게해야합니까? Google에서 찾을 수있는 유일한 결과는 CVS가 처음에 그들을 유지하지 않기 때문에 빈 디렉토리를 제거 할 필요가 없다고 말하면서 -P
(자두) 옵션 cvs update
작업 디렉토리에서 제거해야합니다. 실제로 저장소에 빈 디렉토리가있는 경우 제로 도움이됩니다.
ㅏ cvs remove
그리고 cvs commit
이 상황을 처리하지 않는 것 같습니다.
$ cvs remove -Rf com
cvs remove: Removing com
cvs remove: Removing com/companyname
cvs remove: Removing com/companyname/blah
cvs remove: Removing com/sun
cvs remove: Removing com/sun/java
cvs remove: Removing com/sun/java/jax_rpc_ri
$ cvs commit com
cvs commit: Examining com
cvs commit: Examining com/companyname
cvs commit: Examining com/companyname/blah
cvs commit: Examining com/sun
cvs commit: Examining com/sun/java
cvs commit: Examining com/sun/java/jax_rpc_ri
$ ls -l com
total 24
drwxrwxr-x 2 matt matt 4096 Oct 15 14:38 CVS
drwxrwxr-x 9 matt matt 4096 Oct 15 14:38 companyname
drwxrwxr-x 4 matt matt 4096 Oct 15 14:38 sun
아직 거기에 있습니다!
SVN은이 이상한 행동도 가지고 있습니까?
해결책
AFAIK CVS 프로토콜은 디렉토리를 제거 할 수 없습니다. 서버 콘솔로 가서 실제 물리적 저장소에서 제거해야합니다.
http://www.network-theory.co.uk/docs/cvsmanual/removingdirectories.html
디렉토리 자체를 제거하지 않습니다. 그렇게 할 방법이 없습니다.
다른 팁
CVS 체크 아웃 및 업데이트는 항상 빈 디렉토리를 확인합니다. 이것이 바로 CV가 구축되는 방식입니다. 빈 디렉토리를 제거하려면 "-p"-"Prune"으로 업데이트를 수행하십시오.
cvs update -dP
( "-d"추가는 마지막 업데이트 이후에 나타난 새 디렉토리를 업데이트합니다. 그렇지 않으면 CVS는 무시할 것입니다.)
그냥 했어
- rm -rvf/localcopy/project/emptydirectory
- 편집/localcopy/project/cvs/entries, line deel d/emptydirectory //// 파일 저장
- RMDIR -V/CVSROOT/Project/EmptyDirectory
프로젝트에서 빈 디렉토리를 제거합니다. 내부 CVS 데이터를 엉망으로 만드는 합법적이지 않지만 효과가있는 것 같습니다 (CVS 버전 1.12.13).
이것은 나를 위해 효과가있었습니다. 기본적으로 당신이 할 때
RMDIR -V/CVSROOT/Project/EmptyDirectory # CVS 저장소 디렉토리에서 디렉토리를 삭제하고 있습니다.
저장소 UNIX 서버 로그인 액세스가있는 경우 경로로 이동하여 디렉토리를 삭제하거나 UNIX 팀과 동일한 문제를 제기 할 수 있습니다.
CVS는 디렉토리와 관련하여 2 단계 접근 방식을 사용하는 경향이 있으므로 많은 CVS 명령에 "빈 디렉토리를 가두어"에 대한 -P 옵션이있는 이유입니다.
이런 일이 발생했을 때 예를 들어 방금 추가 한 디렉토리 이름을 바꾸고 디렉토리를 삭제하고 CVS/Entries 파일의 디렉토리 항목을 삭제하면 "D"로 선정 된 줄이됩니다.
작업이 완료되었습니다.
내가 커밋 한 경우, 빈 디렉토리/IES가 포함 된 현재 작업 영역이 모두 체크인되어 있는지 확인합니다. 그런 다음 디렉토리를 추가 한 작업 영역의 일부를 날려 버립니다.
예를 들어,
~/Sandbox/my_project/some_stuff_i_want
~/Sandbox/my_project/empty_dir_1
~/Sandbox/my_project/other_stuff_i_want
나는 내가 보관하고 싶은 물건이 포함 된 두 디렉토리에서 모든 것이 최신 상태인지 확인합니다. 그런 다음 샌드 박스 내에서 my_project를 날려 버립니다.
그런 다음 빈 디렉토리를 삭제합니다 저장소 자체에서.
돌아가서 동일한 작업 영역을 확인하면 예를 들어 My_project는 빈 흙이없는 작업 영역을 제공합니다.
또는 모든 것을 그대로두고 -P 옵션을 사용하여 CVS가 모든 것을 확인 (또는 모든 것을 업데이트) 한 다음 빈 더스를 정리하십시오.
HTH
건배,
롭
작업 영역에서 디렉토리를 삭제할 수 없으며 실제 저장소가 보관되는 서버로 이동하여 디렉토리를 삭제해야합니다. 그러나 CVS 제거 명령으로 디렉토리에서 파일을 삭제할 수 있습니다.