我正在尝试将SVN存储库转换为git。存储库由大约17000次提交组成,因此我使用的是KDE的svn2git (又名svn-all-fast-export)。
我的问题是存储库已经被重组了几次(首先它是从CVS转换而来的;vendor-branches已经被重命名了,.)
在项目转换为/trunk、/branches和/tag布局之前,需要一段时间,但是项目有大量的子模块,并且它们是有组织的。
/trunk/plugins/foo
/trunk/plugins/bar
/branches/plugins/foo/1.0
/branches/plugins/foo/1.1
/branches/plugins/bar/1.0
/tags/plugins/pizzapack/3.14/foo
/tags/plugins/pizzapack/3.14/foo所有这些子模块都包含子目录树。
/tags和/branches中的目录结构可能会随着时间的推移而改变,而且肯定不是很一致。
好消息是,svn2git允许我处理这一切。
坏消息是,在开始指导svn2git之前,我需要对目录/分支结构的演变进行概述。
因此,我正在寻找一种方法来分析文件系统布局的结构变化:添加、删除、复制和移动目录。
我目前正在考虑构建一个小型助手工具,以允许我这样做,但我已经被困在正确跟踪目录的变化。更不用说对这些变化的适当表述,这将使我很容易理解发生了什么。
你想出了什么,在处理这样一个项目时你用了什么?
发布于 2015-07-28 13:43:39
您可以尝试SubGit的版本3.0.0或更高版本来检测您的存储库结构。
$ subgit configure --svn-url <projectURL> --layout auto --trunk trunk repo.git其中--trunk选项指定从目录到在最新版本中扮演主干角色的目录的相对路径(没有前导或尾随斜杠,例如--trunk path/to/trunk或--trunk trunk;如果在最新版本中存储库具有经典的主干/分支/标记结构,则应该是--trunk trunk)。此命令将扫描存储库历史记录,跟踪指定的主干目录的所有移动、复制和重命名,并生成包含repo.git文件的subgit/config目录,其中反映了主干/分支/标记/货架选项中的存储库结构。请注意,该命令不会自动检测仅使用"svn“添加的分支,而不会检测"svn”/“svn”中添加的分支。
然后您可以开始使用SubGit进行翻译:
$ subgit install repo.git或者,您可以尝试复制和粘贴主干/分支/标记选项,生成到git-svn/svn2git配置文件中。我不确定第二种方法是否适用于100%的情况,但对于或多或少简单的存储库结构,这将起作用,因为生成的选项具有与相应的git-svn选项相同的格式。
免责声明:我是SubGit开发人员之一。SubGit是一个商业工具,但它是免费的一次性转换(导入)。
https://stackoverflow.com/questions/31676927
复制相似问题