저는 Mercurial을 사용하지 않지만 시작하고 싶습니다. 그래서 그것에 대해 읽고 있습니다. 내가 광범위하게 사용한 유일한 SCM 시스템은 CVS뿐입니다. 내가 Mercurial에 관해 읽은 대부분은 이해가되며, 좋은 것 같습니다. 그러나 나는 태그를하는 방식으로 번갈아 가며 충격을 받고 혼란스러워합니다.어떻게 항상 Mercurial의 모든 태그에 대해 알 수 있습니까?
태그는 변경 집합의 닉네임이며 'changeset'은 변경 집합의 결과를 의미합니다. 시원한. 태그에서 변경 집합 ID 로의 매핑은 .hgtags
파일에 저장됩니다. 또한 시원한. .hgtags
파일의 버전이 지정됩니다.
무엇?
이렇게 많은 직관력이 떨어집니다. 예를 들어, 내가 태그 (예 : 릴리스 1.0을 형성 할 코드)를 바꾸려는 변경 집합을 커밋하면 업데이트 된 태그 파일을 저장소에 저장하기 위해 태그를 지정한 후 다시 커밋해야합니다. 그리고 나중에 태그가 붙은 변경 집합으로 업데이트하면 작업 복사본에 해당 태그에 대한 지식이 전혀 포함되지 않습니다. 만약 내가 어떤 일을한다면, 새로운 지점을 창립하면 (말하자면 1.1로 향하는 버그 수정), 그 지점은 그것이 성장한 태그에 대한 어떤 지식도 가지지 못할 것입니다. 수동으로 복사하지 않는 한.
중요한 변경 집합 (트렁크의 2.0 릴리스, 지점의 1.1 및 1.2 버그 수정 릴리즈)을 표시하기 위해 태그가 생성되어 원래 트렁크와 새 분기 모두에서 개발이 진행됨에 따라 두 분기가 계속 진행됩니다 다른 지점의 꼬리표의 무지. 그래서, 만약 하나의 브랜치에서 작업을 끝내고 다른 브리 치의 특정 변경 세트로 바꾸길 원한다면 (예를 들어 1.2 버디 픽스 릴리즈를 마친다.하지만 이제 2.0을 기반으로하는 2.1 버그 픽처에서 시작해야한다.) 이제 나는 채워진다. 현재의 changeset는 2.0에 대해 알지 못합니다!
어떻게해야합니까?
- 나는 2.0 실제 변경 집합 ID를 읽고, 명시 적으로 사용하도록 2.x는 지점에 근무하는 사람을 요청할 수 있습니다, 그러나 이것은 소름이 끼치는이다.
- 태그를 사용할뿐만 아니라 내 지사의 이름도 지정할 수 있으므로 2.x 지점의 머리를 건너 뛰어 새 태그에 대해 학습 한 다음 다시 2.0 태그로 건너 뛸 수있었습니다. 태그와 달리 분기가 보편적으로 볼 수 있다고 가정하면 - 그 경우입니까? 비록 그것이라고해도, 이것은 clunky 것처럼 보인다.
- 하나의 글로벌
hgtags
파일을 저장소 외부에 유지하고 몇 개의 후크를 사용하여 업데이트 사본을 가져 와서 로컬 복사본을 덮어 쓰고 변경 내용을 커밋에 다시 복사 할 수 있습니다. 개발자가 공유 저장소에 변경 사항을 적용하는 다중 사용자 환경에서 이것이 어떻게 작동하는지 확신 할 수 없습니다.hgtags
파일 만 별도의 저장소가 필요할 수도 있습니다. - 버전 관리 메커니즘 외부에있는 로컬 태그를 사용할 수 있으므로 전체적인 문제를 피할 수 있습니다. 공유 전역 태그와 마찬가지로 개발자간에
localtags
파일을 동기화하는 메커니즘을 구현해야합니다.
이 솔루션들 중 어느 것도 훌륭한 것으로 보이지 않습니다. 어떻게해야합니까?
여기서 가정은 branch-per-branch보다는 단일 저장소에서 명명 된 분기를 사용하여 관리한다는 것입니다. 후자를했다면 상황이 나아질까요?.hgtags
파일 버전 관리
@ SilentGhost : 'mercurial'태그가 훨씬 더 많이 사용되기 때문에 'hg'태그를 제거했습니다. 하지만 그게 실수 였을까요? –