2012-04-26 2 views
2

Windows7 Ultimate (32 비트) 컴퓨터에서 "cv2"라는 루트에 디렉터리가있는 TortoiseHG (2.3.2) 리포지토리가 있습니다. "cv2"의 다른 하위 디렉토리에 새 파일을 추가하면 TortoiseHG는 "cv2"를 디렉토리에 따라 "cv2"또는 "CV2"로 표시합니다. 나는 다음과 같은 디렉토리에 "tom.cs"라는 파일을 추가하는 경우Windows7의 Mercurial/TortoiseHG에서 대소 문자를 구분하는 디렉터리 이름 동작

예를 들어, 나는 TortoiseHG에서 다음과 같은 결과를 얻을 :

Physical Directory     TortoiseHG Filename 
...\cv2\Common\tom.cs    cv2/Common/tom.cs 
...\cv2\tom.cs      CV2/tom.cs 
...\cv2\WinClient\tom.cs   cv2/WinClient/tom.cs 
...\cv2\WinService\tom.cs   CV2/WinService/tom.cs 

이 시작했을 때 나도 몰라,하지만이있다 이제는 "cv2"와 "CV2"모두에 대한 커밋을 저장소에있는 두 개의 개별 디렉토리로 만듭니다 (내가 추측 할 수있는 많은 내용이 아님).

저장소에는 서브 디렉토리에 3 개의 프로젝트 ("cv2"와 "cp2"및 "NotificationService")가 포함 된 단일 솔루션이 있습니다. 솔루션 파일의 디렉토리 이름이 "cv2"대신 "CV2"임을 발견했습니다. Visual Studio에서 "Diff"작업을 중지했을 때 변경되었습니다 ... 그러나 초기 커밋 이후부터 변경되지 않았습니다. 불행히도 나는 그 시간에 Windows 디렉토리의 이름을 변경했는지 기억하지 못합니다 ... 가능합니다.

"CV2"또는 "cv2"가 어떤 디렉토리에 있는지에 대한 차이점이 있습니까? 성공하지 않고 명령 프롬프트를 통해 Windows 디렉터리의 이름을 바꾸려고했습니다. 나는 Mercurial이 Windows 머신에서 실행될 때 대/소문자 구분을 무시했다는 인상을 받았지만 오보가되었다고 생각합니다.

나는 프로젝트의 유일한 개발자이기 때문에 변경 사항이있는 사람을 망칠 위험이 없습니다.

답변

4

예, Mercurial은 대소 문자를 구별하지 않는 파일 시스템에서 파일 이름의 대소 문자를 무시하지만 저장소에 의 파일 이름 ()을 저장해야합니다. 의욕 2.2 RC (Windows의 릴리스 후보를 실행하는 방법에 대한 지침은 the wiki를 참조)

hg rename CV2/tom.cs cv2/tom.cs 

은 다음 커밋에 대해 "이름 변경"일정을 실행할 수와

. 파일은 대소 문자를 구별하지 않는 파일 시스템을 위해 이미 올바른 위치에 있기 때문에 디스크로 옮겨 가지는 않을 것입니다. 그러나 이름 바꾸기는 기록에 기록되고 새로운 체크 아웃은 디스크에 올바른 경우를 갖습니다.

위키에 more instructions이 있으며 앞으로 사용자를 보호하기 위해 사용할 수있는 caseguard extension이 있습니다. 그러나 이것은 Mercurial 2.2로 수정해야하며 이전 버전과 비교하여 대소 문자를 구분하는 문제를 다루는 코드가 훨씬 많습니다.

+0

감사합니다. 감사합니다. 감사합니다. - 완벽합니다! CV2로 커밋 된 5 개의 파일의 이름을 cv2로 변경하자마자 Visual Studio를 통해 추가 된 파일도 자동으로 cv2로 변경되었습니다. TortoiseHG는 현재 Mercurial 2.1.2에서 실행 중이므로 대소 문자를 구분하지 않는 코드를 얻기 전에 2.2에 도달 할 때까지 기다려야합니다. 다시 감사합니다! – freefaller

+0

@freefaller : 대단히 환영합니다. 도와 드릴 수있어서 기쁩니다! –

관련 문제