zapatos videos tipos superfly suelas suela que mochila llevo guia fútbol futbol definitiva botas mercurial dvcs bitbucket

mercurial - tipos - videos de fútbol emotion



Error Mercurial: el repositorio no está relacionado (4)

Recibes este mensaje cuando intentas ingresar a un repositorio que no sea el que clonaste. Vuelva a verificar la dirección de la inserción, o la ruta default , si solo está utilizando hg push solo.

Para verificar la ruta predeterminada, puede usar hg showconfig | grep ^paths/.default hg showconfig | grep ^paths/.default (o simplemente hg showconfig y busca la línea que inicia paths.default= ).

Acabo de comenzar con Mercurial, tengo un repositorio "central" en Bitbucket que cloné en una máquina e hice cambios, me comprometí y empujé. Luego cloné desde Bitbucket a otra máquina comprometida y empujada, lo cual estaba bien. Luego volví a la primera máquina, realicé cambios comprometidos e intenté presionar, pero recibí el mensaje de error. ¿Qué estoy haciendo mal? ¿Debería haber tirado primero? ¿Cómo puedo resolver el error y presionar? ¡Cualquier ayuda es apreciada!

Darren.


Si está bastante seguro de que la ruta de inserción es correcta, puede valer la pena exportar los cambios a los parches del repositorio problemático, clonar nuevamente desde Bitbucket y luego importar los parches en el nuevo repositorio. Esto solo funcionará o revelará una confirmación incorrecta / corrupta.


Un repositorio de Mercurial obtiene su identidad cuando realiza el primer compromiso en él. Cuando crea un nuevo repositorio en Bitbucket, crea un repositorio vacío sin identidad.

Cuando clonas este repositorio en el equipo A y haces un commit y lo vuelves a insertar, marcas el repositorio. Si ha clonado el repositorio en la segunda máquina antes de presionar desde la primera, puede terminar en la situación que describe.

Ejecute hg paths en la máquina donde no puede presionar. Luego crea un clon por separado del repositorio al que dice que presionará. Ahora examine el primer conjunto de cambios en cada repositorio con

hg log -r 0

Si los conjuntos de cambios iniciales son diferentes, entonces tiene dos repositorios no relacionados, como lo llamamos en Mercurial. A continuación, puede exportar los cambios que no puede insertar como parches e importarlos en el otro.


Me gustaría compartir el conocimiento sobre las partes internas de Mercurial.

Repositorios no relacionados cuando no tienen las mismas revisiones.

La pieza correspondiente se puede encontrar en mercurial/treediscovery.py :

base = list(base) if base == [nullid]: if force: repo.ui.warn(_("warning: repository is unrelated/n")) else: raise util.Abort(_("repository is unrelated"))

base es una lista de raíces de partes comunes tanto en repositorios locales / remotos.

Siempre sabrá cómo los repositorios son diferentes por:

$ hg in $REMOTE $ hg out $REMOTE

Siempre puede verificar las raíces de ambos (después de clonar ambos localmente):

$ hg -R $ONE log -r "roots(all())" $ hg -R $TWO log -r "roots(all())"

si la salida de los comandos anteriores no comparte identificadores, esos repositorios no están relacionados. Debido a las propiedades de hash , es muy imposible que las raíces sean iguales accidentalmente. No puede engañar a las raíces comprobando cuidadosamente repositorios porque la construcción de dos repositorios se parece a estos (con partes comunes pero raíces diferentes):

0 <--- SHA-256-XXX <--- SHA-256-YYY <--- SHA-256-ZZZ 0 <--- SHA-256-YYY <--- SHA-256-ZZZ

imposible porque eso significa que inviertes SHA-256 ya que cada hash posterior depende de los valores previos.

Con esta información, creo que cualquier Devs podrá solucionar el error: repository is unrelated .

Ver también la identificación del repositorio de Mercurial

Gracias por la atención, buen hacking!