¿Cómo puedo excluir requestes de extracción de git mirror clone?

Quiero duplicar clonar un repository Bitbucket a otro repository Bitbucket. Administro esto con un script de shell, que hace lo siguiente:

git clone --mirror <sourceUrl> git remote set-url --push origin <targetUrl> git push --mirror 

Ahora recibo el siguiente error al presionar porque Bitbucket no permite enviar requestes de extracción (que se crean en el Bitbucket de origen):

 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 '...' 

Resolví el problema con una sugerencia de http://christoph.ruegg.name/blog/git-howto-mirror-a-github-repository-without-pull-refs.html mediante la adaptación de los refs de búsqueda con la siguiente solución alternativa.

Creé un nuevo repository desnudo y adapté la configuration de la siguiente manera:

 [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> 

Luego realizo un Git Pull y un Git Push y todo está bien.

Sin embargo, la Solución no es una solución hermosa porque crear un depósito vacío y luego sobrescribirlo es extraño, así que quiero una alternativa.

Preguntas:

  • Puedo agregar la configuration de búsqueda necesaria con "git clone –config" (antes de que git clone realice su búsqueda inicial) pero ¿puedo eliminar la configuration original fetch = +refs/*:refs/* también con el command "git clone"? Esto resolvería el problema, que las requestes de extracción son retiradas inicialmente
  • ¿Es posible eliminar las requestes de extracción del repository vacío después de la extracción?
  • ¿Es posible excluir las requestes de extracción del push?

Gracias a Iván.

Su command resolvió mi problema. Solo tuve que agregar el parámetro "-r" a xargs para reactjsr en greps vacíos:

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