我可以将trac从SVN迁移到Git存储库而无需导出+创建新的trac实例吗?

时间:2016-05-02 10:09:13

标签: git svn version-control trac

我们考虑从SVN迁移到Git,并且由于trac支持两者,我们可以只更改存储库的地址以使用Git吗?我找到的所有文档都在两个SVN实例之间。

如果不是那么简单,从wiki和门票迁移数据需要哪些步骤?我找到了一个脚本,用于将票证中的引用更改为Git的哈希值,但是在我猜之后会出现。

提前致谢

1 个答案:

答案 0 :(得分:4)

是的,您可以将Trac连接到Git存储库而无需重新创建环境。将存储库添加到现有环境是一种常见操作,如果使用Trac 0.12或更高版本,Trac支持多个存储库。我假设您使用的是Trac 0.12或更高版本。

如果您使用的是Trac 0.12或更高版本,并且已经通过trac.ini的[repositories]部分或使用存储库管理页面/admin/versioncontrol/repository定义了存储库配置,则只需修改配置即可更改存储库pathtype。确保您已在trac.ini的[components]部分启用了可选的Git连接器:tracopt.versioncontrol.git.* = enabled

但是,如果您之前使用的是Trac版本< 0.12,可能会更复杂。在Trac 0.12之前,仅支持单个存储库,并在[trac] repository_dir选项中指定了该存储库。如果您的配置仍使用此选项,则应更新配置以使用trac.ini的[repositories]部分。如果升级到Trac 1.2或更高版本,则执行trac-admin升级命令以升级环境时会自动执行此操作(请参阅TracUpgrade)。

[repositories]部分中的存储库使用语法name.attribute = value定义。 name是您为存储库提供的任何名称。如果省略该名称,那么您将引用默认存储库(语法为.attribute = value)。所需属性为pathtype(技术上可能不需要类型,因为还有一个"默认类型",但为简单起见,假设它是必需的。)

如果您的旧配置如下所示:

[trac]
repository_dir = /path/to/repo/1
repository_type = svn

您的新配置将是:

[repositories]
.dir = /path/to/svn/repo
.type = svn

如果您的SVN存储库已不再连接到Trac,则可以将type更改为git。但是,常见的情况是将旧的SVN存储库连接到Trac,以便存储库的TracLinks继续运行(例如,[1]r1等变更集链接),并添加第二个存储库。在这种情况下,您的配置可能是:

[repositories]
.dir = /path/to/svn/repo
.type = svn
git-repo.dir = /path/to/git/repo
git-repo.type = git

用于引用多存储库环境中的命名存储库的TracLinks语法与引用默认存储库的语法不同。请参阅示例here

替代trac.ini的[repositories]部分,您可以通过存储库管理页面(admin/versioncontrol/repository)配置存储库。

可以在TracRepositoryAdmin页面找到更多信息。