이렇게하는 것은 저장소에서 중요한 수술입니다. 실제 리포지토리에서이 작업을 수행하기 전에 수행중인 작업을 완전히 알고 있는지 확인하십시오.
개별 파일에 대해 수행 한 작업을 수행 할 수 없지만 전체 저장소에서이 작업을 수행 할 수 있습니다. 당신이해야 할 일은 저장소의 히스토리 꼬리를 잘라 버리는 것입니다.
리포지토리에 5000 개의 리비전이 있고 가장 오래된 1000 개의 리비전을 자르면 가장 최근 4000 개의 리비전 만있는 리포지토리가 생성됩니다.
이렇게하면 덤프/복원주기가 필요합니다. 즉, 작업하고 리포지토리를 다시 작성하는 동안 리포지토리에 대한 쓰기 권한을 비활성화해야합니다.
저장소를 탐색 할 때 여전히 볼 수있는 파일은 손실되지 않지만 특정 파일의 기록이 완전히 손실 될 수 있습니다 (모든 수정 사항이 처음 1000 개 개정에 포함 된 경우).분명히 초기 개정 중 하나에서 파일이 삭제 된 경우 잘라낸 후에 파일을 다시 가져올 수 없습니다.
또한이 작업을 수행하는 순진한 방법은 0부터 시작하는 모든 개정 번호의 번호를 다시 매겨 둡니다. 위의 예에서, 개정 5000은 절단 후 개정 4000이됩니다. 이것이 문제가되는 경우 추가 작업을해야합니다.
그래서, 우리는의 earlist 1000 버전을 잃고 싶지 가정, 기본 워크 플로우는 다음과 같습니다
- 저장소를 오프라인 (또는 적어도이 읽기 전용으로 만들)
- 실행
svnadmin dump [repository path] -r 1000:HEAD > repository.dump
합니다. 이것은 1000 이후 버전의 리비전 만 포함하는 덤프 파일을 작성합니다. 은이 아니고 --incremental
플래그를 사용하면 덤프 파일의 첫 번째 개정판에는 리비전 1000을 볼 때 저장소의 전체 덤프가 포함됩니다 (모든 히스토리 제외).
svnadmin create
으로 깨끗한 저장소를 만들고 이전 저장소에서 conf & 후크 디렉토리를 복사하십시오.
svnadmin load [new repository path] < repository.dump
을 실행하여 최신 개정판을로드하십시오.
- 이전 저장소를 다른 곳으로 옮기고 (백업을 위해 보관하십시오) 새 저장소를 해당 위치로 이동하십시오.
리비전 번호를 보존하려면 어딘가에서 빈 리비전을로드해야합니다. 리비전 1 : 999를 별도의 덤프 파일로 덤프 한 다음 svn dumpfilter를 사용하여 모든 것을 제거한 다음 비어있는 리비전을로드하고 원하는 리비전을로드하면됩니다. 조금 비웃음이지만, 거기서 당신을 데려 올 것입니다. 예를 위해 (당신이 필요로하는 크기로
설정 할당량 제한 (> ... -> 속성 - -> 드라이브 내 컴퓨터)를
"quotas"를 찾으셨습니까? –
크기 한도를 초과하면 어떻게 될까요? 저장소는 영원히 나머지 부분에 대해 읽기 전용이됩니까? – fennec
흥미 롭습니다. 나는 당신이 서버에서 커밋 된 훅을 조사 할 것을 제안한다. 수동으로 약간의 작업을해야합니다 (즉, 직접 크기를 계산하고 커밋을 거부합니다). –