Git SVN迁移时init后仅获取trunk,如何保留原SVN目录结构?
解决方案
当然可行,你之前用--stdlayout只拉取到trunk内容,是因为这个参数会自动把SVN的trunk映射为Git主分支,branches下的子目录映射为Git分支,不会保留原有的目录结构。要保留SVN完整目录结构,按以下步骤操作:
- 清理现有仓库(如果之前已初始化过):删除当前目录下的
.git文件夹,从头开始。 - 初始化Git-SVN仓库,不要使用
--stdlayout参数:git svn init svn://example.com/project --no-metadata - 编辑
.git/config文件,找到[svn-remote "svn"]区块,修改fetch规则为拉取SVN根目录的全部内容:[svn-remote "svn"] url = svn://example.com/project fetch = :refs/remotes/origin/main - 执行拉取命令:
git svn fetch
完成后,你的Git仓库里就会和原SVN结构完全一致,包含branches和trunk两个子目录,以及它们下面的所有文件。后续如果要同步SVN的更新,直接运行git svn fetch即可,目录结构会保持和SVN一致。
内容的提问来源于stack exchange,提问作者zhemaitis
相关产品推荐
相关产品推荐

