如何将平面 svn repo 迁移到 git repo

use*_*112 5 svn git version-control git-svn svn2git

我有一个平面 svn 存储库,它看起来像:

my_repo/
??? file1.c
??? file2.c
??? file3.c
??? README
Run Code Online (Sandbox Code Playgroud)

这个 repo 没有分支或标签,我想要做的就是将它转换为 git 存储库并维护提交历史。

我试过了:

git svn clone --trunk=/ -A users.txt svn+ssh://user@svn.example.com/projects/my_repo dest_dir

我认为这会起作用,但是,当我导航dest_dir并执行时git svn fetch,它似乎没有获取任何东西。使用git log产量:

fatal: bad default revision 'HEAD'

如果我使用svn checkout svn+ssh://user@svn.example.com/projects/my_repo 它返回:

A    my_repo/file1.c
A    my_repo/file2.c
A    my_repo/file3.c
A    my_repo/README
Checked out revision 57.
Run Code Online (Sandbox Code Playgroud)

因此,存储库是活动的且可访问的。

我尝试了各种工具,包括subgit给我这个错误的工具:svn: E170003: 'stat' not implemented我认为这是因为托管存储库的服务器使用的是旧版本的 subversion。我无法控制服务器,因此无法执行更新。

我也试过使用svn2git, 使用命令

svn2git svn+ssh://user@svn.example.com/projects/my_repo --rootistrunk -authors users.txt --verbose

但这给了我另一个错误:

E: 'svn+ssh:/user@svn.example.com/projects/my_repo' is not a complete URL and a separate URL is not specified command failed

这让我很难过,我不知道为什么它不起作用。基本上我想知道如何在保持历史记录的同时将我的 svn repo 变成 git repo。希望有人可以帮助我,或指出我正确的方向。从未意识到将这个简单的 repo 转移到 git 会如此困难!

谢谢

Nic*_* K9 3

问题在于svn2git--rootistrunk论点。相反,试试这个:

svn2git svn+ssh://user@svn.example.com/projects/my_repo --trunk / --notags --nobranches --authors users.txt --verbose
Run Code Online (Sandbox Code Playgroud)