2010-06-03 5 views
24

오늘이 점에 대해 혼란스러워했습니다.Mercurial을 사용하여 리포지토리를 원격 서버/저장소에 복제하는 방법

빈 저장소를 로컬로 (hg init) 만들고, 작업 복사본에 복제하고, 일부 코드를 추가하고, 커밋하고 그것을 밀어 넣습니다 (분명히 로컬 repo로 푸시).

이제 다른 사람들과 저장소를 공유해야합니다. 거기에 수은을 포함하는 서버가 있는데, 다른 개발자가 원격 저장소에 액세스하여 코드를 끌어 올 수 있도록 원격 저장소에 저장소를 복제하려면 어떻게해야합니까?

답변

36

당신은 웹 인터페이스 및 액세스 제어에 얻을 수있는 publishing repositories 위키 페이지를 체크 아웃 할 것이다, 그러나 가장 기본적인의에서이 같은 작업을 수행 할 수 있습니다

A에 대한 지역의 repo를 복제합니다
hg clone yourlocalrepo ssh://[email protected]//home/you/repo 

당신이 선택한 원격 위치. 해당 URL에는 두 개의 이중 슬래시가 있습니다.

http : // 전용 ssh : // 만 사용하여 원격 저장소를 만들 수는 없습니다. hgweb.cgi에 http가 있으면 hg init을 사용하여 서버에서 빈 저장소를 만든 다음 hg로 밀어 넣을 수 있습니다.

+0

멋지고,하지만 어떻게 다른 사람들이 그것을 복제합니까? –

+0

그들은 homedir에서 읽을 수있는 경우 ssh : // you @ server // home/you/repo에서 복제 할 수 있습니다. 당신이 괜찮지 않다면 당신은 읽고 쓸 수있는 영역을 설정할 수 있습니다. –

7

"공식적인"리포지토리가 HTTP 서버에 의해 제공되고 로컬 시스템의 리포 (repo)를 기반으로 중앙 위치에 리포를 만들려는 경우, 여기 하나의 방법이 있습니다. 중앙 서버에서이 작업을 수행하려면 관리자 권한이 필요합니다.

Windows에서 개발 중이며 중앙 저장소는 리눅스에서 실행 중이며 the official guide에 lighttpd가 있습니다. 서버의 중앙 repo 디렉토리는 사용자/그룹 www-data이 소유 한 /var/hg/repos/입니다. 내 로컬 컴퓨터의 IP는 10.1.10.100이고 복제하려는 저장소의 이름은 foo입니다.

  1. 로컬 컴퓨터에서 명령 프롬프트를 리포지토리 디렉터리로 열고 hg serve을 입력하십시오. 이렇게하면 로컬 hg 웹 서버가 실행되어 서버가 서버를 가져올 수 있습니다.
  2. ssh를 중앙 repo 서버에 넣고 www-data에 sudo 권한이있는 사용자로 로그인하십시오.
  3. cd /var/hg/repos
  4. sudo -u www-data hg clone http://10.1.10.100 foo
  5. 나중에 와서 REPOS 호스트 구축 된 서버에 변경 사항을 밀어 SSH의 번거 로움에 대해 걱정하지 않는 사람들을 위해
+0

요즘의 일반적인 기술을 문서화하는 데 +1 ... 나는 평범한 기술에 질려서, 허가 된 호스트로부터 hg clone 명령을 수행하기 위해 파이썬에 cgi (웹 페이지)를 작성할 계획입니다. –

4

, 당신은 단지 서버에서 init을 할 수 있습니다, 그리고 나서 다른 모든 repo와 마찬가지로 밀어 넣으십시오.

# on server: 
cd repos/ 
mkdir myrepo 
cd myrepo 
hg init 
cd .. 
chown -R apache:apache myrepo 

cd .. 
vim hgweb.config 

# change [paths] 
[paths] 
myrepo = /path/to/myrepo 



# on your machine 

# make sure you've configured hgrc correctly 
[paths] 
default = http://server/hg/repos/myrepo 

hg push 

# ??? 

# profit 
+0

cgi 도우미 웹 페이지로 전환하는 것도 좋지 않습니다. 먼저 서버에서 작성하고 빈 복제본을 복제하면 중앙 집중식 워크 플로우가 설정됩니다. –

관련 문제