2010-08-24 11 views
8

Estoy tratando de convertir un repositorio SVN con hgsvn y tengo algunos commits donde las propiedades SVN fueron modificadas, pero como Mercurial no las usa, lo ve como un vacío cometer y abortar ¿Hay alguna manera de forzar este hg commit para aceptar una confirmación que no cambie nada?¿Cómo puedo obligar a mercurial a aceptar un commit vacío

No estoy lo suficientemente familiarizado con las partes internas de hgsvn para hackearlo y omitir commits vacíos.

+2

Hay un truco: crea 1 archivo, confirma, luego borra ese archivo y usa la modificación. – vorrtex

Respuesta

3

Puede omitir esta confirmación si agrega una etiqueta local svn. $ REVNUM a la revisión principal (= la revisión que también tiene la etiqueta svn. ($ REVNUM-1) ahora). Entonces puedes continuar con hgpullsvn.

Digamos que su importación está en este estado (rev última importado es 15800, el rev es propiedad de sólo 15801):

$ hg log -l1 
changeset: 1234:123456789abc 
branch:  trunk 
tag:   tip 
tag:   svn.15800 
parent:  1233:cba987654321 
user:  Rudi <[email protected]> 
date:  Tue Aug 24 11:42:23 2010 +0200 
summary:  Foobar 

$ svn info 
Path: . 
URL: svn+ssh://example.com/foobar/trunk 
Repository Root: svn+ssh://example.com/foobar 
Repository UUID: 26c7c274-8ed1-4e7f-bdc1-5c767a948b10 
Revision: 15801 
Node Kind: directory 
Schedule: normal 
Last Changed Author: rudi 
Last Changed Rev: 15801 
Last Changed Date: 2010-08-24 14:00:29 +0200 (Di, 24 Aug 2010) 

Entonces sólo tiene que añadir la etiqueta svn.15801:

$ hg tag -l -r 123456789abc svn.15801 

y contunie para importar.

Pero haga una copia de seguridad antes de intentar esto.

+0

Gracias, esto me ayudó a superar ese compromiso. –

1

Cuando he necesitado confirmaciones vacías en p4 y hg antes, simplemente he usado un archivo que se ha reservado para 'ser' la confirmación vacía. Simplemente descargue una secuencia aleatoria de algún tipo (generalmente utilizo la hora y la fecha) en el archivo desechable, y hg commit lejos ....

0

Tal vez, lo siguiente no le ayudará en la situación, pero perheps otro lector.

Puede realizar una confirmación "vacía" mediante la importación de un parche casi vacío. Exporté un parche, eliminé todos los cambios en él, dejando solo 3 líneas (diff ..., ---... y +++ ...), y lo importé con hg import --bypass --message ...

0

Según el comentario de @ vorrtex en la pregunta original, el método más simple para forzar un vacío Aprobar de Mercurial es el siguiente:

  1. añadir un nuevo archivo (por ejemplo, Dummy.txt) y comprometerse.
  2. hg forget Dummy.txt
  3. hg commit --amend

Esto eliminará Dummy.txt de la confirmación anterior, dejándola vacía. (Puede usar, por ejemplo, TortoiseHg para el paso 1 pero necesitará usar una herramienta de línea de comando para los pasos 2 y 3.)

Estoy agregando esto como una nueva respuesta porque al escanear este hilo originalmente me perdí el comentario , y las respuestas existentes no crean un compromiso realmente vacío.

Cuestiones relacionadas