[github] 공식 github 미러 만들기

예를 들어 https://github.com/mirrors 에서와 같이 “실제 미러”로 표시되도록 외부 git 저장소에 대한 github 미러를 만드는 방법은 무엇입니까?

지금까지 다음을 사용하여 미러를 설정했습니다.

cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git

포스트 수신 후크를 구성하여 git push --quiet github. 그러나 이렇게하면 github는 미러를 인식하지 못합니다.

repostiory 이름 아래에 “Mirrorred from”이 나타나도록 github 방식으로 수행하는 방법에 대한 아이디어가 있습니까?



답변

GitHub의 지원 팀과의 의사 소통을 기반으로 GitHub는 현재 사용자가 이러한 방식으로 저장소를 미러링하는 직접적인 메커니즘을 제공하지 않는다는 것을 발견했습니다.

그러나 조직의 일부인 저장소에 대해이 서비스를 설치하도록 GitHub에 요청할 수 있습니다. 그런 다음 GitHub는 기존 저장소를 이러한 미러로 구성하고 보유하고있는 전체 미러 수의 함수 인 간격으로 가져옵니다.

편집 : Stuart가 지적했듯이 GitHub는 더 이상 임의의 저장소 미러링 요청을 수락하지 않습니다. 남은 유일한 옵션은 내 질문에 게시 한 솔루션입니다. 즉, 수신 후 후크를 만들어 GitHub 저장소로 자동으로 푸시합니다.


답변

https://github.com/mirrors 의 현재 콘텐츠로 판단하면 GitHub에서 더 이상 “공식 미러”를 수행하지 않는 것으로 보입니다. 오늘날 GitHub에 코드를 미러링하려는 대부분의 프로젝트는 Git 자체 와 같은 조직을 구성하기 때문 입니다. .

https://github.com/isaacs/github/issues/415 에도 기능 요청이 있습니다.


답변

Git 가져 오기 에 따르면 :

데모 목적으로 다음을 사용합니다.

  • extuser라는 외부 계정
  • ghuser라는 GitHub 개인 사용자 계정
  • repo.git이라는 GitHub 저장소

명령 줄 :

# Makes a bare clone of the external repository in a local directory
$ git clone --bare https://githost.org/extuser/repo.git

# Pushes the mirror to the new GitHub repository
$ cd *repo.git*
$ git push --mirror https://github.com/ghuser/repo.git

# Remove the temporary local repository.
$ cd ..
$ rm -rf repo.git


답변

미러링은 아니지만 Github 사용자 또는 조직의 전체 백업 (문제 및 기타 메타 데이터 포함)을 만들기 위해 중간 정도의 성공을 거둔 github-backup 이라는 도구를 사용했습니다 . README 파일 을 인용하려면 :

github-backup을 실행할 때마다 GitHub에서 새로운 포크를 찾습니다. 와 같은 이름을 사용하여 포크 용 저장소에 원격을 추가합니다 github_torvalds_subsurface. 모든 포크에서 가져옵니다.

각 포크에서 메타 데이터를 다운로드합니다. 이것은 “github”라는 브랜치에 저장됩니다. 각 포크는 torvalds_subsurface. 디렉토리 안에는 torvalds_subsurface/watchers. 주석과 같은 추가 디렉토리가있을 수 있습니다 torvalds_subsurface/comments/1..

github 브랜치에 대한 커밋을 따라 가면 시간이 지남에 따라 GitHub에서 어떤 정보가 변경되었는지 확인할 수 있습니다.

github 브랜치의 파일 형식은 현재 Haskell 직렬화 된 데이터 유형입니다. 이것은 평문이며, 가늘게 뜨면 읽을 수 있습니다.

제한 사항은 다음과 같습니다.

  • 개인 저장소 지원 없음
  • 스타, 팔로어 등과 같은 “사회적”물건은 없습니다.
  • 커밋 줄에 대한 메모는 지원되지 않습니다 (아직?)
  • 문제 라벨

답변