svn - 将 svn 转换为 git,如何让分支在 svn 仓库中不只是远程?

标签 svn git git-svn

我是 git 的新手,我正在尝试将 svn 存储库移动到 git。我遵循了下面的指南,所以现在我的服务器上有了一个 git 仓库
http://pauldowman.com/2008/07/26/how-to-convert-from-subversion-to-git/

所以,如果我执行“git branch”,git 回复“* master”,如果我执行“git branch -r”,我会得到 svn 存储库中所有分支的列表。

我最后一次 svn-checkins 在其中一个分支中,但是当我执行“git svn clone”时,我在该分支中的提交(它们尚未 merge 到主干中)在我的(git ) 主分支。我在这里缺少什么?

此外,如果我在我的开发机器上执行“git clone”,我可以正常获取文件。但是,如果我执行“git branch -r”,我只能看到主分支,而看不到远程分支。

由于我们要一起摆脱 svn-repo,我希望在 git-repo 中拥有所有 svn 分支,以便可以从开发人员客户端访问它们。

再说一次,我不是一个完全的 git 新手,但离它不远。因此,如果我在这里遗漏了一些基本的东西,请告诉我。

更新
在做了一些 RTFM (man git-svn) 之后,我解决了主分支中存在的分支内容的第一个问题

reset --hard remotes/trunk

现在trunk和master分支是一样的了。现在,接下来就是弄清楚如何从开发客户端获取分支。

更新 2
我通过结合上面的 url 和 Scott 指向的 url 来让它工作。所以,从头开始。

我首先在服务器上创建了一个空存储库,它们保存在我们服务器上的/usr/local/git-repos 中:

server> cd /usr/local/git-repos
server> mkdir my_project.git
server> cd my_project.git
server> git init

然后我将 svn-repository 克隆到我的开发机器(注意,在我们的 svn 服务器上,“分支”目录被称为“分支”witout 's'):

dev> git svn clone http://<svn.server>/my_project --no-metadata -A authors.txt -t tags -b branch -T trunk my_project

然后进行一些清理以按顺序获取标签和分支:

dev> cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
dev> rm -Rf .git/refs/remotes/tags
dev> cp -Rf .git/refs/remotes/* .git/refs/heads/
dev> rm -Rf .git/refs/remotes

现在将我的服务器添加为远程存储库:

dev> git remote add origin jorgen@<our_server>:/usr/local/git-repos/my_project.git

最后,将所有分支和标签推送到服务器:

dev> git push origin --all

哇,现在你有了它,现在我可以摆脱那个 svn-repo。

更新 3
checkout ebneters post下面是一种更简单的方法......

最佳答案

这里有一个关于如何做一个非常好的 SVN 导入的相当详细的解释,解释了如何正确地转换分支:

https://git-scm.com/book/en/v1/Git-and-Other-Systems-Migrating-to-Git

简短的回答是运行这个:

$ cp -Rf .git/refs/remotes/* .git/refs/heads/
$ rm -Rf .git/refs/remotes

希望对您有所帮助。

关于svn - 将 svn 转换为 git,如何让分支在 svn 仓库中不只是远程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1584675/

相关文章:

git - 如何使用绝对路径和符号链接(symbolic link)解决 git add 中的问题

git - 获取已使用 git-svn 重命名的 SVN 存储库的完整历史记录

svn - git svn 看门人存储库

python - Python 脚本中的 SVN Propset

windows - SVN服务器主机操作系统

jenkins - SonarQube 不能怪文件

windows - SVN 无法提交 svn 不要求用户名密码

git - 是否可以将 git commit 设置为具有 1970 年之前的时间戳?

svn - 如何使用 Subversion 获得 master-master 复制?

svn - svn如何以其他用户身份提交?