TortoiseSVN Logo

로그 캐시 및 저장소 UUID

2008년 8월 17일 게시됨

느리거나 매우 큰 저장소의 로그를 가져오는 데는 꽤 오랜 시간이 걸릴 수 있습니다. 그리고 물론, 저장소에 연결되어 있어야 합니다. 온라인 상태가 아니면 로그 메시지를 표시할 수 없습니다. 네트워크가 다운되었거나 네트워크 접속조차 불가능한 곳에 있다면 매우 성가신 일입니다.

이 문제를 최소한 부분적으로 해결하기 위해, TortoiseSVN 1.5는 Subversion 저장소의 로그 메시지를 캐시할 수 있습니다. 이 기능은 투명하게 구현되어 있으므로, 작동시키기 위해 아무것도 할 필요가 없습니다. 여러분은 저장소의 모든 로그 메시지를 한 번 표시한 후에는 다음번에 로그 대화 상자가 훨씬 더 빨라진 것을 알아챌 수 있습니다.

이를 테스트하려면 TortoiseSVN 저장소의 로그를 표시할 수 있습니다. 로그 대화 상자에서 "모두 표시" 버튼을 클릭하여 모든 로그 메시지를 가져옵니다. 모든 메시지를 가져오는 데 시간이 좀 걸린다는 것을 알 수 있습니다. 그런 다음 로그 대화 상자를 닫고 동일한 URL에 대해 다시 시작하면 "모두 표시" 버튼을 클릭하여 모든 메시지를 로그 캐시에서 가져올 수 있습니다.

저장소에 연결할 수 없는 경우, 로그 대화 상자는 "오프라인 작업"을 선택할 수 있는 대화 상자를 표시합니다. 즉, 더 이상 저장소에 연결을 시도하지 않고 캐시만 사용합니다.
logoffline

하지만 한 가지 문제가 있습니다. 로그 캐시는 모든 저장소에 서로 다른 UUID가 할당되어 있어야 합니다.
작업 사본이 있는 경우 속성 대화 상자(탐색기 상황에 맞는 메뉴 '속성')에서 저장소의 UUID를 확인할 수 있습니다.
repouuid
로그 캐시는 서로 다른 로그 메시지를 가지고 있는 다른 저장소들을 구별하기 위해 UUID가 필요합니다. 로그 캐시가 저장소를 구별하기 위해 URL만 사용할 수 없는 이유는 URL이 해당 정보를 제공하지 않기 때문입니다.

예를 들어, https://example.com/svn/trunk와 같은 URL은 저장소가 https://example.com/svn에 위치한다는 것을 명확히 나타냅니다. 'svn'이 프로젝트 이름이 아니라고 가정할 수 있기 때문입니다.

하지만 https://example.com/svn/project/trunk와 같은 URL은 'project'를 위한 저장소를 가리킬 수도 있지만, 'svn'에 저장소가 하나만 있고 'project'가 해당 저장소 내의 폴더일 뿐이라는 의미일 수도 있습니다. 따라서 https://example.com/svn/project/trunkhttps://example.com/svn/otherproject/trunk 두 URL은 동일한 저장소를 가리킬 수도 있고, 두 개의 다른 저장소를 가리킬 수도 있습니다.

이것이 로그 캐시가 각 저장소마다 저장소 UUID가 달라야 하는 이유입니다.

이제, 일부 사람들은 기본(빈) 저장소를 단순히 복사하여 새 저장소를 생성하는 실수를 저질렀습니다. 그렇게 함으로써 모든 저장소가 동일한 UUID를 갖게 됩니다! 네, 이것은 큰 실수입니다. 'UUID'라는 이름에는 이유가 있습니다. 'U'는 "Unique(고유한)"를 의미합니다. 이것은 로그 캐시를 완전히 혼란스럽게 만들고, 크래시 보고서 대화 상자가 자주 나타나게 될 것입니다.
이를 해결하려면 각 저장소마다 고유한 UUID를 설정해야 합니다. 공식 Subversion 패키지에서 svnadmin 도구를 가져와 각 저장소에 svnadmin setuuid REPOS_PATH를 실행하십시오.

저장소에 직접 액세스할 수 없거나 다른 이유로 UUID를 변경할 수 없는 경우, TortoiseSVN 설정 대화 상자에서 로그 캐시를 비활성화할 수 있습니다: logcachesettings

위 스크린샷에서 "모호한 URL 허용" 옵션을 발견할 수 있습니다. 캐시가 UUID가 서로 다르다는 점에 의존한다고 말씀드렸는데, 왜 URL에도 의존할까요?
URL(즉, 단순 문자열)을 비교하는 것은 저장소나 작업 사본에 저장소 UUID를 요청하는 것보다 훨씬 빠릅니다. 그래서 캐시는 가능한 경우 URL도 사용합니다. 예를 들어, 캐시가 https://example.com/svn/project/trunk URL이 특정 저장소를 가리킨다는 것을 안다면, https://example.com/svn/project/trunk/subfolder URL도 동일한 저장소를 가리킨다는 것을 압니다. 저장소 안에 저장소를 가질 수 없기 때문입니다.

"모호한 URL 허용" 옵션은 동일한 URL이 다른 저장소에 사용되는 상황을 위한 것입니다. 물론 그런 상황은 매우 드뭅니다. 문제가 발생했던 한 가지 상황은 svnbrigde 때문이었습니다. 이것은 SVN 클라이언트로 Microsoft Team System 저장소에 액세스할 수 있게 해주는 훌륭한 도구입니다. 하지만 그 도구의 이전 버전은 모든 저장소를 SVN 클라이언트에 동일한 URL로 액세스할 수 있게 했습니다.
svnbridge 개발자들과 이 문제를 논의하자마자, 그들은 거의 즉시 서로 다른 Team System 저장소에 대해 다른 URL을 제공하는 버전을 준비했습니다. 따라서 최신 버전의 svnbridge를 사용하면 그 문제에 부딪히지 않을 것입니다. 하지만 어떤 이유로 svnbridge 버전을 업데이트할 수 없다면, "모호한 URL 허용" 옵션을 활성화해야 합니다.

한국어 中文