Solicitud para mantener registros de envío en SVN
1. Correspondencia de cuenta
- Registros de registro de SVN:
r2 | lisi | 2014-12-12 15:11:59 +0800 (五, 12 12月 2014) | 1 line
ssss
- registros de registro de git:
Author: zhangsan <[email protected]>
Date: Thu Jan 16 11:28:30 2020 +0800
初始化意见反馈模块
commit 938ef83245f699c5c016b98ce454cffba3ce8eff
Al comparar los registros de registro de svn y git, se puede encontrar que svn solo usa la cuenta para mostrar el registro de envío, y git no solo usa la cuenta, sino que también usa el buzón para confirmar. Entonces, svn migración a git, debe convertir los dos en consecuencia.
El método consiste en exportar la cuenta svn y luego convertir la cuenta svn a la cuenta svn en el lado izquierdo del signo igual, y la cuenta de GitLab y la información del buzón en el lado derecho del signo igual. zhangsan=zhangsan <[email protected]>
Dicha información se registra en un archivo, y cada información de la cuenta se contabiliza en el archivo Una linea Debido a que solo nos enfocamos en la información de registro, solo exportamos las cuentas en los registros de registro y operamos en estas cuentas. El siguiente comando completa la exportación de la correspondencia de la cuenta:
svn log SVN项目的url -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@example.com>"}' | sort -u > 记录账号对应关系的文件路径
A continuación exportamos la correspondencia de la cuenta al archivo svn2git.txt:
~/Desktop$ svn log http://10.69.10.15:8080/svn/ai_project | awk -F '|' '/^r/ { sub(" ","",$2); sub(" $","",$2); print $2"="$2" <"$2"@example.com>"}' | sort -u > svn2gitlab.txt
Explicación del comando:
- http://10.69.10.15:8080/svn/ai_project: exportar registros de svn
- Los registros exportados se pasarán al comando awk a través de la canalización '|'
- La unidad de procesamiento de awk es una línea, por lo que awk divide cada línea de datos por "|", y el segundo elemento del resultado es el nombre de la cuenta. Sub elimina el espacio y el símbolo $ del nombre de la cuenta, y finalmente genera el número de cuenta. El número de cuenta se pasa al comando de clasificación a través de la canalización "|" para desordenar, y finalmente el resultado se guarda en el archivo svn2gitlab.txt
2. proyecto SVN pull git-svn
Use git-svn para extraer el proyecto SVN.
-
Descargue e instale git-svn, puede buscar git-svn en http://fr2.rpmfind.net/linux/rpm2html/search.php , y luego elija descargar e instalar según su plataforma. Por supuesto, también puede usar la fuente para instalar, como ubuntu puede usar: sudo apt-get install git-svn
-
Ejecute el comando :,
git svn clone "SVN项目url" --no-metadata --authors-file="账号对应关系文件" 自定义项目名
extraiga el proyecto y use el archivo de correspondencia de la cuenta para convertir el registro de envío svn en un registro de envío git.Pago normal de svn:
~/Desktop/H/ai_project$ ls -a . app gradle local.properties key.sign proguard-project.txt .svn .. build.gradle .gradle main.iml pda_svn.iml settings.gradle
Use git svn para extraer:
~/Desktop/TestSVN2Git/ai_project$ ls -a . app .git .gradle main.iml pda_svn.iml settings.gradle .. build.gradle gradle local.properties key.sign proguard-project.txt
Como se puede ver en la comparación anterior, se
.svn
convierte en.git
,
Ejemplos:
~/Desktop/TestSVN2Git$ git svn clone http://10.69.10.15:8080/svn/ai_project --no-metadata --authors-file=../svn2gitlab.txt ai_project
3. Envía el proyecto a GitLab
Cambie al directorio del proyecto extraído con Git-svn:
- Configurar la información del usuario del proyecto
git config --local user.name "GitLab用户名"
git config --local user.email "GitLab邮箱"
Tales como:
~/Desktop/TestSVN2Git/ai_project$ git config --local user.name "Administrator"
~/Desktop/TestSVN2Git/ai_project$ git config --local user.email "[email protected]"
-
Cree en la página web de GitLab o use la API de GitLab para crear un almacén vacío, consulte "Migrar del almacén local de git al almacén remoto de git"
Finalmente, obtenga la dirección git del almacén vacío: http://10.69.10.13/android/aiproject.git
-
Asociar almacén local a nuevo almacén remoto
git remote add origin GitLab项目的git地址
~/Desktop/TestSVN2Git/ai_project$ git remote add origin http://10.69.10.13/android/aiproject.git
-
Empuje remoto
git push -u origin master
~/Desktop/TestSVN2Git/ai_project$ git push -u origin master
En el tercer paso, la finalización es el problema de migrar el repositorio git local al repositorio git remoto .
Postdata:
Cuando svn migra git, es más o menos que git svn usa el archivo de correspondencia de la cuenta para extraer el registro de envío de svn al registro de envío de git al extraer el proyecto, y luego empujarlo al nuevo proyecto.