2010-07-12 2 views
2

버전 제어 기능을 통해 작업을 해왔습니다. 나는 sccs로 시작했고, 믿거 나 말거나. RCS와 협력했습니다. CVS로 옮겼습니다. Visual SourceSafe를 사용하도록 강요 당하고 그것을 싫어했습니다. Subversion에 꽤 만족해했습니다.버전이 아닌 변경 세트를 사용하는 비 분산 버전 제어?

저는 새로운 분산 형 VCS를 보았습니다. Git, Hg 등 복잡하게 보입니다. 전 팀이 SVN 중 하나를 선택하는 데 걸리는 시간을 갖기 위해 SVN보다 이점을 충분히 제공하는지에 대한 의문이 있습니다.

하지만 생각 중입니다. 내가 읽은 바에 따르면 Git에는 SVN에 비해 두 가지 실질적인 변화가있다. 첫째, 분산 리포지토리. 둘째, 버전 대신 변경 세트를 통한 병합 관리.

나는 첫 번째 장점이 무의미한 유일한 사람이라고 생각하지 않습니다. 우리 사업에는 단일 저장소가 필요합니다. SVN이이 작업을 수행하면 Git이이를 수행 할 수있다. Git이 분산 리포지토리를 관리 할 수 ​​있다는 점은 다른 사람들에게 큰 이점이 될 수 있기 때문에 전혀 이득이되지 않습니다.

변경 세트를 통한 병합 관리는 우리에게 도움이 될 것입니다. 우리는 여러 개의 프로젝트를 관리하고 있습니다. 여러 개의 하위 프로젝트가 있고 여러 개의 상위 프로젝트가 공유합니다. CVS를 사용했을 때보 다이 브랜치에서 변경해야 할 사항을 SVN에서 관리하는 것이 훨씬 쉽지만 결코 고통이 없습니다. Git의 변경 세트 방식은 실제 이점처럼 보입니다.

내가 궁금해하는 점은 Git의 복잡성이 다중 저장소의 사용으로 인한 것인가, 그리고 변경 세트 작업에 내재 된 것이 얼마나 많은지 궁금합니다. 변경 세트를 사용했지만 여러 저장소를 제공하지 않은 VCS는 Git보다 간단 할 수 있습니까?

Git보다 사용하기 쉬운 변경 세트를 사용하는 VCS가 있습니까?

+0

Subversion보다 더 힘들지 않을 것입니다. (면책 조항 : 저는이 두 가지를 모두 사용했지만, 작은 한 사람 프로젝트에만 사용했습니다.) 그리고 많은 입문 자료가 있습니다. http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html, http://git-scm.com/course/svn.html, http://progit.org, http : //gitcasts.com, http://eagain.net/articles/git-for-computer-scientists – Philipp

+0

참조 http://stackoverflow.com/questions/2704996/describe-your-workflow-of-using-version- CVCS와 DVCS (중앙 집중 대 분산) – VonC

+0

의 IMO 배포 차이점에 대한 좋은 예를 보려면 control-vcs-or-dvcs를 참조하십시오. 병합 : 분산 VCSes가 매우 강함 병합되지 않은 사용자는 증분 변경에 더 의존 할 수 있습니다. 성능 : 버전 정보를 직접 액세스 할 수있게되면 네트워크를 거쳐야하는 것과 비교하여 기록 검색 속도가 크게 향상됩니다. 글로벌 잠금 없음 : 누군가가 느린 VPN을 통해 큰 변화를 확인하는 동안 repo를 읽는 데 30 분을 기다려야하는 것은 상당히 성가시다. 마찰 감소 : 병합하기 전에 작업하고있는 것을 본 유일한 사람이라면 동료를별로 괴롭히지 않을 것입니다. – kusma

답변

1

서브 버전에는 변경 집합 개념이 있으므로 변경 집합 with the -c option을 지정할 수 있습니다. 개별 변경 집합 또는 변경 집합 범위를 병합 할 수 있습니다. 실제로이 점은 Subversion이 각 커밋을/db/revs/(파일 기반 저장소의 경우 적어도)에 저장하는 방법입니다.

Subversion과 비교할 때 Git의 장점으로 볼 수있는 것은 지점 A에서 지점 B까지 여러 개의 changsets을 병합 할 때 지점 B는 각 개별 변경 집합을 유지하지만 Subversion에서는 하나의 변경 집합으로 함께 축소 된 것처럼 보입니다. "모든 변경 사항은 병합을 수행 한 사용자가 수행합니다. Subversion에서 각 변경 집합을 확인하기 위해 이전 분기로 되돌아 갈 수는 있지만 편리하지는 않습니다.

힘내 또한 가지 사이의 변경 집합의 차이점을 볼 수있는 강력한 명령이 있습니다. Subversion 1.5에서 도입 된 병합 추적 기능은 이와 같은 작업을 시도하지만 IMHO는 복잡하고 직관적이지 않습니다. (: 나는 게시물을 작성한 전체 공개가) :

1

나는 git의 학습 곡선을 말할 것이며 어떤 유형의 사용에도 가치가있다.

"변경 세트"에 대해 설명하는 내용이 정확하지 않지만 darcs는 유사 할 수있는 "패치 세트"에 대해 이야기합니다. 또한 DVCS이지만 다소 다릅니다. 나는 때때로 그것을 사용할 것을 강요하지만, 실제로 darcs와 git을 이해하지 못한다. 그것은 당신이 찾고있는 것일 수 있습니다.

의도적으로 DVCS를 피하려고하는 것은 실수입니다. 여전히 하나의 중앙 저장소를 완전히 사용할 수 있습니다. 분산 된 부분은 인터넷 연결이 끊어지면 작업하기에 훌륭하며 안정성을 위해 유용합니다. 당신은 서버에 의존하지 않습니다. 나는 서버에 묶여 있지 않기 때문에 프로젝트에서 6 시간 동안 열차에있을 때 많은 일을 처리하게된다. 서버 문제가 발생한 경우 체크 아웃 한 사본을 가진 모든 사람이 전체 사본을 가지고있을 때 아무 것도 잃지 않습니다.

+0

이 질문에 대답하지 않습니다. 내 모든 개발은 중앙 저장소와 동일한 LAN에있는 데스크탑에서하므로 실제 원격 개발 문제는 없습니다. 그리고 체크 아웃 한 사본을 백업 전략으로 사용하는 경우 - 잘못된 결과가 발생합니다. 백업은 백업이어야합니다. – Avi

+0

모든 것의 완전한 사본을 가지고있는 모두는 정말로 죽어가는 것에서 무엇인가를 지키는 탁월한 방법입니다. 백업을 대신 할 수는 없지만 많은 도움이됩니다. 또한 여러 장소에 대한 연속적인 백업 시스템입니다. 서버 백업에서는 대개 백업 사이에 상당한 간격이 있습니다. – arsenm

1

"changesets"또는 "versions"이 무슨 뜻인지 잘 모르겠습니다. 그것은 실제로 그것이 정확히 다른 방향으로있는 것처럼 보입니다. git이 데이터를 저장하는 방법은 각 파일의 전체 내용을 저장하는 것입니다. 반면 SVN은 새 버전의 차이점 만 저장합니다.

분산 저장소 기능은 지나치게 과소 평가 된 기능입니다. 내가 git으로 전환하기 전에 나는 아직 가능성을 보지 못했다. 그러나 로컬 커밋과 로컬 지사를 갖는 것은 중요한 기능입니다.

SVN에는 하위 리포지토리를 처리 할 외부가 있습니다. 자식 있음이 하위 모듈 (조금 다릅니다)라고합니다. 이것은 SVN과 git이 모두 지원하기 때문에 결정적인 요인이되어서는 안됩니다. 당신이 자식을 어떻게하는지 싫다면 제외하고 물론.

나는이 이야기를 getting git라고 지켜 볼 것을 제안한다. 그것은 자식의 작동 원리를 설명 할 것이다. 특히 "VCS taxonomy"슬라이드는 다른 VCS와의 근본적인 차이점을 설명해줍니다.

+0

나는 그 말을하기 위해 여기에 왔습니다. Joel Spolsky의 잘못된 기사에도 불구하고 git은 내용에 고유 한 SHA-1 해시가있는 각 파일의 전체 버전을 저장합니다. SVN 저장소를 변경하여 즉시 적용합니다. – masonk

0

것은 자식은 당신이 생각하는 것보다 기업 환경에 훨씬 더 할 이유 몇 가지 아이디어를이 블로그 게시물을 읽어

Git advantages in corporate environment

을하지만, 당신이 주장하는 경우 중앙 집중식 모델에서 Bazaar는 중앙 집중식 모드로 작동 할 수 있습니다. 블로그 게시물을 읽은 후에는 실제로 중앙 집중식 모드의 단점이있는 이유를 알 수 있습니다.

관련 문제