다음 설정이 있다고 가정합니다.
업스트림에서 미러로 모든 업데이트를 복사하고 싶습니다 (예를 들어 Jenkins의 일부 cronjob 또는 주기적 작업을 사용합니다. 즉, 미러가있는 시스템이 아닌 다른 시스템에서 복사해야 함). 내 브랜치는 항상 업스트림의 브랜치와 다르므로 충돌이 발생하지 않아야합니다 (그렇지 않으면 스크립트가 실패하지만 로컬 브랜치를 덮어 쓰면 안됩니다). 모든 "헤드"를 업데이트해야합니다.
필자 가 필요한 거의 모든 작업을 수행하는 이 스크립트 를 찾았 지만 "대칭"경우 (즉, 모든 저장소에 작성)에서만 작동하는 것으로 보이며이를 수정하려면 git man에 너무 많은 "다이빙"이 필요할 수 있습니다.
나는 작동하는 해결책을 고맙게 생각합니다 (물론 누군가가 나를 위해 다른 300 줄 스크립트를 작성할 것이라고 기대하지는 않지만 이미 작성되었거나 실제로 생각보다 쉬울 수 있습니다) 또는 위에서 언급 한 스크립트 수정에 대한 몇 가지 힌트 .
예, 찾은 스크립트는 좋아 보이지만 하나의 단일 저장소를 가져 오려는 것을 고려할 때 필요에 비해 너무 큽니다. 훨씬 적은 코드 줄로이를 수행 할 수 있어야합니다.
이것이 새 프로젝트라고 가정하면 동기화 스크립트를 호스팅 할 서버에서 실행할 것입니다.
git clone [email protected]:some_user/some_project.git
git remote add mirror ssh://[email protected]_url.com/some_project.git
그러면 읽기 전용 애플리케이션의 초기 복제가 수행됩니다. 그런 다음 백업 위치를 "미러"라는 또 다른 원격으로 설정합니다. 실제로 원하는대로 부를 수 있습니다.
그런 다음 오리진이 변경 될 때만 동기화 위치를 업데이트하는 bash 스크립트가 있습니다. 이것을 간단한 크론 작업에 넣을 수 있습니다.
#! /bin/bash
cd /path/to/git/repo/
if [ "`git pull origin`" == "Already up-to-date." ]
then
echo "Nothing to update!"
else
git push mirror
fi
내 Github와 개인 Gitlab 서버에있는 프로젝트에서 이것을 테스트했습니다. 성공적으로 작동했습니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다