git svn克隆SVN存储库的单个目录

oco*_*or0 35 svn git version-control git-svn

我试图用来将git svnSVN存储库的单个目录克隆到Git存储库中.

如果我使用git svn clone svn+ssh://path/to/repo/trunk/directory,我得到一个没有分支的Git仓库,它反映了源SVN仓库中的分支.

如果我使用git svn --stdlayout svn+ssh://path/to/repo/trunk/directory,我得到一个空的Git回购.以下是命令的输出:

Initialized empty Git repository in /directory/.git/
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/trunk/directory'
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
Run Code Online (Sandbox Code Playgroud)

我已经读过,解决上述问题的方法是添加一个修订范围-r 1000:HEAD,这仍然会产生一个空的回购.输出是:

Initialized empty Git repository in /directory/.git/
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo
Run Code Online (Sandbox Code Playgroud)

关于如何使用git-svn克隆SVN存储库子目录的任何想法仍然从源SVN存储库中获取所有分支和标记?

Myk*_*rov 54

你不想要标准布局,你想要这样的东西:

git svn clone svn+ssh://path/to/repo/ --trunk=trunk/directory --branches=branches/*/directory --tags=tags/*/directory
Run Code Online (Sandbox Code Playgroud)

  • 这里的见解是你可以在`--branches`参数中使用通配符.好的. (8认同)
  • 只需注意 - 如果您没有该特定目录的分支或标签,那么您可以安全地省略`--branches`和`--tags`参数.那只是使用`--trunk = ...`而不是`--stdlayout`应该可以正常工作. (4认同)
  • 我可以使用多个`directory`值而不是只有一个吗?最好使用特定目录名称列表.背景:通过子目录将单个SVN存储库拆分为多个Git存储库(同时仅迁移这些子目录的历史记录而不是整个SVN存储库). (2认同)

小智 31

准备并进入本地项目目录:

mkdir local/project/path
cd local/project/path
Run Code Online (Sandbox Code Playgroud)

使用svn remote初始化本地git存储库并获取数据:

git svn init http://my_svn_server.com/repository/project/location
git svn fetch
Run Code Online (Sandbox Code Playgroud)

归功于GabrielSaldaña:http://blog.gabrielsaldana.org/using-git-with-subversion-repository-subdirectory/

  • 这是否只是让您获得 svn 项目的当前内容或所有历史记录? (3认同)
  • 请注意,这不允许添加用户(作者)映射文件.至少不是`-A`. (2认同)