대규모 수은 저장소는“푸시 경쟁”으로 고통 받고 있습니까?


9

프로그래머에 대한 몇 가지 질문에 대한 몇 가지 "DVCS가 더 좋은 이유"에 대한 답변을 읽으십시오 .SE는 모두 큰 프로젝트, IE 커밋에서 오래된 커밋 경쟁이 없기 때문에 일반적으로 DVCS가 더 좋다고 말합니다. 업데이트, 커밋, 오래된 날짜, 커밋, 여전히 오래된 날짜 등

DVCS는이를 푸시 개념으로 제한합니다. 그러나 매우 큰 프로젝트에서, 특히 하루가 끝날 때 "푸시 경주"가 없을까요? 나는 힘내에서 이것은 모든 것에 대한 끊임없는 분기로 약간 수정되지만 Mercurial에서는 분기하지 않고 새 머리를 만듭니다.

내가 본 문제

  1. 사용자가 푸시를 시도합니다
  2. 구식 (지역 리포지토리가 구식 인 경우 수은으로 밀 수 없음)로 인해 로컬 변경 사항을 가져와 병합합니다.
  3. 사용자가 다시 푸시를 시도하지만 다른 누군가를 병합하는 동안 다시 만료되었습니다.
  4. 당기고 다시 합치기
  5. 아직 구식입니다
  6. 반복

익숙한 소리?

이것은 매우 크고 인기있는 수은 저장소에 실제 문제입니까? 모두가 오늘의 최종 추진을 할 때 회사 내부는 어떻습니까?


누가 수은으로 분기하지 않습니까? hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
카슨 마이어스

자식 카톤에서 @ 카슨은 저렴합니다. 수은에서는 훨씬 영구적입니다. 일반적으로 git에서는 기능에 대해 작업하기 위해 분기하고, 수은에서는 새로운 헤드를 만들거나 다른 디렉토리에 복제합니다.
TheLQ

--close-branch커밋 할 때를 추가 할 수 있습니다 .-머큐리얼은 브랜치라는 이름을 지니고 있습니다. 새로운 디렉토리로 복제 할 필요가 없습니다
Carson Myers

@Carson 나는 당신이 할 수 없거나 불가능하다는 것을 말하는 것이 아닙니다. 나는 단지 컨벤션이 브랜치가 아닌 새로운 헤드를 복제하거나 만드는 것이라고 항상 들었습니다. 내가 본 대부분의 수은 저장소는 지점이 거의 없지만 자식 저장소는 다발을 가지고있다
TheLQ

확실하지 않습니다, 나는 결코 git을 사용하지 않았습니다
Carson Myers

답변:


8

DVCS를 사용하는 대부분의 대규모 오픈 소스 프로젝트는 푸시 대신 "풀 요청"을 사용합니다. 즉, 사용자가 프로젝트를 지점에서 가져 오도록 요청하면 프 젝트는 이러한 풀 요청을 어떤 순서로든 수행하도록 선택할 수 있습니다 라면 이렇게하면 이름을 정한대로 "푸시 레이스"가 필요하지 않습니다.

다른 회사에서는 프로세스를 보증 할 수 없지만 근무하는 곳은 문제가되지 않습니다.

사례에 대해 작업 할 때는 전체 리포지토리의 분기에서 작업하므로 푸시 요청이 기본 트렁크의 원격 버전으로 이동합니다. (완료된) 변경 사항을 트렁크에 통합하려면 트렁크를로드하고 당깁니다.

때때로 ( 아주 가끔) 두 사람이 시도하고 (때문에 일부 오해에 보통) 동시에이 작업을 수행 할 것입니다. 이 경우 "잃어버린"사람은 다시 잡아 당기고 병합하고 밀어야합니다. 중앙 저장소에 커밋하려는 오후 5시 서두가 없기 때문에 설명 한 문제가 실제로는 아닙니다.

이것이 DVCS의 장점입니다. 분기는 고통스럽지 않으므로 모든 사람이 자신의 분기에서 작업 할 수 있습니다.

편집하다

오, 방금 "수은에서 분기하지 않습니다 ..."라는 의견을 보았습니다 : 그렇습니다. 그럴 필요는 없지만 그렇게하기 쉽고 그렇게하는 것의 이점이 그렇게하지 않는 것보다 중요하기 때문에, 당신은 단지 repos를 많이 분기하는 경향이 있습니다.


나는 항상 당신이 브랜치가 아닌 실험적인 기능을 위해 복제한다고 들었습니다. 내가 들었던 대부분의 이유는 수은 지점에서 Git보다 훨씬 영구적이기 때문입니다. 그러나 나는 틀릴 수있다
TheLQ

그것이 수은에 관한 한 복제품 가지에 관한 한 표준 "머리"(그리고 더 많은 것들!)로 할 수있는 거의 모든 일을 할 수는 있지만 풀 / 트렁크로부터의 거리를 밀어냅니다. 영구성에 대해 당신이 무엇을 의미하는지 잘 모르겠습니다. 복제 작업을 마친 후에는 삭제할 수 있습니다.
Ed James

오후 5시 푸시 러쉬가없는 이유는 무엇입니까?
Cem Catikkas

내가 말했듯이, 대부분의 사람들은 자신의 지점에서 일하고 있습니다 (다른 사람과 정확히 같은 문제로 일할 가능성이 거의 없습니다). 게다가, 나의 작업에서 우리는 플렉스 타임을 갖기 때문에 오후 4시에서 6시 사이에 서두르고;)
Ed James

1

아니요, 토픽 브랜치에서 작업이 완료되었으므로 푸시 경쟁이 없습니다 . 병합 마스터는 분기를 통합 분기 로 결합하는 (상대적으로 낮은) 복잡성을 관리합니다 . 이것은 일반적으로 지속적으로 수행됩니다. 분산 버전 제어 워크 플로우에 대한 추가 정보를 들어, 첫 번째 소스는 말의 입 같습니다 man gitworkflows, 온라인 여기 . Mercurial 워크 플로우 귀하의 주장에도 불구하고 분기를 사용하며 기술은 유사합니다.


OP는 git과 hg를 구별하고 있지만 귀하의 답변은 git을 목표로합니다 (예 : 첫 번째 링크는 매우 git-oriented). 정답 (hg에서 분기에 대한 OP의 원래 오해가 질문 자체로 이어짐)이지만 hg와 동일하다는 점은 주목할 가치가 있습니다.
Ed James

@Ed Good point, 답변이 git과 mercurial 모두에 적용됨을 명확히하기 위해 업데이트되었습니다.
라인 Henrichs

git.git 저장소를 참조하십시오. DVCS를 사용하여 병합하는 좋은 예입니다. 많은 병합 지점이 있습니다. 최종 분기로 병합되기 전에 동시에 10 개 이상의 임시 분기가있을 수 있습니다.
linquize
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.