如何使用 SubGit 在同步的 SVN 存储库中找到 Git 修订散列?

How to find the Git Revision Hash in a synced SVN repo using SubGit?

在从 SVN 迁移到 git 的过程中,我们正在评估 Stash 中的 SVN Mirror Stash plugin (SubGit)。

我们的要求之一是 git 修订散列在 SVN 存储库中可用,可以在自定义 revprop 中,也可以通过 JSON 格式的日志消息。

基本上我正在尝试做与 中描述的相反的事情。

我控制了 git 存储库和 svn 存储库,我很乐意编写自定义挂钩/脚本,但我一直无法找到插入此挂钩的合适位置,在 subgit 或 stash 文档中。我也对插入此类功能的最佳实践非常感兴趣。

@Brilliantnut and support@subgit.com:

之间讨论这个问题后的简短总结

我们的团队已决定支持保留相应 Git 提交的元数据信息的特殊类型的修订属性:作者、提交者、时间戳、提交 ID 等。

一旦我们发布实现了此功能的新版本,我会立即更新此答案。

更新:

为了在 Subversion 存储库中设置 Git 特定修订属性,调整 SubGit 配置文件如下:

$ edit GIT_REPO/subgit/config

[svn]
    ...
    revisionProperties = committer, author, date, log, commit
    ...

然后 运行 subgit install 以激活此配置更新:

$ subgit install GIT_REPO

之后,SubGit 为它从 Git 转换为 SVN 的每个修订设置以下属性:

subgit:committer="Git Committer <git.committer@company.com>"
subgit:author="Git Author <git.author@company.com>"
subgit:date="2015-06-10 16:46:01 +0400"
subgit:log="fix foo"
subgit:commit=9039c430e12d25c3ef250c8e49c4a57877c36343

您还可以通过调整配置选项来选择要设置的属性:

[svn]
    ...
    revisionProperties = date, log, commit
    ...

此功能存在以下限制:

  1. subgit:* 修订属性未设置在 SVN 用户提交且未从 SubGit;Git;

    提交的 Git 转换而来的那些修订上
  2. 如果一个 adds/removes 新的 Git 分支或标记已经与 SVN 存储库同步,SubGit 会创建一个新的 SVN 修订版,其中有没有 subgit:* 属性集。