Git git svn 遇到一个让人抓狂的坑,

mogodb · 2015年01月31日 · 最后由 mogodb 回复于 2015年02月05日 · 11137 次阅读

svn 仓库没有写的权力。所以是 git svn clone 到本地,修改后 push 到 git 仓库。 现在从 git 仓库 clone 下项目,该如何取 svn 拉更新呢?

git svn rebase

#1 楼 @wtl 报错了

git svn rebase Migrating from a git-svn v1 layout... Data from a previous version of git-svn exists, but .git/svn (required for this version (1.7.1) of git-svn) does not exist. Done migrating from a git-svn v1 layout

Unable to determine upstream SVN information from working tree history

#2 楼 @mogodb 提示的很清楚了。git clone 下来的仓库没有对应的 svn 仓库的信息。

http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/

#3 楼 @larrylv [svn-remote "release-branch"] 手动添加,还是通过 git svn init 添加? 通过 git svn init 添加后,git svn fetch 怎么从 r1 开始下载?本地不是已经有 r1-r n 的代码了么?为何不是从 r n+1 开始 fetch?

#4 楼 @mogodb 文章第一步写了:

Define the new branch in .git/config

手动添加即可。

#5 楼 @larrylv 好像有问题 git svn clone -s svn:// git remote add origin xxx git push origin

git clone git://xxx git svn init -s svn:// 可以把 svn 信息写入.git/config 但是此时 git svn info 运行出问题,运行了很久,报错:说找不到 svn 信息 但是此时 git svn fetch 可以正常执行,不过从 r1 开始下载,这就奇怪了,从 git clone 来的代码不是包含很多 版本了么,为何要从 r1 开始下载? 此时 git svn find-rev r1 也报错,很奇怪啊

git svn clone -s -r 40000:HEAD https://svn.parrot.org/parrot # choose some recent-ish commit http://trac.parrot.org/parrot/wiki/git-svn-tutorial

你应该需要两个本地分支,一个是 svn_local,svn_local 只用来从 svn 仓库拉代码,因为你没有写权限;一个是 git_local,从 svn_local checkout 而来,然后你再把 git remote 加上,用这个分支开发以及从 svn_local 那 merge 代码,push 到 git remote。

#8 楼 @wtl 文档中的所有操作从 git svn clone 开始,并且最终也是用 git svn 命令提交到 svn 上去,这么操作显然没问题

但是,现在的操作是从 git clone 开始的,会有很多问题

  • 首先,如何知道 git clone 到本地的项目分支更新到 svn 哪个版本了

git clone 之后,git svn log 就报错了,

git svn log Migrating from a git-svn v1 layout... Data from a previous version of git-svn exists, but .git/svn (required for this version (1.7.1) of git-svn) does not exist. Done migrating from a git-svn v1 layout

fatal: bad default revision 'refs/remotes/git-svn'

需要 登录 后方可回复, 如果你还没有账号请 注册新账号