我正在使用SubGit将代码从SVN迁移到GIT。 我的一些SVN存储库构建为:
SVN-Repo
+ Project1
+ trunk
+ branches
+ tags
+ Project2
+ trunk
+ branches
+ tags
使用SubGit:
subgit import --svn-url <svn_server>/SVN-Repo/Project1 C:\GitRepos\SVN-Repo\Project1.git --username xxx --password xxx.
在我在本地仓库中克隆之后。
然后:
git clone <Git_server>/_git/GIT-Repo
git push -u origin --all
结果是在最后的GIT-Repo中我不知道&#39;有一个名为Project1的文件夹,就像我和SVN一样。 经过调查后,我找不到允许我创建这个Proejct1文件夹GIT仓库的命令。
你可以帮我吗?提前谢谢。
答案 0 :(得分:1)
有3个选项
选项1。您已经做过的事情(最合理的选择)。 将SVN中的两个项目转换为两个单独的Git存储库。 然后使用GitLab,Atlassian Bitbucket Server或任何其他Git服务器软件设置对存储库的访问。
选项2。将整个SVN存储库视为单个目录。
subgit configure --svn-url <svn_server>/SVN-Repo --layout directory C:\GitRepos\SVN-Repo\repo.git
subgit install C:\GitRepos\SVN-Repo\repo.git
然后你可以运行
subgit uninstall C:\GitRepos\SVN-Repo\repo.git
如果您不需要持续同步。在这种情况下,Git存储库将植根于SVN-Repo。
选项3。一个Git存储库,包含两个项目的分支。
subgit configure --svn-url <svn_server>/SVN-Repo C:\GitRepos\SVN-Repo\repo.git
然后修改repo.git/subgit/config
以设置
trunk = Project1/trunk:refs/heads/project1-master
branches = Project2/trunk:refs/heads/project2-master
branches = Project1/branches/*:refs/heads/project1-*
branches = Project2/branches/*:refs/heads/project2-*
shelves = shelves/*:refs/shelves/*
tags = Project1/tags/*:refs/tags/project1-*
tags = Project2/tags/*:refs/tags/project2-*
然后运行
subgit install C:\GitRepos\SVN-Repo\repo.git
然后你可以运行
subgit uninstall C:\GitRepos\SVN-Repo\repo.git
如果您不需要持续同步。
在这种情况下,您有1个Git存储库,其分支以project1-
和project2-
开头,对应于您的项目。您可以使用project1-
/ project2-
代替project1/
/ project2/
。
因此,根据您的需要,您可以选择以下3个选项中的一个,但第一个是最好的选项。
答案 1 :(得分:0)
对于SVN到git的一次性转换,我建议使用svn2git。这个名字有很多工具。可能最好的是https://github.com/svn-all-fast-export/svn2git的KDE。要预先分析SVN repo历史记录以构建适用于svn2git的规则,您可以从此处使用svneverever:http://blog.hartwork.org/?p=763。
我已经将这几个SVN回购转换为Git并且做得非常好。
您可以使用prefix
规则获取所需的子目录。