2011-08-23 3 views
0

새로운 버전의 Mercurial이 출시됨에 따라 은 개발자, 디자이너 및 다른 사람들이 Mercurial의 승인 된 (또는 이상) 버전을 사용하고 있음을 어떻게 든 강요하고자합니다. 예를 들어, 현재 1.8.3 버전에 있습니다. 1.8.3 이전의 버전을 사용하여 사용자가 자동으로 리포지토리에 액세스하는 것을 자동으로 방지/거부하고 나중에 모든 버전을 허용하고 싶습니다. 나는 이것을 할 수 있겠습니까?Mercurial 클라이언트가 특정 버전의 Mercurial을 사용하도록하려면 어떻게해야합니까?

Windows 및 IIS에서 서버를 실행합니다. 나는 올바른 버전이 아닌 클라이언트를 위해 500 개의 오류를 반환하는 IIS 확장을 작성하려고했지만 클라이언트는 HTTP 요청에 버전 정보를 보내지 않았다. "mercurial/proto 1.0"은 Mercurial의 버전 1.0을 의미한다고 가정합니다. HTTP 프로토콜.

내가 원하는 것은 무엇입니까? 이 문제를 해결할 다른 방법이 있습니까?

Mercurial은 대소 문자를 구분하므로이 작업을 수행하려고합니다. 우리는 대소 문자를 구별하지 않는 Windows에서 100 %입니다. 이로 인해 우리는 수많은 케이스 폴딩 충돌을 일으 킵니다. 우리는 시간을 낭비합니다. Mercurial은 사례 처리를 향상 시켰지만 여전히 사례 접기 문제를 도입 할 수있는 상황을 가지고 있습니다. 새 버전에서 사례 처리 개선이 이루어지면서 우리는 사용자에게 해당 버전에 사용자를 적용하기를 원합니다. 그래서 우리는 시간을 보냄에 따라 새로운 문제가 발생하지 않습니다.

+0

iirc 대소 문자를 접는 데 도움이되는 몇 가지 확장 기능이 있습니까? –

답변

2

당신은 이것을 강요하고 싶은 강한 이유가 있습니까? Mercurial은 버전 기능을 자체적으로 처리하는 내부 메커니즘을 가지고 있습니다. 1.6.3과 같은 기능을 사용하는 1.8.3 저장소를 만드는 경우 1.6 클라이언트는 저장소와의 상호 작용을 거부합니다. 즉, 수은 자체는 액세스를 거부하지만 버전 번호를 기반으로하지는 않지만 실제 기능을 기반으로합니다. 이렇게하면 새 릴리스가 호환성을 손상시키지 않으면 문제없이 두 버전을 함께 사용할 수 있습니다.

내부적으로 이것은 mercurial이 저장소의 메타 정보에 필수 기능 목록을 추가하고이 목록을 확인하기 전에이 목록을 확인하기 때문에 작동합니다. 목록에 수은이 (아직) 알지 못하는 기능이 포함되어 있다면, 의미있는 것으로 상호 작용할 수 없으며 협조를 거부한다고 결론 지을 수 있습니다.

그래서 IMO는 개발자가 최신 버전을 사용하고 추가 기술적 조치를 추가하지 않아도되는 정책을 수립하는 것이 가장 좋습니다. 누군가가 실제로 너무 오래된 버전으로 푸시하려고하면 오류 메시지가 표시되고 불만 사항이 있으면 공식 정책을 가리킬 수 있습니다.

+0

이 기능을 원한다는 동기를 포함하도록 질문을 업데이트했습니다. –

+0

알 겠어 ... 글쎄, 윈도우는 대소 문자를 구분하지 않고, 대소 문자를 구분한다. 수은을 벗어난 케이스 충돌을 막을 수있는 방법이 있을까요? – tdammers

0

Windows 사용자 인 경우 도메인 정책을 사용하여 Mercurial 설치 프로그램을 어떻게 배포합니까?