2010-06-19 2 views
1

MacBook을 사용하면 하드 드라이브가 길어지고 문제가 발생하면 3 일간의 코드가 손실 될 수 있습니다.Mercurial을 사용하면 신속하게 tmp 저장소에 백업 할 수 있습니까?

그래서 저는 주 서버 컴퓨터에 실제로 tmp 저장소를 가지고 있고 그것에 hg push 수 있습니다. 딜레마는 내가 먼저 커밋하지 않는 한 푸시 할 수 없다. 이전 경험에서 우리는 중앙 서버 (동료와 코드를 공유, 병합 등)를 수행 할 준비가되지 않으면 커밋하지 않아야한다 (이유는, 우리는 선택된 파일을 푸시 할 수 없습니다. 커밋 된 모든 파일을 푸시하거나 아무 것도 누르지 않아야합니다. 어떻게 이것을 해결할 수 있을까요?

"모든 수정 된 파일 (및 추가 된 파일)을 중앙 서버의/user/peter/2010-06-18에 복사 하시겠습니까?") 또는 커밋되지 않지만 어떻게 든 서버에 가져올 수 있습니까?

답변

4

일반적인 방법은 커밋하는 것입니다. DVCS에서는 "일찍 커밋하고 자주 커밋"해야한다고 촉구됩니다. 로컬에서 자주 커밋 한 다음 백업용으로 자주 서버에서 tmp repo로 푸시합니다. 작업에 만족하면 tmp repo에서 공유 "중앙"서버로 푸시합니다.

각 변경 집합 후에 모든 것이 컴파일되도록 할 필요는 없으며, 변경 사항 집합의 각 뒤쪽이 '팁'을 컴파일 가능한 상태로 남겨 두는 것이 표준입니다. 일반적으로 하나의 변경 집합 (변경 그룹)이 도착한 후에 빌드를 시작하기 위해 연속 통합 빌드 서버를 트리거하고 '팁'만 고려합니다.

진정으로 스스로 변할 수없는 변경 세트가 없다면, 수은 프로는 mercurial queues을 사용하여 버전 화 된 패치를 작업 할 때 별도의 대기열 저장소로 푸시 (push) 할 수 있습니다. 불을 가지고 놀고 자하는 누군가는 축소판 확장을 사용하여 공유 저장소에 푸시하기 전에 변경 집합의 시퀀스를 단일 변경 집합으로 병합합니다. 세 가지 옵션의

제시 : 중앙 REPO가 컴파일되지 않는 변경 집합을 처리 할 수 ​​있도록 그들이

  • 사용 수은을 한 데 모은 changegroup의 일부있는 한
    1. 너무 오래, 워크 플로우를 수정 큐는

  • 는 내가 처음이 가장 일반적으로 이루어집니다 생각하고, g (불장난)의 역사를 다시 쓰는 붕괴 확장을 사용하여 버전 관리 패치 저장소에 패치를 유지 enerally "올바른"방법.

    +0

    아,하지만 5 개의 파일을 모두 커밋하고 나중에 중앙 서버에 푸시 할 준비가되면 3 개의 파일 만 푸시하고 다른 2 개의 파일을 푸시하고 싶다면 푸시하지 않으시겠습니까? –

    +0

    5 개의 파일이 관련되어 있으면 모든 준비가 완료 될 때까지 중앙 서버로 밀어 넣지 마십시오. 서로 관련이 없다면, 당신은 그 중 세개 만,'hg update -r -2' (하나의 changeset으로 돌아 간다)를하고 나서 다른 두 개를 커밋해야합니다. 이제 그들은 http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/에 따라 부모가 익명 인 가지들을 사용하여 다른 형제 체인지 세트를 만들었습니다. 'push -r'을 사용하여 하나의 cset을 다른 하나없이 push 할 수 있습니다. 자주 커밋하십시오. 자주 커밋하십시오, 자주 분기하십시오. –