나는 수은 태그에 대해 읽었습니다. 일반적으로 릴리즈 포인트를 표시하기 위해 changeset에 태그를 붙이는 것을 볼 수 있습니다.이 태그 역시 수정 버전으로 제어됩니다.Mercurial에서 태그 파일을 분리하는 이유
그러나 나는 .hgtags
파일을 가지고 있다는 생각을 정말로 이해할 수 없었다. 이 파일의 목적은 무엇입니까?
나는 수은 태그에 대해 읽었습니다. 일반적으로 릴리즈 포인트를 표시하기 위해 changeset에 태그를 붙이는 것을 볼 수 있습니다.이 태그 역시 수정 버전으로 제어됩니다.Mercurial에서 태그 파일을 분리하는 이유
그러나 나는 .hgtags
파일을 가지고 있다는 생각을 정말로 이해할 수 없었다. 이 파일의 목적은 무엇입니까?
.hgtags
파일을 사용하면 .hgtags
파일의 변경 내용을 다른 모든 파일의 변경 내용을 기록하는 데 사용 된 것과 동일한 형식으로 기록 할 수 있습니다. 또한 파일 변경 사항을 전송하는 데 사용되는 것과 동일한 형식으로 태그를 리포지토리간에 전송할 수 있습니다.
이것은 Mercurial이 디렉토리 변경 사항을 저장하기위한 하나의 시스템과 변경 사항을 디렉토리로 전송하는 하나의 프로토콜을 구현하고 파일 전송을 변경할 때 분기 및 태그 정보를 자동으로 처리하도록합니다.
.hgtags
파일의 기록을보고 프로젝트의 태그 기록을 볼 수도 있습니다.
두 개의 관련 리포지토리에있는 태그 이름이 충돌 할 수 있습니다.
E.G. 태그 A는 변경 집합 id X의 한 repo 지점에있을 수 있고 다른 repo에서 같은 태그가 변경 집합 id Y를 가리킬 수 있습니다. 병합 중에이 충돌을 해결해야합니다.
병합 중 충돌은 파일 및 관련 수정을 검사하여 해결됩니다.
따라서 태그는 repo의 일반 파일에 저장되어야합니다.
실제로 별도의 태그 파일을 가지고있는 용도는 전혀 없습니다. 저장소 기록 (태그 포함)은 'log'명령으로 잘보아야합니다. tags 파일을 사용하면 중요한 규칙이 깨집니다. 버전 시스템과 관련된 변경으로 인해 저장소가 변경되지 않아야합니다.
단점은'hg clone -r'과 나중에 분리 된 두 개의 별도의 태그가 나중에 병합 될 때'.hgtags' 파일에서 충돌을 해결하는 불필요한 요구 사항을 포함합니다. –
Jesse
+1, 동일한 원칙이'.hgignore '에도 적용됩니다. –
나는이 논쟁을 이해하지만, "편의를위한 해킹"이기 때문에 많이 보인다. 또한 태그가 실제로 Hg의 일급 부분이 아니라는 점도 인정합니다. –