Pregunta

Usando https://github.com/andreynikiforov/vault2git Pude convertir un repositorio de bóveda a git y luego usé Mercurial's hg convert Para obtener un repositorio de HG. Los únicos problemas son que después de ejecutar hg convert Las fechas en las fechas de confirmación del conjunto de cambios son incorrectas.

Las fechas muestran la hora en que el conjunto de cambios se convirtió de GOT a Mercurial en lugar de la fecha de confirmación.

¿Hay algo más que deba hacer para preservar las fechas?

¿Fue útil?

Solución

Hice que esto funcione eliminando el código que verifica la información del comitvero en el hg convert git extensión en el archivo https://www.mercurial-scm.org/repo/hg-stable/file/09b200396384/hgext/convert/git.py líneas 125 a 130:

        if n == "committer":
            p = v.split()
            tm, tz = p[-2:]
            committer = " ".join(p[:-2])
            if committer[0] == "<": committer = committer[1:-1]
            committer = self.recode(committer)

Una vez que eliminas esto, hg convert Utilizará la información del autor para la fecha. Deberá copiar a través de la extensión de Convertir desde el enlace de repo, modificarlo y luego agregarla a TortoiseHG.

Por qué debe hacerse esto:

Al comprometerse con git, hay dos registros en los metadatos de cambios de cambios: committer y author.

  • El autor es la persona responsable del código.

  • El comitante es la persona que realmente cometió los cambios en el repositorio.

Esta distinción es importante en un proyecto de código abierto donde la persona que escribió el código no es necesariamente la persona que lo compromete al repositorio: generalmente hay mantenedores (comitantes) del proyecto que aceptan solicitudes de extracción de un contribuyente (autor) y comprometerlo con el repositorio.

Vault2Git Utiliza la información de checkin de bóveda (COMECTORE Y FECHA DE COMMINT) como la información del autor de Git Changeset. La información de Git Commister utiliza la información del usuario de GIT y la fecha real de confirmación (su usuario predeterminado para el repositorio). Puedes ver esta diferencia haciendo git cat-file <rev hash> en un conjunto de cambios que Vault2Git lo hace.

Esto funciona bien para git, pero cuando corres hg convert, Mercurial usa el author nombre y el committer Fecha para crear los metadatos de Cambios Mercruiales.

Otros consejos

Tu podrías intentar hg-git en lugar de la extensión de conversión. Es un puente bidireccional entre los dos que debe ser sin pérdidas. Eso debe incluir fechas de lo contrario, los hashes cambiarían cada vez que tirara.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top