Soy relativamente nuevo en Mercurial y mi equipo lo está probando en este momento como un reemplazo para Subversion.¿Cuál es la forma más fácil de enviar y enviar un solo archivo dejando otras modificaciones en paz?
¿Cómo puedo enviar y enviar un archivo a otro repositorio sin dejar otras modificaciones en mi directorio de trabajo sin confirmar (o al menos no enviarlas al otro repositorio)?
Esto sucede con las migraciones de bases de datos. Queremos comprometer la migración al control de origen para que un administrador de bases de datos pueda verlo y editarlo mientras trabajamos en las modificaciones del código para que coincidan con la migración de la base de datos. Los cambios aún no están listos para comenzar, así que no queremos expulsarlos a todos.
En la subversión, yo simplemente hago:
svn add my_migration.sql
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql
y seguir trabajando a nivel local.
Esto no funciona con mercurial como cuando lo estoy sacando al otro repositorio, si hay cambios en él que no he bajado, quiere que los tire hacia abajo, los combine, y comprometer esa fusión al repositorio. Las confirmaciones posteriores a una combinación no le permiten omitir archivos, por lo que le obliga a confirmar todo en su repositorio local.
Lo más fácil que puedo averiguar es enviar el archivo a mi repositorio local, clonar mi repositorio local, buscar cualquier cambio nuevo del repositorio real, fusionarlos y comprometer esa fusión, y estos eliminan mis cambios.
hg add my_migration.sql
hg commit -m "migration notes" my_migration.sql
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push http://hg/project
Esto funciona, pero se siente como que me falta algo más fácil, una cierta manera de indicarle a Mercurial hacer caso omiso de los archivos que ya están en mi directorio de trabajo, acaba de hacer la fusión y enviar los archivos a lo largo. Sospecho que las colas mercuriales pueden hacer esto, pero aún no sé mucho de mq.
Gracias a Josh Matthews a continuación, el comando de archivado es exactamente lo que estoy buscando. No vi ninguna gran instrucciones de instalación con algunas google, así que aquí es la materia combinada utilicé para que funcione:
conseguir con:
hg clone http://freehg.org/u/tksoh/hgshelve/ hgshelve
El único archivo (actualmente) en el proyecto es el archivo hgshelve.py
Modificar su ~/.hgrc de añadir la extensión estantería, señalando a donde ha clonado el repositorio:
[extensions]
hgshelve=/Users/ted/Documents/workspace/hgshelve/hgshelve.py
A continuación, puede hg shelve
y hg unshelve
para almacenar temporalmente los cambios de distancia. Le permite trabajar en el nivel "parche de parche" para seleccionar y elegir los artículos que desea guardar. No parecía guardar un archivo en la lista para agregar, solo los archivos que ya están en el repositorio con modificaciones.
esta es una característica que realmente valoro en Git (lo uso todo el tiempo), y haría más difícil para mí cambiar ... –
Esto no es realmente cómo haría las cosas ahora que he aprendido mucho más sobre hg. Ahora confirmaría los cambios localmente, actualizaré a la revisión anterior y haré mis cambios allí y "hg push --rev". empujar solo la rama actual. Luego actualice de nuevo al otro trabajo y continúe allí. Si decidiera que ya no quería ese trabajo, simplemente lo "eliminaría". Mucho más fácil y no necesita preocuparse por trozos rechazados de archivos, todo se rastrea y en control de fuente. –