2011-03-31 5 views
0

개인용으로 여러 개의 저장소가 있으며이를 주 서버에 백업합니다. 상당수가 있으며 모든 단일 저장소에서 풀 작업을 수행하는 데 꽤 많은 시간이 걸립니다.Mercurial 일괄 처리 작업

수은이 여러 저장소의 일괄 처리를 지원합니까? 그렇다면 어떻게해야합니까? 그렇지 않다면 상대적으로 간단한 해결책이 있습니까?

저는 Windows를 사용하고 TortoiseHg를 사용합니다 (그러나 명령 줄 사용에는 문제가 없습니다).

답변

2

리포지토리가 정적 인 경우 간단한 솔루션은 모든 리포지토리에서 끌어 오기위한 배치 파일을 작성하는 것입니다. 그러나 아니, 수은은 이것을 직접적으로지지하지 않습니다.

0

왜 마스터 서버에서 hook을 사용하여 슬레이브 서버에 푸시하지 마시겠습니까? 프로젝트의 hgrc이 추가 :

[hooks] 
changegroup = hg push -f https://hg.server2.com/TheRepo 

FYI에 대한 changegrouphgrc 도움말 파일 :

changegroup하십시오 changegroup 후 실행을 잡아 당기거나 풀기, 푸시를 통해 추가되었습니다. 의 첫 번째 새 변경 집합 ID는 $ HG_NODE에 있습니다. 변경된 URL은 $ HG_URL입니다.

따라서 변경 그룹이 서버에 들어 오면 다른 서버로 변경됩니다. hg push

0

나는 모든 배치 파일을 포함하는 최상위 저장소와 모든 저장소가있는 텍스트 파일을 가지고 있습니다.

즉 repolist.txt

Repo1 
# Comment 
Folder\Repo2 
Repo3 

과 같은 배치 파일 hgrpull.bat 보이는 : 나는 모든 저장소에 대한 작업을 수행하기 위해 일부 배치 파일을 가지고

REM First pull top level repository to get updated repolist etc 
hg pull --update --quiet 

REM Find path to server repository 
FOR /F %%x IN ('hg showconfig paths.default') DO SET HGSERVER=%%x 

REM Now pull or clone each repository 
FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
    If EXIST "%%x\.hg" (
     ECHO Pull %%x 
     hg pull --update --quiet --repository "%%x" 
    ) ELSE (
     ECHO Clone %%x 
     IF NOT EXIST "%%x" MKDIR "%%x" 
     hg clone --pull "%HGSERVER%\%%x" "%%x" 
    ) 
) 

. (상태/수신/발신 등). hgr st -mard

: 모든 저장소에 hgrpull

확인 상태 :

FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
    ECHO ** %%x 
    hg %1 --repository "%%x" %2 %3 %4 %5 %6 
) 

풀/클론 모든 저장소 : 그들은 모두 다음 hgr.bat을 기반으로