git-svn可以保留多次提交记录吗

如题所述

第1个回答  2022-11-13

1、环境准备

sudo apt-get install git-svn1

2、创建用户映射

在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中. 比如 blame 的输出以及 git svn log。

如果想让这条信息更好的映射到 Git 作者数据里,则需要从 SVN 用户名到 Git 作者的一个映射关系建立一个叫做 user.txt 的文件,用如下格式表示映射关系:

zhangsan = zhangsan <zhangsan@gmail>

lisi = lisi <lisi@gmail>

wangwu = wangwu <wangwu@gmail>123

在svn库下执行该命令可以在当前文件夹生成users.txt,获得 SVN 作者的列表:

svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt1

根据svn帐号与git帐号的映射,补充users.txt为上述格式。

3、获取SVN的仓库到本地

通过 git svn clone 命令可以把整个 SVN 仓库导入到一个本地的 git 仓库中, 但这样导入的代码提交历史很糟糕, 需要做一些处理. 在 clone 后面添加 –no-metadata 来阻止 git svn 包含那些 SVN 的附加信息。

同时为了获得更精确的提交者 ID 和邮箱, 添加 –authors-file 参数

git svn clone svn://ip端口/projectname --no-metadata --authors-file=users.txt projectname

cd projectname12

4、在GitLab上创建Git仓库

为 GitLab 上为 SVN 仓库创建对应的 Git 仓库,会生成如下的仓库地址:

git@gitlab:<group>/<projectname>.git1

5、添加远程git仓库

在本地,将上面创建的仓库服务器添加为远程服务器并且向它推送。

下面是新增远程服务器的例子:

git remote add origin git@gitlab:<group>/<projectname>.git1

6、 提交代码到git仓库

通过以下命令将本地代码提交到远程git仓库:

git push -u origin master

相似回答
大家正在搜