문제

몇 년 동안, 나는 전복이 "영구적으로 삭제"(삭제) 함수를 특징으로하기를 기다리고 있습니다. 나는 이것이 필수 기능이라고 생각하기 때문에 (시각적 소스 : p에서 나오는) 전복으로 전환하는 것을 망설입니다. 그렇지 않으면 저장소가 멈출 수 없을 정도로 성장할 것으로 기대합니다. 그러나 어떤 이유로 든이 기능은 계속해서 연기됩니다. 그래서 나는 거부하는 기능을 분배 할 수있는 다른 기능이나 해결 방법이 있는지 궁금해하기 시작합니다.

SVN Central 저장소를 축소하고 싶을 때 무엇을합니까?

예 1: 나 대규모 타사 도서관을 확인하십시오, 그리고 몇 주 후에 나는 그것이 내 필요에 적합하지 않다는 것을 알고 있습니다. 나는 그것이 많은 양의 데이터를 영원히 저장하고 백업하는 것을 원하지 않습니다.

예 2: 리포지토리에 10 개의 Big Third Party 라이브러리의 10 가지 버전이 있지만 최신 버전 만 사용합니다.

예 3: 실수로 민감한 정보를 확인했습니다 (제안대로 남자).

예 4: 실수로 저장소에 넣지 않은 일부 큰 파일을 확인했습니다.

도움이 되었습니까?

해결책

상당한 논의가 있습니다 svn obliterate 문제 티켓에서 아파치 전복 사이트, 대부분은 2008 년경에 끝나는 것입니다. 사용은 드물지만 보유 할 수있는 능력이 좋은 일반적인 합의가있는 것 같습니다.

그것을 원하는 두 가지 주요 이유가 있습니다.

첫째, 기밀 정보를 확인하는 것이 문제가 될 수 있습니다. 삭제 된 삭제 된 것은 저장소의 기밀성과 노출 수준에 따라 반드시 옵션 일 필요는 없습니다.

둘째, 체크인하지 않아야 할 많은 양의 물건을 확인하면 저장소의 크기가 크게 증가 할 수 있습니다. 디스크 공간은 일반적으로 요즘 저렴하지만 무제한은 아니며 파일 공간이 중요한 다른 방법이 있습니다. 순 연결을 통해 저장소를 보내야 할 경우, 이는 중요하거나 중요하지 않을 수있는 추가 시간입니다. 전체 저장소가 포함 된 CD-ROM 또는 DVD-ROM을 태울 수 있다는 사실이 실제로 이점이있을 수 있습니다.

따라서 리포지토리를 덤프, 필터링 및 다시로드하여 현재 수행되는 유용한 기능입니다. 이것은 내가 본 보고서에 따라 오류가 발생하며 느리게 진행될 수 있으며 저장소를 종료해야합니다.

분명히, 그것은 몇 년 동안 필요한 것이 디자인을 제시하고 구현하기 위해 일을해야한다는 점을 감안할 때, 그것은 Subversion 팀의 우선 순위가 높은 기능이 아닙니다. 결국, 그것은 매우 드물게 이루어져야하며 해결 방법이 있습니다. 그러나, 전복에 대해 많은 일을하고 싶은 사람은 누구나 (충분한 품질이면) 구현 될 수있는 패치를 제공 할 수 있습니다.

다른 팁

소스 제어의 의미를 위반합니다.
소스 제어는 모두 이전 상태를 복원 할 수있는 것입니다. 파일을 영구적으로 삭제하면 가능하지 않습니다.

otoh 나는 vss를 모르므로 "영구적으로 삭제"를 오해했을 수도 있습니다.

그것에 대한 명백한 이유는 개발자들이 균형을 잡을 것이라고 생각하기 때문에 SVN이 악화 될 것이라고 생각하기 때문입니다. 실수로 무언가를 말살하고 당신의 /트렁크가 사라질 때 분노에 의해 당신의 분노에 의해 큰 난쟁이가 될 것입니다.

Fogbugz는 정확히 같은 행동을 가지고 있으며, 그들의 경우에는 전적으로 디자인에 의해 사용자를 보호합니다.

말살은 원하는 버전 제어 원칙을 위반합니다. 공간을 절약하지 못하거나 이전 태그가 파손됩니다. 파일을 없애는 경우 실제 이전 버전으로 돌아갈 수 없습니다.

저장소 성장에 대한 귀하의 의견에 대해 ... 모든 저장소는 시간이 지남에 따라 변화의 크기로 선형 적으로 증가합니다. 그것이 소스 제어 시스템의 요점입니다. 사전 버전을 추적 할 필요가 없다면 어딘가에 공유 폴더를 고수하지 않겠습니까?

인용 잊혀진 특징 인 전복 사망자, 질문에는 세 가지 구성 요소가 있습니다. 문제,, 이유 그리고 해결책. 해결책에 대한 질문으로 시작 했으므로 시작하겠습니다.

해결책

알다시피, 훌륭한 해결책은 없습니다. 특히 대규모 기업 저장소를 다루는 경우 솔루션이 더 어려워지기 때문에 저장소가 더 커집니다. 불리는 기능이 있습니다 덤프 / 필터 이를 통해 원하지 않는 물건의 저장소를 청소할 수 있지만 사용하기 쉽지는 않으며 빠르지 않고 의존하지 않습니다.

A가 있었다 작은 노력 (스레드를 따르십시오) SVN 팀에서 2008 년 이후에 사망으로 기능을 얻었지만 그 노력은 침묵으로 사망했습니다.

문제

처음에 언급 한 기사에는 실제로 사망자 명령이 필요한 유용 사례 목록이 있습니다. 516 문제 스레드 개발자들은 실제로 그 장점을 인정했습니다.

아아, 지금은 너무 늦어 보인다. 그것이 나중에 추가되지 않은 진짜 이유는 가장 근본적인 수준에서 코드에 연결되어 있기 때문에 지금 구현하기가 불가능하기 때문입니다 (또한 참조하십시오. 작은 노력 솔루션 아래 링크).

로부터 FAQ 항목:

개정은 서로를 낳는 불변의 나무입니다. 역사에서 수정을 제거하면 도미노 효과가 발생하여 모든 후속 개정에서 혼돈을 일으키고 모든 작업 사본을 무효화 할 수 있습니다.

이유

문제는 원래 사망자 기능이 실제 버전 제어의 원리를 준수하지 않았기 때문에 기각되었다는 것입니다.

다시 FAQ 항목:

저장소의 기록에서 파일을 완전히 제거하려면 어떻게해야합니까? 파일 또는 커밋의 모든 증거를 파괴하려는 특별한 경우가 있습니다. (아마도 누군가가 실수로 기밀 문서를 저질렀을 것입니다.) 이것은 그렇게 쉽지 않습니다. 전복은 의도적으로 정보를 잃지 않도록 설계 되었기 때문입니다.

하지만

저는 현재 더 큰 팀과 더 큰 프로젝트를 통해 많은 고객을 위해 SVN과 함께 일했으며 기본적으로 실제 문제는 없었습니다. 그렇습니다. 언급 된 사용 사례는 말살 속도를 보증하지만 지금까지 나는 이것이 당신이 어디를 가든지 계속해서 반복하는 문제라고 확신하지 않습니다. 물론,이 특별한 문제의 본질은 한 번만 실수를하면 제대로 취소 할 수 없다는 것입니다.

저장소에서 데이터를 제거하면 소스 컨트롤의 기본 전제가 나뉘어 지므로 이전 상태의 모든 상태를 재현하고 소스 트리의 변경이 가능합니다. 버전 제어에서 무언가를 말살하고 싶다면 아마도 "잘못하고있다"고 말할 것입니다.

나는 지금 약 15 년 동안 다양한 버전 제어 시스템을 사용하고 있으며 이와 같은 기능이 필요하지 않았습니다.

나는 당신이 그 기능을 원하는 이유가 무엇인지 궁금합니다.

  • 디스크 공간? 디스크 공간의 가격을 고려할 때 믿기 어렵습니다
  • 버전 제어에 대한 비밀번호를 칭찬 했습니까? 그건 당신에게 가르쳐 줄 것입니다. 가서 비밀번호를 변경하십시오
  • 저장소의 속도? 그렇게 들리지는 않지만 성능이 나은 것으로 추정되는 완전히 다른 시스템을 고려한다면.

덤프 및 하중을 수행하여 SVN 저장소의 크기를 줄일 수 있습니다. 기본적으로 몇 살 이상으로 되돌리고 싶지 않다고 말하면 저장소를 덤프하고 시간을 기준으로 필터를 덤프 한 다음 덤프를 다시로드 할 수 있습니다. 크기로 인해 단일 파일을 제거하려는 것은 아마도 파일이 실제로 소스 제어 시스템에 속하지 않았다는 것을 나타냅니다.

데이터를 제거하는 데 도움이되는 스크립팅이 있습니다. 따르다 이 메일 링리스트 스레드 더 많은 정보를 위해서.

버전 제어의 본질이 데이터를 영구적으로 삭제하는 것과는 달리 데이터를 잃지 않기 때문에이를 수행하기 어려운 방법입니다. 하지만 일년에 한 번 자두거나 그런 식으로 ~할 수 있다 완료됩니다.

소스 제어의 전체 지점은 저장소의 모습에 대한 완전한 기록을 갖는 것입니다. 그만큼 obliterate 명령은 소스 제어의 이러한 목적을 물리 치며 모든 버전 제어 시스템에서 오해입니다.

SVN에는 저렴한 복사와 저렴한 분기가있어 파일의 전체 사본이 필요하지 않습니다. 그 중앙 저장소는 일반적으로 크기가 매우 관리 가능 하므로이 잘못된 기능을 불필요하게 만듭니다.

사망으로 파괴의 필수 특징은 전복의 필수 특징이 아닙니다. 왜냐하면 그것은 실제로 버전 제어의 기본 원칙을 깨뜨리기 때문입니다 (즉, 모든 기록을 기록합니다).

어쨌든이 작업을 수행하기위한 해결 방법이 있기 때문에 필수 기능이 아닙니다 (Svnadmin 및 필터링 사용).

또한이 기능은 현재 크게 작업되었습니다. 보다 이 게시물 자세한 내용은.

마지막으로 관리 기능으로 의도 된 것으로 확인했으며 관리자는 이미 덤프/필터/Broken_WorkAround를 덤프/필터링하고 히스토리를 제거 할 수 있습니다. 감사 트레일과 관련하여 이것은 현재 인용을 변경하지 않습니다. 무언가가 절대적으로 제거되어야한다면 덜 끔찍하게 만들 것입니다.

Svnadmin 사망으로 가장 많이 요청 된 기능 중 하나이며, Dev는 마침내 존재해야한다는 것을 인정합니다 (마지막으로! 8 년 후 !!!). 그리고 기존의 홍보는 SVN에서 사용자를 쫓는 것입니다.

불행히도 나는이 "누락 된 기능"에 대해 배워야했습니다. 기본 기능은 언제부터 기능입니까? 새로운 사용자는 이에 대해 듣고 SVN을 피합니다. 나에 관해서는, 나는 이제 git을 사용합니다.

내 의견이 마음에 들지 않습니까? Linus는 SVN 개발자를 모론이라고 언급했으며 전체 중앙 집중식 시스템에 결함이있었습니다. 나는 Linus를 진정한 전문가로 신뢰하며, 특히 그는 Source에 대해 알고 있습니다.

내가하는 일 - 전복을 사용하지 마십시오. 죄송합니다.

그들은 (개발자들) 분명히 그 중요한 기능이라는 평가에 동의하지 않습니다. 내가 지금 일하는 회사를 멈추지 않았다.

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