2012-08-23 2 views
2

Mercurial 저장소 (Redmine 저장소라고 함)가있는 전용 이슈 추적 (Redmine) 시스템이 있습니다. Redmine은 해당 저장소를 사용하도록 설정되어 있으며 이해하는 한 Redmine은 해당 저장소를 변경하지 않습니다. 모든 개발자 (결국)는 변경 사항을 해당 저장소로 푸시합니다.두 개의 Mercurial 설치를 위해 하나의 Mercurial 저장소 사용하기

우리는 코드를 실행할 수있는 전용 생산 기계를 가지고 있지만 코드를 변경하는 데는 사용되지 않습니다.

  1. 는 생산 시스템의 또 다른 의욕 저장소 (호출 "생산 저장소") 설정 :

    우리는 두 가지 선택이있다. 새 프로덕션 릴리스가 승인되면 Redmine 저장소에서 프로덕션 저장소로 변경 사항을 가져온 다음 로컬 작업 디렉토리를 프로덕션 저장소의 해당 개정판으로 업데이트하십시오.

  2. 생산 시스템에서 기존 Redmine 저장소를 재사용하여 여기에 Mercurial 설치를위한 로컬 저장소를 지정하십시오 (Redmine 저장소는 프로덕션 시스템에 쉽게 마운트 할 수있는 공유 드라이브에 있음). 새로운 제품이 승인 될 때마다 Redmine 저장소의 해당 개정판으로 로컬 작업 디렉토리를 업데이트하십시오.

옵션 2를 사용하면 Redmine 저장소에서 프로덕션 저장소로 단계를 없애고 프로세스를 약간 단순화합니다. 그러나 하나의 저장소가 두 개의 Mercurial 설치에서 로컬 인 것처럼 사용하는 것이 괜찮습니까?

이 선택에 대한 의견 (또는이 설정의 다른 측면)은 높이 평가됩니다.

답변

4

아주 좋은 생각 같습니다. Mercurial은 저장소에 대한 읽기 및 쓰기 작업을 아주 효율적으로 수행하지만 저장소가 공유 드라이브에있을 때 (심지어 저장소를 하나만 사용하는 경우에도) 어렵습니다. 특히 네트워크 공유 (특히 Windows에서) 항상 자신이하는 말을 원자 적으로 만드는 것은 아닙니다.

가능한 경우 리포지토리 (작업 디렉토리와 리포지토리)가 모두 로컬이고, 푸시/풀을 사용하여 네트워크 공유에 /에서 네트워크 변경 집합을 가져 오는 것이 좋습니다. 그럴 수 없다면 원격 파일 시스템에서 repo를 사용하는 단일 로컬 응용 프로그램을 사용하는 것이 가장 좋습니다.

동일한 기본 저장소를 사용하는 두 개의 클론을 사용하려는 경우 Mercurial과 함께 제공되는 고급 사용자 용 ShareExtension을 확인하십시오. 대신에 피기 백에 노력

, 왜 당신의 레드 마인 저장소에이 같은 후크를 넣지 :

[hooks] 
changegroup = hg push //production/clone 

를 자동으로 생산에 레드 마인에 도착 체인지를 밀어 것이다.

+0

정말 대단합니다. 정말 고마워요. – max

+0

로컬 저장소를 사용하는 것이 좋음에 동의하지만, 현저한 네트워크 공유 버그는 알지 못합니다. 그래서 "더 힘든 시간"과 같은 애매한 표현을 쓸 때 나는 그것을 좋아하지 않습니다. 예. 네트워크 공유에있는 파일의 하드 링크 수와 관련하여 과거에는 버그가 있었지만 해결되었습니다. 또한 서버에 여러 개의 복제본이있는 경우에만 적용됩니다. 여기서는 그렇지 않습니다. –

+0

나는 Mercurial + SMB/CIFS 세계를 추적하지는 못했지만, 모든 울부 짖는 소리와 내가 치아를 볼 ​​때 사용했던 것을 기반으로 몇 년 동안 질책을 계속 할 것입니다. :) –

관련 문제