2012-12-08 15 views
2

우리는 일에 힘을 쏟습니다. 그리고 그것에 관한 한 가지 사실은 실제로 워크 플로우에서 꽤 잘 작동하는 것으로 보입니다.PERCS와 같은 "보류중인 변경 세트"가있는 DRCS (git, bzr, merc)?

새로운 보류중인 변경 집합을 만들고, 변경 사항을 할당하고, jira 티켓을 할당하는 등의 작업을 할 수 있습니다. 파일을 보류하고 다른 변경 집합에서 다른 변경 작업을 수행 할 수 있습니다. 그런 다음 체크 인 시간이되면 단순히 변경 집합 ID를 제공하여 변경 사항을 적용 할 수 있습니다.

주요 분산 개정 관리 시스템 중 어떤 것도 이와 같은 기능을 제공합니까? 나는 대부분 shelving의 변종을 제안하고 있지만, 보류중인 changesets을 보았는가?

편집 - 예 명확히 :

내가 파일 A-Z와 프로젝트가 있습니다. 내가하는 소스 변경 사항을 변경하기 바로 전에 업데이트를 수행합니다. 채택 할 준비가되지 않은 변경이 이루어 졌기 때문에 A와 B를 수정하여 해킹을 만들었습니다. 그런 다음 C, D 및 E 파일을 변경합니다.

확인하고 싶습니다. 후자의 3 개와 나는 내가 응답하고있는 jira 표를 붙이고 싶다. p4v에서는 새로운 "보류중인 변경 집합"을 만들고 티켓 번호와 함께 원하는 파일을 선택하는 것처럼 간단합니다. 그런 다음 보류중인 변경 집합을 커밋합니다. 그러면 다음 실행을 위해 해킹을 계속하거나 되돌릴 수 있습니다.

+0

이것은 하나 또는 여러 개의 커밋을 만든 다음 분기를 병합하고 마지막으로 닫거나 삭제할 수있는 새로운 분기를 만들어 대부분의 시스템에서 수행 할 수있는 것과 매우 비슷합니다. 병합 될 때까지, 메인 브랜치는 커밋의 영향을받지 않지만, 해당 브랜치/커밋을 특별히 아는 사람이라면 누구나 사용할 수 있습니다. 그것이 당신이 의미하는 바가 아니라면 그 차이를 설명해 주시겠습니까? – hvd

+0

하나의 큰 차이점은 다른 파일 변경 사항을 같은 "작업 영역"내의 다른 보류중인 변경 집합에 넣을 수 있다는 것입니다 ... 개인 분기와 동등한 것이 무엇입니까? 즉, a.cpp, b.cpp 및 c.cpp 파일을 변경할 수 있습니다. 나는 하나의 체인지 세트에 a와 b를 넣을 수 있고, 다른 하나는 다른 체인지 티켓을 달고, 별도로 제출할 수있다. 3 가지 브랜치를 사용하여 같은 일을 할 수있는 방법이있을 수는 있지만 쉽게 들리지는 않습니다. 게다가 당신은 그 일을 미리해야 할 것입니다. 나는 변화가 일어난 후에 그것을 할 수 있습니다. –

답변

8

Mercurial에는 이와 비슷한 두 가지 기능이 있습니다. 첫 번째 및 이전 하나는 Mercurial Queues이며 Quilt을 기반으로하지만 Mercurial에 통합되어 있습니다. 그 책 장은 읽을만한 가치가 있지만, 기본적으로 푸시, 팝, 편집 할 수있는 일련의 중첩 된 변경 집합을 가질 수 있습니다. 그들은 shelve (git 또는 Mercurial 's)와는 다른 점이 있는데, 이는 밀거나 당길 수 있고 실제로 별도의 큐 특정 repo에서 버전 제어 될 수 있습니다.

두 번째로 새로운 기능은 Phases 기능입니다. public,, 또는 secret 일 수있는 각 변경 집합의 단계를 추적합니다. 위키 페이지에는 자세한 내용이 있지만 기본적으로 public은 다른 repo에 푸시 한 항목입니다. draft은 아직 푸시하지 않은 항목이므로 사람들의 기록을 깨뜨리지 않아도 걱정할 필요가 없습니다. privatehg push 때 밀리지 않을 것입니다. histeditcommit --amend과 함께 단계를 사용할 수 있으며 Mercurial 대기열을 사용하면 변경 세트가 만족 스러울 때까지 컴퓨터를 떠나지 않도록 할 수 있습니다.

+0

단계가 게임에서 벗어났습니다. 변경 세트는 변경 불가능합니다. MQ rocks –

+0

현재 적용 가능하지는 않지만, Mercurial changeset evolution (단계 이상)에 대한 지속적인 작업에 대한 언급이 유용 할 수 있습니다. http://mercurial.selenic.com/wiki/ChangesetEvolution – davidmc24

1

힘내는 비슷한 stashes의 개념을 가지고 있습니다. 당신은 그 안에 무엇이 들어 있는지에 대한 설명과 함께 여러 개의 은닉을 가질 수 있습니다. 주된 차이점은 Pash의 보류중인 변경 목록이 서버에있는 동안 은닉이 로컬이라는 것입니다. 다른 사람이 귀하의 대기중인 변경 목록을보아야하는 경우 이는 중요 할 수 있습니다.

+0

나는 git 숨김이 p4 쉘프와 같다고 믿는다. 선반에 변경 사항을 저장하고 복귀 지점으로 계속 작업하거나 트렁크로 돌아가 다른 작업을 수행 할 수 있습니다. p4 shelves는 생성 된 changeset와 만 연관 될 수 있으며 보류중인 changeset마다 다른 shelf가 있습니다. –

1

힘내도 색인의 개념을 가지고있다. 색인에 파일을 추가 할 수 있으며 기본적으로 색인에있는 파일 만 커미트합니다. 많은 파일을 수정하고 일부 파일을 색인에 넣고 다른 파일을 작업 영역에 남겨 둘 수 있습니다. 하나의 파일을 수정하여 인덱스에 대기시키고 작업 공간에서 동일한 파일에 다른 수정을 가할 수도 있습니다.

+0

... 단 하나의 색인 만 있습니다. 당신은 (내가 아는 한) 별도로 추가 할 수있는 여러 누적 인덱스를 가질 수 없습니다. 이 방법으로 색인을 사용하려고하면 해당 값이됩니다. –

+0

참. 원래 질문에서 여러 개의 체인지 셋을 대기시키고 자하는 것을 보지 못했습니다. git에서 그렇게하고 싶다면 @khagler가 제안한대로 은닉을 사용할 수 있습니다. –