Si su equipo está convirtiendo su control de código fuente de TFVC a Git, querrá la conversión de mayor fidelidad que pueda obtener. Esto significa que mientras cubrimos git-tfs y git-tf para la sección de interoperabilidad, sólo cubriremos git-tfs para esta parte, porque git-tfs soporta ramificaciones, y esto es prohibitivamente difícil usando git-tf.
Note
|
Se trata de una conversión unidireccional. El repositorio Git resultante no podrá conectarse con el proyecto TFVC original. |
The first thing to do is map usernames.
TFVC is fairly liberal with what goes into the author field for changesets, but Git wants a human-readable name and email address.
You can get this information from the tf
command-line client, like so:
PS> tf history $/myproject -recursive > AUTHORS_TMP
Esto agarra todos los conjuntos de cambios de la historia del proyecto y lo coloca en el archivo AUTHORS_TMP que procesaremos para extraer los datos de la columna 'Usuario' (el segundo).
Abre el archivo y busca en qué caracteres comienzan y terminan la columna y reemplazan, en la línea de comandos siguiente, los parámetros 11-20
del comando` cut` con los que se encuentran:
PS> cat AUTHORS_TMP | cut -b 11-20 | tail -n+3 | uniq | sort > AUTHORS
El comando cut
mantiene sólo los caracteres entre 11 y 20 de cada línea.
El comando tail
omite las dos primeras líneas, que son cabeceras de campo y subrayados ASCII-art.
El resultado de todo esto se canaliza a uniq
para eliminar duplicados y se guarda en un archivo llamado` AUTHORS`.
El siguiente paso es manual; Para que git-tfs haga un uso efectivo de este archivo, cada línea debe estar en este formato:
DOMAIN\username = User Name <[email protected]>
La parte de la izquierda es el campo ``Usuario'' de TFVC, y la porción en el lado derecho del signo de iguales es el nombre de usuario que se utilizará para los compromisos de Git.
Una vez que tengas este archivo, lo siguiente que debes hacer es hacer un clon completo del proyecto TFVC en el que estás interesado:
PS> git tfs clone --with-branches --authors=AUTHORS https://username.visualstudio.com/DefaultCollection $/project/Trunk project_git
A continuación, deseará limpiar las secciones git-tfs-id
desde la parte inferior de los mensajes de confirmación.
El siguiente comando hará lo siguiente:
PS> git filter-branch -f --msg-filter 'sed "s/^git-tfs-id:.*$//g"' -- --all
Que utiliza el comando sed
desde el entorno Git-bash para reemplazar cualquier línea que empiece por ``git-tfs-id:'' con vacío, que Git luego ignorará.
Una vez que todo está hecho, estás listo para añadir un nuevo mando a distancia, empujar todas sus ramas hacia arriba, y hacer que su equipo comience a trabajar desde Git.