Close

Synchronize Git repositories

Es muy fácil sincronizar tu repositorio Git con los nuevos commits del repositorio SVN original. Esto conduce a un período de transición cómodo durante el proceso de migración en el que puedes continuar usando tu workflow de SVN existente, pero comenzar a experimentar con Git.

Se puede sincronizar en ambas direcciones. Sin embargo, te recomendamos que hagas una sincronización unilateral de SVN a Git. Durante el período de transición, solo debes hacer commits en tu repositorio SVN, no en el repositorio Git. Cuando estés seguro de que tu equipo está listo para hacer el cambio, puedes finalizar el proceso de migración y comenzar a hacer commit de los cambios con Git en vez de con SVN.

Migración a Git: recomendamos que hagas una sincronización unilateral de SVN a Git.

Mientras tanto, deberías continuar haciendo commits en tu repositorio SVN y sincronizarlo con el repositorio Git siempre que sea necesario. Este proceso es parecido a la fase Convertir, pero dado que solo enfrentas cambios incrementales, debería ser mucho más eficiente.


Actualizar el archivo de autores


El archivo authors.txt que usamos para mapear los nombres de usuario de SVN a nombres completos y direcciones de correo electrónico es esencial en el proceso de sincronización. Si los has movido de la ubicación ~/GitMigration/authors.txt que veníamos usando hasta el momento, debes actualizar la ubicación con:

git config svn.authorsfile 

Si nuevos desarrolladores han hecho commits en el repositorio SVN desde la última sincronización (o desde la clonación inicial), el archivo de autores debe actualizarse respectivamente. Puedes hacerlo de forma manual agregando los nuevos usuarios a authors.txt o puedes usar la opción --authors-prog, como se describe en la siguiente sección.

Para las sincronizaciones excepcionales, generalmente es más fácil editar directamente el archivo de autores; no obstante, se prefiere la opción ---authors-prog si vas a realizar sincronizaciones sin supervisión (es decir, en una tarea programada).

bases de datos
Material relacionado

Cómo mover un repositorio de Git completo

Logotipo de Bitbucket
VER LA SOLUCIÓN

Aprende a usar Git con Bitbucket Cloud

Generación automática de autores de Git


Si el archivo de autores no debe actualizarse, puedes saltear esta sección.

El comando git svn incluye una opción llamada --authors-prog que apunta a un script que transforma de manera automática los nombres de usuario de SVN en autores de Git. Deberás configurar este script para aceptar el nombre de usuario de SVN como su único argumento y devolver una línea simple en la forma de Nombre (como el lado derecho del archivo de autores existente). Esta opción puede ser muy útil si debes sumar de forma regular nuevos desarrolladores a tu proyecto.

Si deseas usar la opción --authors-prog, crea un archivo llamado authors.sh en ~/GitMigration. Agrega la siguiente línea a authors.sh para obtener un nombre y correo electrónico de Git ficticios para cualquier autor que no se encuentre en authors.txt:

echo "$1 <$1@example.com>"

Como ya dijimos, esto solo generará un nombre y un correo electrónico ficticios según el nombre de usuario de SVN, por lo que puedes modificarlo si puedes proporcionar un mapeo con más sentido.

Capturar los nuevos commits de SVN


A diferencia de SVN, Git hace una distinción entre descargar commits ascendentes e integrarlos en el proyecto. Lo primero se denomina "captura", mientras que lo segundo puede hacerse a través de un merge o una reasignación. En el directorio ~/GitMigration, ejecuta el siguiente comando para capturar cualquier nuevo commit del repositorio SVN original.

git svn fetch

Este es parecido al comando git svn clone de la fase anterior en que solo actualiza las ramas remotas del repositorio Git, las ramas locales no reflejarán ninguna de las actualizaciones todavía. Tu ramas remotas, por otro lado, deben coincidir de manera exacta con la historia del repositorio SVN.

Si estás usando la opción --authors-prog, debes incluirla en el comando anterior, de la siguiente manera:

git svn fetch --authors-prog=authors.sh

Sincronizar con los commits capturados

Para aplicar los commits descargados al repositorio, ejecuta el siguiente comando:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Esto reasignará los commits capturados a las ramas locales para que coincidan con sus equivalentes remotos. Ahora deberías poder ver los nuevos commits en la salida git log.

Limpiar el repositorio de Git (nuevamente)

También es una buena idea ejecutar el script git-clean de nuevo para eliminar cualquier etiqueta o rama obsoletas que se borraron del repositorio SVN original desde la última sincronización:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

Tu repositorio Git local ahora debería estar sincronizado con tu repositorio SVN.

Resumen


Durante este período de transición, es muy importante que tus desarrolladores solo hagan commit en el repositorio SVN original. De la única forma en que debe actualizarse el repositorio Git es a través del proceso de sincronización explicado antes. Es mucho más fácil que gestionar un workflow de sincronización bilateral, pero aún te permite comenzar a integrar Git en tu proceso de build.


Compartir este artículo
Tema siguiente

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Gente que colabora utilizando un muro lleno de herramientas

Blog de Bitbucket

Ilustración de Devops

Ruta de aprendizaje de DevOps

Demostraciones de funciones con expertos de Atlassian del Centro de demostraciones

Cómo funciona Bitbucket Cloud con Atlassian Open DevOps

Suscríbete para recibir el boletín de DevOps

Thank you for signing up