문제

나는 이것이 어떻게 일어 났는지 잘 모르겠지만, 어떻게 든 완전히 빈 디렉토리 계층이 내 저장소에서 끝났습니다.

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는 무시할 것입니다.)

그냥 했어

  1. rm -rvf/localcopy/project/emptydirectory
  2. 편집/localcopy/project/cvs/entries, line deel d/emptydirectory //// 파일 저장
  3. RMDIR -V/CVSROOT/Project/EmptyDirectory

프로젝트에서 빈 디렉토리를 제거합니다. 내부 CVS 데이터를 엉망으로 만드는 합법적이지 않지만 효과가있는 것 같습니다 (CVS 버전 1.12.13).

CVS는 많은 디자인 결함을 가지고 있으며, 역사를 잃지 않고 디렉토리를 제거 할 수는 없습니다. 역사를 잃지 않고 파일과 디렉토리를 바꾸는 데 어려움이 있습니다.

졸업을 고려하십시오 파괴. CVS2SVN 모든 분기 및 태그를 포함한 저장소를 전환하는 매우 좋은 작업을 수행합니다. CVS 및 SVN 명령 세트는 매우 유사하며 최소한의 조정이 필요합니다. (그리고이 문제를 해결하려면 "전쟁을 사용해야하는 버전 제어"전쟁이되기 위해 SVN을 사용하면 다음과 같은 고급 버전 제어 시스템으로 이동할 수 있습니다. git 또는 SVK.

이것은 나를 위해 효과가있었습니다. 기본적으로 당신이 할 때

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 제거 명령으로 디렉토리에서 파일을 삭제할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top