문제

은 무엇 장점 및 단점 으로 사용 중앙대 배포 제어 시스템(DVC)?당신이 어떤 문제로 실행에 DVC 그리고 당신은 어떻게 보호에 대하여 이러한 문제가 있습니까? 유지구소에 상관없이에 불타는 최소화합니다.

사람들을 위해 무엇인지 궁금 DVC 사용할 수 있는 도구,목록은 다음과 같 가장 잘 알려진 무료로/오픈 소스 DVCSs:

도움이 되었습니까?

해결책

나의 답변 다른 질문:

분산 버전 관리 시스템 (DVCSs)다른 문제를 해결하기 위한 이상 중앙 VCSs.을 비교하들 비교 같은 망치와 스크류 드라이버.

중앙 VCS 시스템 설계 의도가 있는 하나 진정한 원인이 축복하고 따라서 좋습니다.모든 개발자가 작업 (점검)소스에서,그리고 다음 추가(commit)들이 변화하는,다음 가 마찬가지로 축복을 받았습니다.만 실제 사이에 차이 CVS, Subversion,클리어 케이스 Perforce Visual sourcesafe 언급과 다른 모든 CVCSes 에서는 워크플로, 성능 및 통합하는 각 제품 제공합니다.

록 벤처 캐피탈 시스템 설계 목적으로 하나 저장소만큼 좋은,다른 과 합병 중 하나에서 저장소 는 또 다른 형태의 커뮤니케이션.어떤 의미의 값으로 하는 신뢰할 수 있어야 합 저장소 서 부과하여 외부에서 프로세스,지 않은 소프트웨어에 자체입니다.

실제 사이의 선택 중 하나를 사용하여 유형 또는 다른 조직--는 경우 귀하의 프로젝트 또는 조직을 원 중앙 집중식 제어,다음은 DVC non-스타터입니다.는 경우에는 개발자가 예상 작동하는 모든 국가/세계 없이 안전 광대역 연결을 중심 저장소,다음 DVC 은 아마도 당신의 구원입니다.모두 필요한 경우,당신은 당신 fsck 습니다.

다른 팁

을 생각하는 사람들이 분산 시스템을 허용하지 않는 신뢰할 수 있는 복사가 있음을 유의하시기 바랍니다 장소의 많음이 어디에 배포 시스템 신뢰할 수 있는 복사,완벽한 예입니다 아마 눅스 커널 트리입니다.야의 많은 사람들은 자신의 나무 그 거의 모든 그들의 흐름으로 라이너스'나무입니다.

는 말을 사용하고 생각하는 분산 SCM 의 단용 많은 개발자들은 다른 일을 하지만 최근 결정 는 아무 것도 중앙 집중식 저장소를 할 수 있는 배포를 할 수 있는 한 더합니다.

예를 들어,당신은 솔로 작업하는 개발자는 자신의 개인정 프로젝트입니다.중앙 집중식 저장소의 수도는 명백한 선택이나 시나리오를 생각해보십시오.당신은 멀리서 네트워크에 액세스(비행기 공원에서,etc.)고 작업하려는 귀하의 프로젝트입니다.당신은 당신의 지역 을 복사 할 수 있도록 잘 작동 하지만 당신은 정말이하고 싶기 때문에 당신 이 완료 하나의 기능과 원하는 다른 이동,또는 당신이 발견 버그를 수정하거나 어떤 것이다.점은 중앙 집중식 저장소 결국 하나 mashing 모든 변경 사항을 함께 커밋들 비 논리적 집합하거나 당신 수동으로 분할입니다.

분 repo 당신이 일상적인 비즈니스,commit,이동 이 있을 때 인터넷 액세스는 다시 당신을"진정한 repo"고 아무것도 변경되었습니다.

을 언급하지 않는 다른 좋은 일에 대해 배 repos:전체 기록할 수 있다.당신이 볼 필요가에서 개정할 때 로그 텔에서 net?당신은 주석을 추가할 필요 소스를 어떻게 버그 소개되었?으로 가능한 모든 배포 repos.

시다는 것을 믿지 않는 분산 대 중앙은 소유권 또는 신뢰할 수 있는 복사 또는 아무것도 같습니다.실 로는 진화의 다음 단계의 SCM 습니다.

정말로 비교하지만,여기에 무슨 큰 프로젝트에 사용:

중앙 VCSes

  • Subversion

    아파치,GCC,Ruby,MPlayer,Zope,Plone,Xiph,FreeBSD,WebKit,...

  • CVS

    CVS

배 VCSes

  • git

    리눅스 커널,KDE,Perl,Ruby on Rails,안드로이드,와인,페도라 X.org,미디어위키 Django,VLC,Mono,Gnome,Samba,컵,GnuPG,Emacs ELPA...

  • 수은(hg)

    Mozilla 및 Mozdev,OpenJDK(Java),OpenSolaris,ALSA,NTFS-3G,비둘기,MoinMoin,똥개,PETSc,옥타브,FEniCS,적성,Python,여러분이 좋아,Xen,Vim,Xine...

  • bzr

    Emacs,Apt,Mailman,MySQL,오징어,...또한 추진 내에서 Ubuntu.

  • darcs

    데이타 모델,이온,적화를 하는 c++컴파일러,...인기 있는 내켈 커뮤니티입니다.

  • 화석

    SQLite

W.크레이그인 에 대해서 이렇게 말하고 있습니다 DVC 및 CVCS:

모두 필요한 경우,당신은 fsck 습니다.

까지 당신 fsck'd 을 모두 사용하는 경우.실질적으로 사용하는 개발자 DVC 도구 일반적으로 병합하려고 그들의 변경(보내거나 당겨 요청)에 대하여 중앙 위치(일반적으로 방출 분기에 출시 repository).몇 가지 아이러니가 있으로 사용하는 개발자 DVC 그러나 결국 스틱과 중앙 워크플로,시작할 수 있습니다면 분산 방법은 정말이 더 나은 중앙 집중식으로 이루어집니다.

거기에 몇 가지 장점을 가진 DVC 통해 CVCS:

  • 의 개념을 고유하게 인식 할 수있는 커밋하게 보내는 패치를 동료들 사이의 고통입니다.I.e.당신들에게 패치로 투입하고,다른 사람과 공유할 수 있는 개발자 필요합니다.나중에 때 모두가 함께 병합,특정 투입식과 비교할 수 있습이 가지하는 데,적은 기회를 병합하다.개발자를 보내는 경향이있다 패치를 각각 다른 USB 스틱 또는 e-mail 상관없이의 버전 관리 도구를 사용 합니다.불행하게도에 CVCS 경우,버전 제어 등록 커미로 별도,인식하지 못하는 경우는 변경 내용이 동일한,더 높은 기회를 병합하다.

  • 할 수 있습이 현지 실험적인 가지(복제된 저장소의할 수도 있습으로 간주점)할 필요가 없는 다른 사람에게 보여주기 위해.즉,주요 변경 사항을 필요로 하지 않는 개발자에게 영향을 줄이 없는 경우 밀어 아무것도 서버로 전송한다.에 CVCS 때,당신은 여전히 주요 변경해야 할 수 있습니다 오프라인에서 작업할 때까지 당신은 그것을 해결했 commit 변경 사항에 의해 다음입니다.이 방법을 효과적으로 패배를 사용하는 목적으로 버전으로 안전하지만 필요에 악 CVCS.

  • 오늘날의 세계에서 기업들은 일반적으로 작동으로 오프쇼어 개발자(또는다면 더 나은 그들이 원하는 가정에서 작동하).데 DVC 는 데 도움이 이러한 종류의 프로젝트이기 때문에 그것의 필요성을 제거한 신뢰할 수 있는 네트워크 연결 이후 모든 사람들이 자신의 repo.

...그리고 일부는 불리는 일반적으로 해결 방법:

  • 누가는 최신 revision? 에 CVCS,트렁크에는 보통 최신 개정판,하지만 그것은 DVC 되지 않을 수 있습 노골적으로 명백합니다.이 문제를 해결 규칙을 사용하여 행동하는 개발자는 프로젝트에서 와서는 계약에서는 리포트를 자신의 작업을 병합니다.

  • 비관적 잠금 장치,즉파일이 잠긴 경우 체크아웃,일반적으로 가능하지 않기 때문에 동시 일어날 수 있는 사소 DVC.이유는 파일 잠금 버전에 존재하는 통제하기 때문에 개발자가를 피하려고 병합 충돌이 발생합니다.그러나 잠그는 단점을 둔화의 발전으로 두 개발자는 작동할 수 없에서 동일한 조각의 코드를 동시에로와 긴 트랜잭션 모델과 그렇지 않은 완전한 증거에 대하여 보장 충돌.석 방법 버전에 관계없이 제어가 전투에 큰 충돌이 좋은 코드는 아키텍처(다음과 같은 낮은 커플링은 높은 응집)과 나누는 작업 작업 그래서 그들은 저에 미치는 영향에 코드(이 더 쉽다는 말).

  • 에서 독자적인 프로젝트는 것은 비참할 경우 전체 저장소된 공개적으로 사용 가능합니다.더욱 그렇다면 불만 또는 악성 프로그래머의 보류를 얻을 수 있다면에 복제된 저장소에 있습니다.소스 코드를 유출이 심한 통증에 대한 독자적인 기업입니다.DVC 로 이어지게 평 간단으로 해야 복제 저장소,일부 CM 시스템(예:클리어 케이스)시도를 제한하는 것을 액세스합니다.그러나 제 생각에 있는 경우,충분한 양의 의견을 더욱 쉽게 확인할 수 있게 회사의 문화가 없는 버전 제어 세계에서 당신을 도움이 될 것입에 대하여 소스 코드 누설입니다.

중 검색에 대한 권리 SCM,내가 찾은 다음과 같은 링크를 큰 도움이 될:

  1. 더 나은 SCM 이니셔티브:비.의 비교에 대해 26 버전 관리 시스템입니다.
  2. 교의 개정 제어 소프트웨어.위키 문서에서는 비교 약 38 버전 관리 시스템한 주제를 다루는 같은 기술적 차이,기능,사용자 인터페이스와 더 있습니다.
  3. 분산 버전 관리 시스템.또 다른 비지만 주로 초점을 맞추어 분산 시스템입니다.

어느 정도 두 개의 구조는 동일합니다.

  • 이 벤처 캐피탈할 수 있는 손쉽게 에뮬레이트 중 하나의 경우에 당신은 항상 밀어 변경 내용 일부를 지정된 업스트림 저장한 후에는 모든 지역이다.
  • 중앙 VCS 지 않을 것이 일반적으로 할 수 있을 에뮬레이트 분산 중 하나는 매우로 자연스럽게,하지만 당신이 뭔가를 얻을 수 있는 매우 유사하는 경우 다음과 같은 코드를 사용하면 quilt 습니다.Quilt 는 경우에,당신이 그것에 익숙하지 않은 도구를 관리하기 위한 대량의 패치에서 최고의 업스트림 프로젝트입니다.여기에서 아이디어는 DVC commit 명령을 구현을 생성하여 새로운 헝겊 조각,그리고 밀어 명령을 구현하여 투입하는 모든 뛰어난 패치를 중앙에서 관리 벤처 캐피탈과 그 폐기 패치 파일이 있습니다.이 소리는 조금 어색했지만,실제로 그것이 실제로 작동하려습니다.

는 말했다,거기에 몇 가지는 DVCSes 전통적으로 아주 잘하고있는 대부분의 중앙 VCSes 만들의 비트는 해쉬습니다.이들의 가장 중요한 것은 아마도 분기:a DVC 매연 저장소 또는 분기를 병합하는 더 이상 필요하지 않은 것이 추적 기록하는 동안 그렇게 할 수 있습니다.이 없는 특별한 이유가 왜 중앙집중식 계획 것이 문제이지만,역사적으로 아무도 보이 매우 그것을 얻었습니다.지 여부는 실제로 문제가 당신을 위해 방법에 따라 달라집 당신을 구성하는 개발,하지만 많은 사람들을 위해 그것은 중요한 고려 사항입니다.

기타 가정용의 DVCSes 는 그들은 오프라인으로 작동합니다.나는 결코 정말 많이 사용하는;나는 주로 개발 중에 office(그래서 저장소의 로컬 네트워크에서)또는 집에(있 ADSL).만약 당신이 많은 개발의 노트북에 여행하는 동안 그런 다음 이를 수 있습니다 더 고려한다.

가 있지 않은 실제로 매우 많은 개는 특정 DVCSes.거기에 약간 큰 사람들을 위한 추세를 조용한 이동할 수 있기 때문에,커밋 없이 밀고 그것을 쉽게 끝까지 닦는 것에서 개인이지만,그 외에도 우리가 없었어요 아주 많은 문제입니다.이 될 수 있기 때문에 우리가 많이 오픈 소스 개발자는 일반적으로 친숙한 패치-트레이드 모델의 개발,하지만 들어오는 폐쇄 소스 개발자는 또한 것을 선택하는 것을 합리적으로 신속.

록 벤처 캐피탈은 매력적인에서는 많은 방법으로,하지만 하나는 단점이 될 것이다 중요한 회사 내의 문제를 관리하는 비 mergable 파일(일반적으로 바이너리,예를 들어,Excel 문서).Subversion 거래 이 지원하여"svn:필-lock"속성을 의미하는,당신이 얻어야 하는 잠금 위한 비 mergable 하기 전에 파일을 편집할 수 있습니다.그것은 잘 작동합니다.하지만 작업 흐름 필요한 중앙 집중식 저장소 모델에 반대하는 DVC 개념입니다.

그래서 만약 당신이 사용하고 싶은 DVC,그것은 정말 적절한 관리를 위한 파일에 있는 비 mergable.

내가 사용하고 파괴를 지고 나는 정말 행복했습니다.

다음 GIT 버즈를 시작했고 그냥 나를 테스트합니다.그리고 나를 위해,주요 판매점 분기.Oh boy.지금 가지고 있으나,더 이상 필요하지 않을 저장소 돌아가 몇 가지 버전 또는 모든 어리석은 것을 내가 사용하여 파괴.모든 것이에서 저렴한 dvc.나만했는 화석 및 git 지만,그러나 내가 사용한 억지로,약력과 전복과 같은 dvc 모두 정말 저렴 분기를 알려줍니다.더 이상 필요 없을 사본에 모든 코드를 하나의 측면을 따라서 병합은 그냥 바람이다.

어떤 dvc 설정할 수 있습니다 중앙 서버,하지만 당신은 무엇을 얻는 다른 것들 중 하나입니다

체크 인 할 수 있습은 어떤 작은 변화가 당신 같은 리누스는 말을 사용해야 하는 경우에는 하나 이상의 문장이 무엇을 설명하는 당신은 단지 않았다,당신은 너무 많은 일을.할 수 있는 방법이 있다 코드,지점,병합,복제 테스트는 모든하지 않고 로컬로 일으키는 사람을 엄청난 양의 데이터를 다운로드.당신은 밀어 필요한 최종 변경을 중앙 서버입니다.

과 함께 일할 수 있습니다.

그래서 짧은 버전을 사용하고 제어가 항상 좋은 일입니다.사용 dvc 저렴(에 KB 과 대역폭),그리고 나는 생각하는 것이 더 재미있게 사용할 수 있습니다.

체크 아웃 진행하고 있습니다. http://git-scm.com/
체크 아웃 화석: http://www.fossil-scm.org
체크 아웃 Mercurial: https://www.mercurial-scm.org

지금,나는 추천 dvc 시스템,그리고 당신은 쉽게 사용할 수 있는 중앙 서버

주요 문제는(옆에서 명백한 대역폭 문제)가 소유권.

는지 확인하는 다른(지역)사이트에서 작동하지 않 같은 요소로 다른 것보다.

이상적으로,도구는 할당할 수 있게 소유권을 파일에 지점이나도 있습니다.

대답하의 의견이 대답,당신이 정말로 원하는 툴을 위해 당신에게 무엇을 소유하고,고 다음 교통(전화를 통해,IM 또는 메일)를 먼 사이트입니다.
지 않은 경우에는 소유 메커니즘...당신은"소통"하지만,너무 늦)(예::이 완료 후 동시 발달에 있는 동일한 설정파일에서 동일 지점에 있습니다.커밋을 얻을 수 있습저)

나를 위해 이것은 다른 토론에 대해 개인의 취향과 그것은 오히려 어려운 것이 정말로 목표입니다.나 개인적으로아보세요 Mercurial 다른 DVC.글쓰기를 좋아하 후크에서 동일 언어로 Mercurial 쓰고 작은 네트워크 오버헤드-단지 몇몇 말을 내 자신의 이유입니다.

모두가 이 일은 시류에 대한 방법 DVCSs 우수하지만,크레이그의 의견이 중요합니다.에 DVC,각 사람의 전체 역사 지점에 있습니다.으로 작업하는 경우 많은 바이너리 파일(예를 들어,이미지 파일이나 FLAs)이 필요로 거대한 양의 공간과할 수 없습니다 하 diff.

나는 느낌이에는 의욕(및 다른 DVC)은 더 정교한 것보다 중앙에서 관리되는 것들입니다.예를 들어,병합하는 지점에서 Mercurial 유지의 전체 역사 지면에서 SVN 을 지점 디렉토리의 역사를 참조하십시오.

다른 플러스 등 SCM 에서도 솔로 개발 시나리오는 경우에,당신의 많은처럼 거기에 우리가 하나 이상의 기계에 당신은 작품이다.

말할 수 있는 설정의 일반적인 스크립트가 있습니다.는 경우에는 각 컴퓨터 작동에 복제할 수 있습 수요에 업데이트와 변경 스크립트가 있습니다.그것은 당신을 제공합니다:

  1. 시간 절약,특히 ssh keys
  2. 는 방법을 지점 사이의 차이 다른 시스템(예:Red Hat 대 데비안,BSD 대 Linux,etc.)

W.크레이그 거래자의 응답을 요약 그것의 대부분은,그러나 저는 개인적인 작업 스타일은 엄청난 차이뿐만 아니라.어디에 저는 현재 우리가 사용하는 파괴로 우리의 진정한 원본은,그러나,많은 개발자가 사용하는 git-svn 에 자신의 개인 컴퓨터 보상을 위한 워크플로 문제는 우리는(실패의 관리,그러나 그것은 또 다른 이야기입니다).어떤 경우에도 빠지지 않았습니다.정말 균형에 대한 기능 집합을 가장 생산적이 무엇으로 조직의 요구(중앙 집중식 인증,예를 들어).

중앙 집중식 시스템지 않는 반드시 사용하지 못하도록 별도의 지점을 개발한다.을 필요가 없다는 단일의 진정 등본 코드 베이스,오히려 다른 개발자 또는 팀들 수 있는 여러 가지 유산을 가지 존재할 수 있습 등등.

그것이 무엇을 일반적으로 의미하는 저장소를 관리하고 있습니다-하지만이 일반적으로 이점을 가진 회사에서 능력 그것은 부서 그것이 의미하기 때문에 단 하나의 장소를 백업하고 한 장소에 저장소를 관리할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top