문제

Vista64에서 Tortoisehg 0.5 (Mercurial 1.0.2 포함)를 사용하고 있습니다. 내 이해 수은 책 Mercurial은 사례에 민감한 파일 시스템 (예 : 내가 켜져있는 NTFS 등)에서 파일 이름을 대사하는 방식으로 처리해야한다는 것입니다. 그러나 수은의 설치는 실제로 사례에 민감하다는 것을 알았습니다.

>hg status -A foo
C foo
>hg status -A FOO
? FOO

이것은 Mercurial의 버그, Mercurial의 Tortoisehg 빌드의 버그 일 수 있습니까, 아니면 다른 것입니까? Windows의 Mercurial에서 케이스 감수성 파일 이름 처리를 어떻게 달성 할 수 있습니까?

도움이 되었습니까?

해결책

이 문제는 Mercurial 1.1에서 해결되었습니다! 로부터 릴리즈 노트: "케이스 폴딩 파일 시스템에 직면 한 정확성 향상".

Windows에서 Mercurial은 이제 명령 줄 인수에서 사건을 무시합니다.

>hg status -A foo
C foo
>hg status -A FOO
C foo

또한 사례 만 포함되는 파일 이름 변경은 새로운 파일이 아니라는 것을 알고 있습니다.

>ren foo FOO
>hg status -A fOO
C foo

따라서 더 이상 명령 줄의 안개로 인해 변경 사항을 간과 할 위험이 없습니다.

그러나 .hgignore 파일의 내용은 사례에 민감하게 유지됩니다. 글로벌 구문을 사용하는 경우에만 문제가됩니다. regexp 구문을 사용하면 패턴의 시작 부분에 (? i) 둔감하게 만들 수 있습니다.

다른 팁

나는 당신이 hgbook을 잘못 읽었다고 생각합니다. 섹션 7.7에 대한 소개는 오스에 존재하는 세 가지 유형의 사례 민감도를 설명하는 것입니다.

7.7.2 절의 나중에 '사례 충돌 감지'는 다음과 같습니다.

Working Directory에서 작동 할 때 Mercurial은 작업 디렉토리가있는 파일 시스템의 이름 지정 정책을 수여합니다. 파일 시스템이 사례 보존이지만 둔감 한 경우, Mercurial은 경우에만 다른 이름을 다루게됩니다.

당신이 할 때 hg status -A FOO Mercurial 내에서 일어나는 과정은 다음과 같습니다.

  1. 파일 인수 'foo'와 일치하는 파일 시스템에 파일이 있는지 확인하십시오.
  2. 파일 인수 'foo'와 일치하는 파일에 항목이 있는지 확인하십시오. HG가 추적하지 않는 디스크의 파일이라고

NTF의 사례를 돌보지 않는 Mercurial을 더 잘 보려면 다음 단계를 시도하십시오.

  1. HG init
  2. 에코 라인> foo
  3. hg add foo
  4. HG Commit -M 'Commited Foo'
  5. foo not-foo를 움직입니다
  6. Foo Foo를 움직입니다
  7. HG 상태

그리고 당신은 HG가 아무것도 바뀌지 않았다고 말하는 것을보아야합니다.

Linux에서 똑같은 일을 할 때 대신 다음을 볼 수 있습니다.

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