TortoiseSVN을 사용하여 유지 관리하는 12 개 정도의 프로젝트가 포함 된 저장소가 증가했습니다 (완전히 새로운 기능이며 아직 기능을 알지 못함). 저장소를 보유해야하는 공간이 제한되어 있으므로 백업하고 이전 버전을 제거해야합니다. 예를 들어 프로젝트의 버전이 50 인 경우 50,49,48 만 유지하려고합니다.Subversion 저장소를 정리하는 가장 좋은 방법은 무엇입니까?
답변
설명하는 방식으로 특정 버전의 저장소를 "스닙 (snip)"할 방법이 없습니다. 당신이 할 수있는 일은 원하는 리비전의 전체 리파지토리 svn export
입니다. 그런 다음 새 리포지토리로 가져온 다음 리비전의 커밋을 로그 파일에서 새 리포지토리로 다시 재생합니다. 이것은 사소한 것이 아닙니다.
또는 저장소에 어수선한 경로를 제외하려는 경우 저장소가있는 파일 시스템에 직접 액세스 할 수있는 경우 svnadmin
과 svndumpfilter
을 조합하여 원하는 경로를 선택할 수 있습니다. 다른 모든 것들을 치다.
당신이 묘사 한 것은 Subversion의 관점에 어느 정도 부합한다는 점에 유의하십시오. 모든 것을 유지해야합니다. 이 문제가 자주 발생하면 더 나은 체크인 방법을 고려하십시오. 또는 Git을 사용해보십시오. 이렇게하면 이러한 종류의 실험을 사실상 무료로 할 수 있습니다.
Subversion의 브랜치 (svn copy)는 시간과 공간에서 거의 무료입니다. Subversion 1.6부터는 분기 간 패치 병합으로 표현 공유를 사용하여 데이터 중복을 방지합니다. 나는 "당신은 svn에서 가지가 공간 비싸다"고 말함으로써 당신이 무엇을 언급하고 있는지 전혀 모른다. –
일반적으로 svn-dumpfilter를 사용하는 것은 git-filter-branch 및/또는 .git/info/grafts를 사용하는 것보다 훨씬 노동 집약적입니다. 더 많은 종류의 역사 편집을 지원하기 위해 svn-dumpfilter에 많은 패치를했는데 여전히 좋은 도구는 아닙니다. – emk
@wcoenen : 네 말이 맞다. 나는 그 말을 전혀 잘 쓰지 않았다. @emk : 동의했다, 그것은 꽤 끔찍하다. 요즘 나는 주로 힘내를 사용합니다. –
오래된 버전을 제거하면 버전 관리가 어려워 지지만 유지하고 싶은 버전을 덤프 한 다음 새 repo에 넣고 이전 버전을 삭제하면됩니다.
svnadmin dump /path/to/current/repo -r48:50 > svn.dump
svnadmin create /path/to/new/repo
svnadmin load /path/to/new/repo < svn.dump
또는 포함 svndumpfilter을 사용하여/당신이 원하는 특정 비트 등을 제외이 또한 유용하게 사용할 수 removal에 대한 SVN 자주 묻는 질문에 약간의 정보.
리비전 48에서 50까지 특정 커밋 * 만 덤프 할 수 있습니까? 나는 리비전 48의 리포지터리 상태를 찾고 있다고 생각한다. –
방금 시도했습니다. 이것은 OP가 전혀 원하지 않는다고 생각하는 것을 수행하지 않습니다. 즉, 수정본의 커밋 만 가져옵니다. 당신은 "리비전 48에 리파지토리의 상태를 얻지 않고 리비전 50으로 가져 오는 데 필요한 모든 커밋을 따르게됩니다." –
John : 어떻게 지내세요? 그것은 나를 위해 잘 작동합니다. 지정한 첫 번째 버전을 완전히 덤프 한 다음 지정된 마지막 버전까지 커밋합니다. "--deltas"스위치를 지정한 경우에만 커밋을 덤프합니다. –
저장 용량을 늘리기 위해 이전 버전이나 저장소를 삭제할 수 있습니까?
짧은 대답은 아니오입니다. Subversion과 CVS의 작동 방식은 삭제 된 파일, 바이너리 파일 등 모든 변경 사항을 유지한다는 것입니다. 각 개정 본은 마지막 개정판에 따라 달라 지므로 중간에있는 개정판을 자르거나 저장소가 손상되었습니다. 공간이 부족할 경우 할 수있는 두 가지 일이 있습니다 : 1) 모듈을 삭제하고 HEAD 개정판을 사용하여 다시 작성하십시오. 그러면 모든 이전 개정이 지워집니다 (그러나 커미트 이력은 유실됩니다). 2) 더 나은 옵션 - 높은 계획으로 업그레이드하십시오 :-). Git은 서버 측 저장소 요구량이 훨씬 적기 때문에 Git에서 문제가되지 않습니다.
저장소의 기록에서 파일을 완전히 제거하려면 어떻게해야합니까?
파일이나 커밋의 모든 증거를 삭제하려는 경우가 있습니다. 아마도 누군가 Subversion이 기밀 문서를 실수로 저지른 것 같습니다. Subversion은 의도적으로 정보를 잃지 않도록 설계 되었기 때문에 그렇게 쉬운 것은 아닙니다. 수정은 서로를 기반으로하는 불변의 나무입니다. 히스토리에서 리비전을 제거하면 도미노 효과가 발생하여 모든 후속 리비전에 혼란이 발생하고 모든 작업 복사본이 무효화 될 수 있습니다.
그러나 프로젝트는 정보를 영구적으로 삭제하는 작업을 수행하는 svnadmin 절멸 명령을 언젠가 구현할 계획이 있습니다. (문제 516을보십시오.)
그동안 유일한 svnadmin은 저장소를 덤프 한 다음 svndumpfilter (잘못된 경로 제외)를 통해 덤프 파일을 svnadmin load 명령으로 파이프합니다. 이에 대한 자세한 내용은 Subversion 책의 5 장을 참조하십시오. 더 큰 공간으로 저장소를 이동
- 1. 기호 저장소를 정리하는 방법은 무엇입니까?
- 2. Mercurial 저장소를 정리하는 방법은 무엇입니까?
- 3. 제목이있는 URL을 정리하는 가장 좋은 방법은 무엇입니까
- 4. CSS를 정리하는 가장 좋은 방법은 무엇입니까?
- 5. cvs 저장소를 백업하는 가장 좋은 방법은 무엇입니까?
- 6. Subversion을 사용하여 양분하는 가장 좋은 방법은 무엇입니까?
- 7. git 저장소를 관리하는 가장 좋은 방법은
- 8. subversion 저장소를 만드는 방법
- 9. Subversion 저장소를 빠르게 검색하는 방법은 무엇입니까?
- 10. Rails에서 마이그레이션을 정리하는 좋은 방법은 무엇입니까?
- 11. .NET에서 스레드 로컬 저장소를 사용하는 가장 좋은 방법은 무엇입니까?
- 12. 외부 디스크에 전체 git 저장소를 백업하는 가장 좋은 방법은 무엇입니까?
- 13. Google 데이터 저장소를 새 필드로 업데이트하는 가장 좋은 방법은 무엇입니까?
- 14. C에서 행렬 요소를 병렬로 정리하는 가장 좋은 방법 #
- 15. netbeans에서 지정된 프로젝트에 대한 Subversion 저장소를 제거하는 방법은 무엇입니까?
- 16. svn + ssh 프로토콜을 사용하여 Subversion 저장소를 체크 아웃하는 방법은 무엇입니까?
- 17. 새 프로젝트의 템플릿으로 Subversion 저장소를 사용하는 방법은 무엇입니까?
- 18. Subversion 저장소를 새 저장소로 기존 저장소에 복사하는 방법은 무엇입니까?
- 19. 로컬 호스트에서 Github로 Subversion 저장소를 전송하는 방법은 무엇입니까?
- 20. iOS - HTML 코드를 정리하는 좋은 방법이 있습니까?
- 21. Git에서 remote.origin.url을 대체하는 가장 좋은 방법은 무엇입니까?
- 22. Subversion 저장소를 서브 디렉토리에 넣으시겠습니까?
- 23. nservicebus 솔루션을 구성하는 가장 좋은 방법은 무엇입니까?
- 24. Subversion 저장소를위한 중복 생성?
- 25. .NET Compact 프레임 워크에서 리소스를 정리하는 가장 좋은 방법
- 26. 하위 모듈이있는 Git 저장소를 Subversion 저장소로 가져 오기
- 27. applicationDidEnterBackground에서 AVCaptureSession을 정리하는 방법은 무엇입니까?
- 28. MonoTouch에서 스레드를 정리하는 방법은 무엇입니까?
- 29. 비트 맵을 정리하는 방법은 무엇입니까?
- 30. Spork 출력을 정리하는 방법은 무엇입니까?
번호 :
은 인용. – yfeldblum버전 관리의 요점을 더 잘 이해하려면 http://svnbook.red-bean.com/의 "버전 관리 (Subversion 포함)"책 (맥주처럼 무료)을 읽어야합니다. –