2009-09-04 4 views
7

저는 오랫동안 서있는 문제가 있습니다. 직장에서는 수은을 DSCM으로 사용하고 있지만 구성 파일을 동기화하는 방법을 알 수는 없습니다.Mercurial 워크 플로 관련 질문 (구성 파일을 처리하는 방법)

문제는 구성 파일을 추적하고 개발자간에 구성 파일 내용을 교환 할 수 있기를 원하지만 모든 개발자는 자신의 connectionStrings 섹션을 다른 사람과 독립적으로 유지하려고합니다.

어떻게 든 구성 파일을 추적 할 수 있지만 당기거나 밀 때 연결 문자열 섹션을 생략 할 수 있습니까?

.hgignore에 설정 파일을 추가하려고했지만 누군가가 설정 파일에 중요한 것을 추가하면 이메일로 공유해야합니다.

감사합니다.

답변

6

사용자 지정 설정을 포함하여 처리 할 수없는 경우 repo에 기본 구성 파일이 있습니다.

그런 다음 각 개발자가 자신의 맞춤 설정을 맨 위에 놓게하십시오 (mq 사용). 사용자 정의가 너무 관입 적이 지 않으면 병합이 항상 잘됩니다. 당신이 병합 분기를 밀어하지 기억할 필요가 밀어 때 반복적으로 다음 사용자 정의를 병합,하지만 다른 방법이있다

t1-t2-t3-t4-...-tN 
    \ \  \ \ 
    c1---c2-----c3--c4 

dev에 요구 (tXc1는 사용자 정의이며, 메인 라인입니다) tX 만 부모로 갖는 변경 사항을 푸시하면 cX 명이 절대 레고를 벗어나서는 안됩니다.

1

DVCS가 아닌 방법은 별도의 구성 파일에서 연결 문자열을 읽고 빌드 프로세스 중에 미리 처리하도록 빌드 프로세스를 설정하는 것입니다 (Java에서는 ant에서 또는 maven을 사용하여 속성에서 필터링 할 수 있음). 파일, 나는 MS 토지에 대해 모른다.)

4

설정 파일의 세부 사항을 모르지만 다른 파일을 포함 할 수 있다면 개발자 전용 설정을 유지하기 위해 config_local 파일을 만드십시오. 이 파일을 .hgignore에 추가하십시오. 공통 설정은 기본 설정 파일에 저장되며 여기에는 config_local 파일이 포함됩니다.

Ken이 말한 것처럼, 포함이 옵션이 아니라면 빌드 단계 중 사전 처리가 필요할 수 있습니다.

3

Mercurial Queues을 사용하면됩니다. 그래서 당신이 할 일은 실제 이름을 가진 hg 아래에 "진짜"config를 가지고 있고, 개발자는 위에 앉아서 mq로 유지 관리되는 패치를 사용하여 사용자 정의를 유지할 수 있습니다.

개발자가 실제 구성을 업데이트해야하는 경우 스택에서 모든 사용자 지정 내용을 보유한 패치가 나옵니다. 구성을 변경하고 커밋 + 밀어 넣기.

다른 모든 개발자가 자신의 대기열에있는 특정 변경 사항을 덮어 쓰지 않았다고 가정하면 다음에 + 업데이트를 가져올 때 해당 변경 사항을받습니다.

0

다소 약화되었지만 KeywordExtension을 사용하면 토큰을 자동으로 확장 할 수 있습니다. 설정 파일에 다음과 같이 입력하십시오 :

db.host = $DBHOST$ 
db.host = $DBUSER$ 
db.host = $DBPASS$ 

그런 다음 ~ /.hgrc 파일 사용자는 다음과 같을 것입니다.

[extensions] 
hgext.keyword= 
[keyword] 
# expand keywords in all python files in working dir 
**.conf = 
[keywordmaps] 
DBHOST = dev.server.internal 
DBUSER = myname 
DBPASS = mypass 

생산 과정에는 물론 .hgrc가 있습니다.

이 계획은 모든 사람에게 한 번만 설정해야하지만 그 이후에는 자동으로 수행해야합니다. 사용자가 자신의 개인 연결 문자열을 설정하지 않으려는 경우 기본값은 시스템별로/etc/mercurial/hgrc 파일에있을 수 있습니다.

1

다른 파일에 연결 문자열을 넣으십시오. 예 : Web.config의에서 :

<connectionStrings configSource="connections.config" /> 

그런 다음 당신은 당신이하여 각 개발자가 자신의 마음의 콘텐츠를 수정시키는 저장소에서 제외 할 수있는 연결 문자열을 가진 connections.config 파일이 있습니다.

connections.config 파일의 '참조'버전을 원하면 소스 제어에있는 다른 파일 connections.example.config을 추가하고이를 템플릿 버전으로 사용하십시오.

관련 문제