2011-10-14 10 views
38

¿Hay un equivalente de mercurio de git add -p?hg equivalente a git add -p?

Citando del hombre, git-add con la opción -p (o --patch) hace lo siguiente:

elegir de forma interactiva trozos de parche entre el índice y el árbol de trabajo y añadirlos a la índice. Esto le da al usuario la oportunidad de revisar la diferencia antes de agregar contenido modificado al índice.

+0

Esto era al menos parte de TortoiseHg antes del nuevo puerto, y actualmente no está implementado en el nuevo puerto. Consulte https://bitbucket.org/tortoisehg/thg/issue/188/what-happened-to-change-selection-in-the –

+1

@ LasseV.Karlsen: la función de archivado aún está disponible en el último TortoiseHg. Se puede acceder a través del menú 'Repository -> Shelve' o mediante un icono en la ventana de confirmación. –

+0

Posible duplicado de [Mercurial cherry picking changes for commit] (http://stackoverflow.com/questions/854930/mercurial-cherry-picking-changes-for-commit) –

Respuesta

33

Eche un vistazo a record extension (que viene incluido con Mercurial).

Tenga en cuenta que ya que Mercurial no tiene el concepto de área de ensayo como git, ejecutar hg record simplemente le permitirá examinar, trozo a trozo, las modificaciones en su copia de trabajo. Se aplicará cualquier cambio que elija registrar, y cualquier cambio que elija no para registrar simplemente se dejará como modificaciones en su copia de trabajo.

7

Si está utilizando TortoiseHg, tiene una característica Shelve que le permite almacenar cambios que no desea comprometer con un área temporal. Permite la selección de trozos, al igual que git.

En el TortoiseHg Banco de trabajo, esta herramienta se puede acceder de 2 maneras:

  1. Haga clic Repository -> Shelve
  2. En Commit ventana, seleccione el icono de la herramienta deja de lado. Se ve así:

enter image description here

+3

La ventaja del enfoque shelve es que puede probar su cambios antes de comprometerse. –

+1

+1 Laurens, siempre me molesta que al hacer un 'git add -p', básicamente estoy adivinando qué subconjunto de cambios formará una confirmación de trabajo, y luego ingresando esa conjetura utilizando un proceso manual propenso a errores. Pidiendo problemas. –

15

El Record Extention es la herramienta estándar para esto. Le permite elegir trozos para incluir o no en un compromiso. Una vez que haya habilitado la extensión en su hgrc, el comando es sólo

hg record 

El CRecord Extension le da un (interface de usuario) TUI en la parte superior de este, que le permite bajar a la que las líneas que desea incluir . Sin embargo, esto no es estándar, por lo que debe descargarse a un directorio antes de poder habilitarlo en su hgrc.

hg crecord 

Editar:

  1. La extensión de registro ya no es necesario. Ahora varios comandos admiten -i o —interactive. Por ejemplo:

    hg commit -i 
    

    ... le preguntarán por pedazo qué quiere incluir.

  2. CRecord lo convirtió en 3.8 como característica principal.Añadir lo siguiente a su .hgrc

    [ui] 
    interface = curses 
    

    Ahora, —interactive comandos que aparezca la misma interfaz que la antigua extensión CRecord.

7

A partir de Mercurial 3.8.1 la extensión de crecord está incorporada. Asegúrese de que la sección "ui" en su .hgrc contiene interface = curses, o le aparece una incómoda interfaz de preguntas y respuestas.

[ui] 
interface = curses 

y luego hacerlo de forma interactiva que hay que plantearse sus confirmaciones sobre qué trozo-o-la línea que desea incluir en esa confirmación.

hg commit --interactive 
+0

Derecha; ver https://www.mercurial-scm.org/wiki/RecordExtension –