2009-06-15 5 views
0

저희 회사는 최근 각 릴리스를 표시하기 위해 CVS 지점을 만들기 시작했습니다. 이전에는 태그를 사용하고 있었고 테스트 기간 동안 릴리스와 함께 나가야 할 필요가있는 항목을 수정 한 경우 태그를 앞으로 이동했습니다. 동일한 파일에 두 가지 변경 사항이 적용될 때까지 제대로 작동합니다. 하나는 릴리스되어야하고 다른 하나는 그렇지 않아야합니다. 이제 머리와 릴리스 지점 모두에 동일한 변경 사항을 적용해야합니다.CVS의 지점 태그가 앞으로 이동하지 않는 이유는 무엇입니까?

CVS와 상호 작용하기 위해 Eclipse의 CVS 플러그인을 사용하고 있습니다. 내가 파일의 히스토리를 볼 때 Tags 섹션 (이 경우 파일의 1.30 버전)에 i20090529Release 태그가 표시되고 History보기에서 "Show Tag Viewer"를 표시하면 아이콘이 이것이 브랜치임을 나타냅니다 태그를 사용합니다. 지점이 생한 이후 커밋 된 개정을 보면 머리에 한 다음 개정이 버전 1.31이되고 분기의 다음 개정이 버전 1.30.2.1이된다는 것을 알 수 있습니다. 제 질문은 i20090529Release 태그가 i20090529 브랜치의 최신 개정판이 아닌 파일의 1.30 버전에 머물러있는 이유는 무엇입니까? 이것은 정말로 선의의 "꼬리표"입니까? 아니면이 지점에서 지점이 분기하기 시작한 개념 아이디어입니까? 이 태그를 파일의 다른 개정 본에 적용 할 수 없음을 알았습니다. 태그 열에이 태그가 표시되는 이유는 무엇입니까?

제공 할 수있는 설명에 대해 미리 감사드립니다.

+0

Sidenote :에서 CVS를 포기하는 것이 좋습니다. Git (매우 명확한 브랜치 개념)이나 적어도 Subversion (브랜치에 값싼 복사본을 사용하는, 가능한 가장 좋은 모델은 아니지만 CVS의 브랜치 포인트 즉, 특별한 리비전 번호의 태그 지정보다 낫다. –

+0

포인트가 찍혔습니다. 우리의 새로운 프로젝트를 위해 우리는 SVN을 사용하기 시작했으나, 이전 프로젝트를 마이그레이션해야합니다. Git 용 Eclipse 플러그인 지원은 SVN과 어떻게 비교됩니까? – StriplingWarrior

답변

2

브랜치가 지점에서 분기하기 시작한 것입니다.

브랜치는 어느 시점에서 메인 트렁크에서 분기되는 일련의 버전으로, 자체 개발을 유지 관리합니다 (물론 밀접하게 조정될 수 있음). 최신 버전에 자동으로 적용되는 일련의 변경 사항이 아닙니다.

일반적인 의미에서 태그가 아닙니다 : 태그에 따라 체크 아웃하면 태그가 작성되었을 때 소스 트리의 스냅 샷을 얻게되고 분기에 따라 체크 아웃 한 결과 지점에 변화가 생기면 시간이 지남에 따라 달라질 것입니다. 이것은 태그와 유사하며 거의 동일한 방식으로 작동합니다. CVS는 오래된 RCS 파일 형식을 사용하고, 분기와 CVS 태그 모두에 RCS 태그를 사용합니다.

CVS에 대한 몇 가지 좋은 참고 자료가 있습니다. 태그와 지점에 대해 읽어보십시오.

+0

필자가 주요 질문에 대답했기 때문에이 대답을 올바르게 표시 할 것입니다. 지점이 지점에서 분기하기 시작한 것입니다. CVS에 대한 여러 참고 자료, 특히 태그와 분기에 관한 부분을 읽었습니다. 내가 정보를 찾을 수 없었던 이유는이 태그가 새 개정판을 변경 한 후에도 원래 개정판에 표시된 이유였습니다. – StriplingWarrior

+0

CVS는 구형 RCS를 통해 일련의 스크립트로 시작되어 RCS 파일 형식을 유지했습니다. RCS는 동일한 개념의 브랜치가 없으므로 (또는 적어도 가지지 않았기 때문에) RCS 태그는 일반 태그 및 분기 마커 모두로 사용되었습니다. RCS 태그 1.12.0.2는 1.12.2 분기의 시작이며 1.12.2.3과 같은 태그는 해당 분기의 버전입니다. 많은 사람들이 Subversion으로 이사 한 이유 중 하나 인 그런 작은 기이함이 많이 있습니다. –

0

일반 태그는 특정 파일 버전으로 설정되며 절대 이동하지 않습니다. 1.30으로 설정하면 수동으로 변경 될 때까지 1.30이 표시됩니다.

브랜치 태그는 브랜치 리비전으로 테제됩니다. 버전 1.30의 파일을 브랜칭하는 경우 첫 번째 브랜치는 1.30.2 (또는 다음 자유 짝수)가됩니다. 이 브랜치에 커밋 된 첫 번째 파일은 1.30.2.1, 다음 커밋 1.30.2.2 등 (자세한 내용은 Oliver Giesen의 설명을 참조하십시오.)

이 파일 (1.30.2)을 체크 아웃하면 항상 최신 파일 개정판을 가져옵니다. 그 지점 (1.30.2.x)에서.

하나는 나뭇 가지에 지사가 .. 다음 버전은 CVS에서 개정은 <branchrevision>입니다 1.30.2.2.2합니다 (1.30.2.2 파일 버전의 첫 번째 지점)처럼 endup 것이라고 할 수 있습니다. <filerevison> [. <branchrevision>. <filerevison>] [. <branchrevision>. <filerevison>] ... 등등. 첫 번째 분기 개정은 항상 1입니다 (afaik).

편집 : - 당신은 아직도 머리에 모든 개정을 투입하고 당신의 설명에 따라 짝수 오류가 당신이 그것을 사용하지 않는 때문에 아마 이동하지 않습니다

+1

개정 번호가 어떻게 구성되는지에 대한 설명이 정확하지 않습니다. 홀수 분기 번호를 얻는 유일한 방법은 가져 오기 명령을 사용하는 것입니다. 직접 분기를 작성하면 분기 번호는 항상 동일한 디렉토리의 파일에있는 가장 높은 분기 번호와 동일한 짝수가됩니다. –

+0

... 또는이 디렉토리에서 생성 된 첫 번째 분기 인 경우 2입니다. –

1

는 올리버 GIESEN 지적 고정 .

분기를 사용하려면 먼저 분기 태그합니다 (CVS 설명서에서이 예) 모든 파일에 태그를 가지고

cvs tag -b rel-1-0-patches 

동시에를, 난 강력 스냅 샷 태그를하는 것이 좋습니다를

:

cvs tag rel-1-0 

당신이 당신의 작업 디렉토리에 지점을 확인해야 브랜치를 사용하려면 : 당신은 항상 시간에 그 시점에서 코드를 재 구축 할 수 있도록 결코 업데이트를 이동하거나

그런 다음 분기에 대한 변경 내용을 커밋하면 분기 태그가 변경 사항에 적용된 것을 볼 수 있습니다. 당신이 보지 못할 것은 HEAD의 변화입니다. 이를 위해 지점 변경 사항을 HEAD에 병합해야하고 SO 답을 입력하기에는 너무 복잡하므로 다음 문서로 이동하십시오. http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_5.html#SEC54

+0

이것은 내가보고있는 것과는 전혀 관계가 없습니다. Eclipse의 CVS 관리자를 사용 중입니다. 나는 다른 브랜치 또는 버전으로 전환하여 브랜치를 체크하고, 커밋 할 때 개정 번호가 Joakim이 보여주는 것과 비슷한 형식을 변경했음을 알았습니다. 그러나 이클립스에서는 원래 개정판에 "태그"가 붙어있다. – StriplingWarrior

+0

StriplingWarrior : 브랜치의 그래픽 표현에 너무 많이 붙이지 마십시오. 태그가 기본 개정판에 부착되어 있다는 사실은 실제로 분기 태그를 사용하여 체크 아웃하면 그래프가 분기 태그와 직접 연관시키는 수정본이 아닌 해당 분기의 팁 개정판을 얻게된다는 사실을 변경하지 않습니다. –

관련 문제