2012-05-30 3 views
1

여기 상황이 있습니다. 서버 A에 원격 자식 저장소가 있습니다. 또한이 저장소의 동일한 소스 코드로 데스크탑 B에서 작업해야합니다. 서버 A에 액세스하는 데 필요한 대역폭이 제한되어 있으므로 저장소의 데스크톱 B에 로컬 미러를 설정하고 싶습니다.원격 자식 저장소를 미러링하기 위해 로컬 디렉토리를 설정하는 방법은 무엇입니까?

지금,

git clone file://localhost/local/repo/path.git 

에 의해 내가 로컬 저장소를 테스트 한

git clone --mirror https://repository-on-server-a /local/repo/path.git 

에 의해 미러 저장소를 설정 한 그때 나는

cd /local/repo/path git fetch -q 

동기화 할 crontab을 수정 5 분마다. 잘 작동한다. 시작시

, 나는 자식이 로컬 디렉토리 대신 원격의 repo에서 모든 개체를 가져 가지고

git config --global url.file://localhost/local/repo/path.git.insteadOf https://repository-on-server-a 

를 사용하는 방법에 대해 생각했다. 그러나 작동하지 않습니다.

내 질문

  1. 원격 자식의 repo에 대한 현지 미러를 설정하는 간단한 방법이 있나요입니까?
  2. 'git push'처리 방법은 무엇입니까? insteadOf는 모든 푸시를 로컬 디렉토리로 가져 오므로 모든 변경 사항을 서버 A로 다시 푸시 할 수 있습니까?

로컬 디렉터리는 테스트 용이지만 최종 해결 방법은 아닙니다. 데스크톱 B에서 나중에 다른 데스크톱 C를 사용하여 소스 코드를 가져올 것입니다. 다른 동료도 나와 함께 할 것입니다. 즉, 데스크톱 B의 모든 변경 사항을 '중심적인'솔루션으로 바꾸고 싶습니다.

답변

5

미러 란 무엇입니까? 당신의 local git 작업 디렉토리는 이미 입니다.은 원본 저장소의 미러입니다; 이것이 DVCS가 작동하는 방식입니다. 파일 시스템에서 두 번째 로컬 복사본의 이점을 이해하지 못합니다. 당신이 당신의 네트워크의 나머지 상류 기원과 변화를 로컬 네트워크 수집 지점으로의 repos 중 하나를 사용하려면

편집 다음 크론 작업은 괜찮습니다. fetch -a을 입력 한 후 push --mirror을 수행하십시오.

그러나 프록시/별칭 설정에 신경 쓰지 않아도됩니다. 모든 사람을 복제하여 로컬 미러에 명시 적으로 푸시하십시오. 그런 이유로 그들은 어떤 이유로 든 진정한 기원에 도달해야하는 경우에 방해가되지 않을 것입니다. 두 URL을 모두 리모컨으로 설정하고 기본적으로 로컬 URL을 사용하고 필요한 경우 원격 이름으로 실제 URL을 사용할 수있게 할 수도 있습니다.

+0

휠을 재발 명하는 것 같습니다. –

+0

동의. 이 점이 전혀 없습니다. – wadesworld

+0

로컬 디렉토리는 테스트 용입니다. 필자가 설명하지 않은 마지막 단계는 데스크톱 B에서 소스 코드를 가져 오기 위해 다른 컴퓨터의 Desktop C를 사용하는 것입니다. '로컬 디렉터리'는이 솔루션을 테스트하기위한 것입니다. – jcadam

관련 문제