2010-03-09 20 views
6

Supongamos que:¿Cómo 'hg merge' sin afectar el directorio de trabajo?

  • tengo un acuerdo de recompra llamada myrepo.
  • Tengo cambios no confirmados en mi directorio de trabajo.
  • Hago un tirón desde Repo1 y eso crea una sucursal en MyRepo
  • Quiero hacer una fusión de lo que ya tenía en mi repositorio con lo que acabo de sacar.

Como se describe here, el proceso de fusión cambia el estado del directorio de trabajo.

En mi situación, no quiero perder los cambios no confirmados que están en mi directorio de trabajo porque en ese punto, estoy interesado en cambiar el estado de MyRepo; no el estado de mi directorio de trabajo.

¿Hay alguna manera de pasar por el proceso de fusión, incluida la resolución manual de conflictos, sin afectar el contenido de mi directorio de trabajo? ¿Se puede realizar este proceso solo en archivos temporales? ¿O debería archivar mis cambios, hacer la fusión y luego desmantelar para restaurar mi directorio de trabajo al estado en que se encontraba antes de la fusión?

Respuesta

4

Use shelve o extensiones para esconder temporalmente los cambios mientras se fusiona.

+0

Tus enlaces están rotos. –

1

Puede clonar su repositorio a su último registro, combinar los cambios con el clon, confirmar y luego extraer el nuevo conjunto de cambios de su depósito clonado a su actual.

3

No puede hacer eso. Como dice la documentación, fusionar realmente es una operación de árbol de trabajo. Resolver conflictos sin probar el resultado es una locura. O deja de lado o compromete los cambios y luego realiza la fusión. Si no desea que la confirmación sea visible en cualquier lugar, puede confirmar el cambio, actualizar a la revisión anterior, fusionar la nueva rama, aplicar el parche confirmado temporalmente y eliminar esa rama temporal.

+0

+1 a estanterías. Parece la forma más directa de proceder a la fusión sin afectar los cambios en curso. – gavinb

+0

Gracias @ Lukáš Lalinský, estoy teniendo un problema similar. Cuando dijo "o deja de lado o compromete los cambios y luego realiza la fusión", ¿por "shelve" quiso decir "use la extensión shelve"? ¿o algo mas? –

+0

Sí, quise utilizar la extensión de estantería. –

0

Soy bastante nuevo en mercurial, pero ¿no podría clonar desde su repositorio local y copiar su copia de trabajo al clon? ¿Entonces podría ejecutar su fusión en el original? Preservarías el estado de tu copia de trabajo en el clon mientras permites el cambio de la copia de trabajo original.

Pruebe esto primero. Nunca lo hice en hg.

0

Solo hazlo en un clon.

  1. Clon myrepo a myrepo-fusión, que se tire sobre todos los cambios confirmados, pero no sus cambios no confirmados
  2. Dentro myrepo-fusión hacer un tirón de Repo1.
  3. Dentro myrepo-fusión hacer todo el hg merge s desea
  4. empuje
  5. Dentro myrepo a la fusión ya sea Repo1 o la myrepo originales

empuja de nuevo a myrepo no alterará el directorio de trabajo de myrepo, por lo esa es una acción segura.

Recuerde en Mercurial que los clones son increíblemente rápidos y baratos: en los sistemas de archivos modernos, usan enlaces duros debajo de las cubiertas, por lo que ni siquiera ocupan mucho espacio en el disco.

Cuestiones relacionadas