2016-06-23 2 views
4

Bitbucket 저장소를 다른 Bitbucket 저장소에 미러링하려고합니다. 내가 수행하는 쉘 스크립트와이를 관리하는 다음git 미러 클론에서 끌어 오기 요청을 어떻게 제외시킬 수 있습니까?

나는의 Bitbucket은 (소스의 Bitbucket에 생성된다) 풀 요청을 밀어 허용하지 않기 때문에 밀어 다음과 같은 오류를 받고 있어요 지금
git clone --mirror <sourceUrl> 
git remote set-url --push origin <targetUrl> 
git push --mirror 

:

remote: You are attempting to update refs that are reserved for Bitbucket's pull 
remote: request functionality. Bitbucket manages these refs automatically, and they may 
remote: not be updated by users. 
remote: 
remote: Rejected refs: 
remote:   refs/pull-requests/21/from 
remote:   refs/pull-requests/23/from 
remote:   refs/pull-requests/23/merge 
remote:   refs/pull-requests/24/from 
remote:   refs/pull-requests/24/merge 
To ... 
! [remote rejected] refs/pull-requests/21/from -> refs/pull-requests/21/from (pre-receive hook declined) 
! [remote rejected] refs/pull-requests/23/from -> refs/pull-requests/23/from (pre-receive hook declined) 
! [remote rejected] refs/pull-requests/23/merge -> refs/pull-requests/23/merge (pre-receive hook declined) 
! [remote rejected] refs/pull-requests/24/from -> refs/pull-requests/24/from (pre-receive hook declined) 
! [remote rejected] refs/pull-requests/24/merge -> refs/pull-requests/24/merge (pre-receive hook declined) 
error: failed to push some refs to '...' 

는 I는 다음 대안으로 페치 심판을 적용하여 http://christoph.ruegg.name/blog/git-howto-mirror-a-github-repository-without-pull-refs.html에서 힌트 문제를 해결했다.

나는 새로운 베어 저장소를 생성하고 설정을 다음과 같은 방법으로 적응 :
[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = true 
[remote "origin"] 
    fetch = +refs/heads/*:refs/heads/* 
    fetch = +refs/tags/*:refs/tags/* 
    url = <sourceUrl> 
    mirror = true 
    pushurl = <targetUrl> 

그런 다음 나는 힘내 풀과 망할 놈의 푸시를 수행하고 모든 것이 잘입니다.

그럼에도 불구하고 해결 방법은 아름다운 솔루션이 아닙니다. 비어있는 맨 처지 저장소를 만든 다음 덮어 쓰면 이상한 것이므로 대안이 필요합니다.

질문 :

  • 내가 "자식 클론 --config"로 가져 오기 필요한 구성을 추가 할 수 있습니다하지만 난으로도 원래 fetch = +refs/*:refs/* 구성을 제거 할 수 있습니다 (자식 클론 가져가 초기의 수행 전) " 자식 복제 "명령? 그러면 당겨 받기 요청이 처음에 당겨지는 문제를 해결할 수 있습니다.
  • 끌어 오기 요청 후에 베어 리포지토리에서 끌어 오기 요청을 제거 할 수 있습니까?
  • 밀어 넣기 요청을 밀어 넣기에서 제외 할 수 있습니까?
+0

로컬 비트 버켓 서버 또는 bitbucket.org입니까? 나는 후자가 풀 요청을 당길 수 있는지 몰랐다. 나는 재현 할 수 없다. – tedder42

+0

로컬 Bitbucket 서버입니다. –

+3

'git show-ref | cut -d ''-f2 | grep '풀 요청'| xargs -L1 git update-ref -d' – Ivan

답변

5

Ivan에게 감사드립니다.

그의 명령으로 내 문제가 해결되었습니다. 빈 greps에 반응하기 위해 xargs에 "-r"매개 변수를 추가해야했습니다.

git show-ref | cut -d' ' -f2 | grep 'pull-request' | xargs -r -L1 git update-ref -d 
관련 문제