我可以将 trac 从 SVN 迁移到 Git 存储库而不导出 + 创建新的 trac 实例吗?
Can I migrate trac from SVN to Git repositories without exporting + creating a new trac instance?
我们考虑从 SVN 迁移到 Git 并且由于 trac 支持两者,我们可以只更改存储库的地址以使用 Git 吗?我找到的所有文档都在两个 SVN 实例之间。
如果不是那么简单,那么从 wiki 和票证迁移数据需要哪些步骤?我找到了一个脚本,用于将票证中的引用更改为 Git 的哈希等价物,但我猜那会在之后出现。
提前致谢
是的,您可以将 Trac 连接到 Git 存储库而无需重新创建环境。向现有环境添加存储库是一项常见操作,Trac 支持多个存储库,前提是您使用的是 Trac 0.12 或更高版本。我假设您使用的是 Trac 0.12 或更高版本。
如果您使用的是 Trac 0.12 或更高版本并且已经通过 trac.ini 的 [repositories]
部分或使用存储库管理页面 /admin/versioncontrol/repository
定义了存储库配置,您可以简单地修改更改存储库 path
和 type
的配置。确保您已在 trac.ini 的 [components]
部分启用了可选的 Git 连接器:tracopt.versioncontrol.git.* = enabled
.
但是,如果您之前使用过 < 0.12 的 Trac 版本,它可能会更复杂。在 Trac 0.12 之前,只支持一个存储库,它在 [trac] repository_dir
选项中指定。如果您的配置仍然使用此选项,您应该更新您的配置以使用 trac.ini 的 [repositories]
部分。如果升级到 Trac 1.2 或更高版本,这应该在执行 trac-admin
升级命令升级环境时自动发生(参见 TracUpgrade)。
[repositories]
部分中的存储库是使用语法 name.attribute = value
定义的。 name
是您为存储库指定的任何名称。如果省略名称,则指的是默认存储库(语法为 .attribute = value
)。必需的属性是 path
和 type
(技术上可能不需要类型,因为还有一个 "default type",但为了简单起见,假设它是必需的)。
如果您的旧配置如下所示:
[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 页面上找到更多信息。
我们考虑从 SVN 迁移到 Git 并且由于 trac 支持两者,我们可以只更改存储库的地址以使用 Git 吗?我找到的所有文档都在两个 SVN 实例之间。
如果不是那么简单,那么从 wiki 和票证迁移数据需要哪些步骤?我找到了一个脚本,用于将票证中的引用更改为 Git 的哈希等价物,但我猜那会在之后出现。
提前致谢
是的,您可以将 Trac 连接到 Git 存储库而无需重新创建环境。向现有环境添加存储库是一项常见操作,Trac 支持多个存储库,前提是您使用的是 Trac 0.12 或更高版本。我假设您使用的是 Trac 0.12 或更高版本。
如果您使用的是 Trac 0.12 或更高版本并且已经通过 trac.ini 的 [repositories]
部分或使用存储库管理页面 /admin/versioncontrol/repository
定义了存储库配置,您可以简单地修改更改存储库 path
和 type
的配置。确保您已在 trac.ini 的 [components]
部分启用了可选的 Git 连接器:tracopt.versioncontrol.git.* = enabled
.
但是,如果您之前使用过 < 0.12 的 Trac 版本,它可能会更复杂。在 Trac 0.12 之前,只支持一个存储库,它在 [trac] repository_dir
选项中指定。如果您的配置仍然使用此选项,您应该更新您的配置以使用 trac.ini 的 [repositories]
部分。如果升级到 Trac 1.2 或更高版本,这应该在执行 trac-admin
升级命令升级环境时自动发生(参见 TracUpgrade)。
[repositories]
部分中的存储库是使用语法 name.attribute = value
定义的。 name
是您为存储库指定的任何名称。如果省略名称,则指的是默认存储库(语法为 .attribute = value
)。必需的属性是 path
和 type
(技术上可能不需要类型,因为还有一个 "default type",但为了简单起见,假设它是必需的)。
如果您的旧配置如下所示:
[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 页面上找到更多信息。