2011-05-31 14 views
25

En mi repositorio he agregado varios sub-repositorios para los módulos que estoy usando. Siempre voy a tratar estos subrepos como "solo tirar". No planeo hacerles ningún cambio, pero quiero conservar la capacidad de extraer nuevos cambios fácilmente si se lanza una nueva versión.¿Cómo puedo evitar que mercurial empuje subrepos?

Cuando presiono el repositorio principal, Mercurial intenta empujar los sub-repositorios. ¿Hay alguna configuración para evitar esto?

+0

@Mercurial ¿Mercurial no tiene algo similar al archivo Git .gitignore? – Arlen

+0

Por supuesto que sí, pero él está hablando de subrepos no por archivo ignorando. Git tiene el mismo contenido de subrepo, y de manera similar no se resolvería con .gitignore. –

+0

No quiero ignorar los subrepos, simplemente no quiero que sean parte del empuje ya que nunca cambiarán. – Soviut

Respuesta

-1

Depende del cliente mercurial que utilice. Yo uso tortoisehg, y he encontrado que hacer clic derecho en la carpeta y seleccionar los archivos en tortoisehg >> olvidar es todo lo que se necesita. Seleccione los archivos y no tendrá que molestarse de nuevo.

+1

Estás pensando en ignorar archivos, pero soviut está preguntando sobre no presionar en los subrepos. –

7

Hay algunas cosas que puede hacer, dependiendo del comportamiento que esté buscando.

¿Está realmente editando y cometiendo dentro del subrepo? Si es así, debe crear un repositorio de rama de proveedor por separado en el que combine sus cambios con los cambios ascendentes ("sus"), y tenga su subrepo apuntando a eso. Algo como esto quizá:

repos 
    main 
    subrepo 
    .hgsub # contains: "subrepo=../theirproject" 
    theirproject # clone of remote, upstream repo 

La idea es que la entrada subrepo no apunta directamente a la cesión temporal de tracción de sólo aguas arriba, sino a uno de su propia donde se fusionan los cambios con "los suyos"

Otro La opción es dejar de hacer cambios en el subrepo. Si no hay cambios, y no se confirma, entonces push pasará ese repositorio directamente. Si cambia a ese modo de trabajo, puede configurar commitsubrepos = false en la sección [ui] en un archivo hgrc para evitar comprometerse accidentalmente en ese repositorio.

La conclusión es que si estás cambiando las cosas allí, entonces tienes que comprometerlas (¡por seguridad!) Y si las cometes, las presionarán si empujan al padre, así que solo tienes que controlar a donde están empujados y eres bueno para ir.

+2

No estoy editando o cambiando el sub-repo de ninguna manera. Es estrictamente allí como una biblioteca para que haga referencia. Quiero que sigan siendo sub-repos para que pueda extraer actualizaciones, pero no quiero que constantemente intenten presionar cuando nada va a cambiar. – Soviut

+1

Si no ha cambiado nada en los subrepos, Mercurial no intentará forzarlos. O más bien, no detectará ningún cambio y push saldrá inmediatamente. Si desciende a ese repositorio y 'hg saliente' le muestra cualquier contenido, entonces ha cambiado (y comprometido) algo. ¿Puedes actualizar tu pregunta con el resultado específico que estás viendo cuando haces un 'hg push' en el repositorio padre? –

+1

Solo hg presione en el repositorio principal. Esperaba básicamente evitar el cheque subrepo ya que parece ser más lento que un empuje normal. – Soviut

Cuestiones relacionadas