Git-svn - import full history

时光总嘲笑我的痴心妄想 提交于 2019-12-18 02:45:52

问题


Problem

By default git svn clone imports history only from branch creation onwards, despite the fact, that history for files is present in SVN repository prior branch creation.

Our SVN branch was created by svn copy, if that matters.

My attempts

I've tried --no-minimize-url and --follow-parent, but without success. Produced Git repository is same as without these params, starting from branch creation.

Desired result

Git repository with full history from SVN repository creation.

Update

My actual command line was

git svn clone http://svnserver/repo/dir1/dir2/project

What helped was -T argument with resulting command:

git svn clone http://svnserver/repo/ -T dir1/dir2/project

回答1:


By default git svn clone imports history only from branch creation onwards, despite the fact, that history for files is present in svn repository prior branch creation.

Yes. that is true. git svn will only try to import branches as branches if it is told so. From the manpage of git-svn:

When cloning an SVN repository, if none of the options for describing the repository layout is used (--trunk, --tags, --branches, --stdlayout), git svn clone will create a git repository with completely linear history, where branches and tags appear as separate directories in the working copy.

If you pass the URL for one branch to git svn clone (instead of the top-level URL), you'll only get the linear history for that branch. That is probably what you are seeing.

If you want full history, use the repository layout options mentioned above, and pass the top-level URL. Then git svn will try to create git branches for SVN branches, and will try to give them the right history, going back before their creation.

Note that this will give you the complete repository with all branches. If you only want some branches, you need to modify your configuration as explained in the manpage:

It is also possible to fetch a subset of branches or tags by using a comma-separated list of names within braces. For example:

       [svn-remote "huge-project"]
               url = http://server.org/svn
               fetch = trunk/src:refs/remotes/trunk
               branches = branches/{red,green}/src:refs/remotes/branches/*
               tags = tags/{1.0,2.0}/src:refs/remotes/tags/*

See git-svn(1).




回答2:


http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git describes how to import branches and tags properly.



来源:https://stackoverflow.com/questions/15163916/git-svn-import-full-history

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!