2008-11-26 4 views
8

저희 팀은 약 20,000 개의 Java 파일이 들어있는 cvs 프로젝트에서 작업합니다. 파일의 수가 많기 때문에 cvs 업데이트를하는 데 시간이 걸립니다. 나는 일반적으로 전체 트리를 약 5 부씩 체크 아웃하여 각 파일에 대해 수정 된 파일에 대한 걱정없이 다양한 요청을 쉽게 확인할 수 있도록합니다. 5 개의 나무를 모두 최신 상태로 유지하고 서로 동기화하는 것이 정말 고통 스럽습니다.gv와 cvs가 cvs보다 빠릅니까?

나는 원격 cvs 서버에서 git을 사용하는 것이 매우 쉽다는 것을 읽었으며 그 git는 빠릅니다. git을 사용하면 로컬 트리의 업데이트 속도가 크게 빨라 집니까?

하한은 하나의 cvs 업데이트를 수행 할 시간이라는 것을 알고 있습니다. 하지만 첫 번째 트리가 최신 상태가되면 4 개의 cvs update 명령을 수행하는 대신 다른 4를 첫 번째 트리와 빠르게 동기화 할 수 있다고 생각합니다. 자식을 올바르게 이해합니까?

답변

8

큰 프로젝트 (약 10k 파일)에서 Git을 Subversion 클라이언트로 사용합니다. 힘내 빨리, 정말 빠르다. 너무 빨라서 하나의 복제본을 유지하고 동일한 복제본 내의 기능 분기간에 전환합니다. 내가 Subversion을 사용했을 때 비슷한 체크 아웃을 2 ~ 3 회하고 정기적으로 여러 항목을 진행하면서 동시에 전환했습니다. 때때로 꽤 혼란 스러울 것입니다. 경량 브랜치, stash 및 "git add -p"와 같은 Git의 기능을 사용하면 더 이상 다중 체크 아웃이 필요하지 않습니다. 모든 것을 하나의 디렉토리에서 처리 할 수 ​​있으며, 잊어 버린 부분이나 실수로 덮어 쓴 부분에 대해 걱정하지 않아도됩니다.

CVS와 함께 힘내를 사용하지는 않았지만 통합이 git-svn과 같은 경우 문제가되지 않습니다.

+0

git과 CVS _client_의 통합은 SVN과 비교해 좋지 않습니다. (적어도 이전에는 CVS를 사용한 프로젝트가 마이그레이션되었으므로 최근 경험이 없습니다.) CVS _server_가 소스에있는 git 저장소의 프론트 엔드로 실행되고 있지만, 나는 항상 아픈 마음의 시달린 출력을 고려했습니다. 그래서 ...). – vonbrand

10

우리는 비슷한 방식으로 작업을 수행합니다. 우리는 기본적으로 코드의 master 브랜치를 하나의 업데이트 된 CVS 버전으로 사용합니다. 우리는 거기서 개발을하지 않고 그냥 CVS를 업데이트합니다. 그런 다음 모든 개발 프로젝트는 재배치 한 지형지 ​​물에서 발생합니다. master 지점에서 CVS 업데이트를 수행 할 경우 해당 변경 사항을 master으로 변경 한 다음 master에 대해 다른 개발 지점을 리베이스합니다.

다른 사람과 지사를 공유하기가 어렵습니다. 그러나 우리는 여러 개발 프로젝트를 한 번에 관리 할 수 ​​있으며 쉽게 분기, 병합 및 차등을 수행 할 수 있습니다. 그리고 필요에 따라 하나의 master 브랜치에서만 CVS와 상호 작용합니다.

+0

소리가 아주 좋습니다. 리베이스 단계가 CVS보다 빠릅니까? –

+0

그래, 모두 로컬이기 때문에 더 빨라. 기본적으로 지점에서 diff를 생성하여 지점의 새 헤드에 적용합니다. –

+0

@ CraigP.Motlin, 이와 같은 작업은 거의 즉각적인 경향이 있습니다. CVS에서 현재 버전을 체크하는 것은 느립니다 (아마도 네이티브 CVS보다 느립니다). Whay는 참다운 곰이다. 첫 번째 체크 아웃 (CVS 또는 SVN)이다. 그것은 리비전을 완전히 빨아 들인다. 대규모 리포지토리의 경우 문자 그대로 며칠이 걸릴 수 있습니다. 이 프로세스는 서버와의 연결이 끊어지고 다시 시작되어야한다는 점에서 다소 약합니다. (완료되지 않은 채로 아무것도 체크 아웃되지 않으며 계속 당황하지 마십시오.) 일단 복제 된 CVS 저장소의 사본 하나를 가지고 있다면 디렉토리를 복사 할 수 있습니다. – vonbrand