当修订跨分支重叠时,使用 svn log 提取标签之间的提交消息

Posted

技术标签:

【中文标题】当修订跨分支重叠时,使用 svn log 提取标签之间的提交消息【英文标题】:using svn log to extract commit messages between tags when revisions overlap across branches 【发布时间】:2013-02-10 12:15:39 【问题描述】:

我总是使用 svn log 命令,例如svn log -rXXXX:YYYY 来获取我的 SVN 存储库中两个标签之间的提交消息。

我有时会发现的问题是,如果我正在执行一个大型发布,其中包括从一个从未发布到该环境的分支发布一个标签,那么在提取准确的提交消息列表之前我可能会遇到问题。

例如,我希望释放 01.02.03 (r4152) 和 01.03.02 (r4272) 之间的差异,现在正常的 svn log -r4152:4272 在这里可能看起来很明显,但 02.03 分支从来没有之前发布(无论如何都针对这个环境),所以我注意到 01.03.01 的修订版是 4126,它早于标签 01.02.03。

所以我是第一次从01.03 分支发布代码,所以我需要能够提取适用于该分支的所有内容的修订消息,而不仅仅是数字修订差异。

有没有办法使用svn log 命令来做到这一点?

【问题讨论】:

你能找到解决办法吗? 【参考方案1】:

我不确定我是否 100% 理解您的要求,但如果您还没有,请考虑以下事项。

Below 使用您从不同位置引用的log 命令来尝试获得您想要的。这当然取决于您的 SVN 目录结构,因此它可能有帮助,也可能没有帮助,具体取决于您的设置方式。

例如,如果您的 SVN 存储库看起来像:

 /someproject
    /devbranch
    /01.02.03release
    /01.03.02release
    /somethingneverused

如果您随后将/someproject 映射到本地文件夹,那么您应该能够通过命令行转到该文件夹​​并从该目录及其子目录运行svn log -r4152:4272 命令。只有处于该级别或以下的项目才会显示在日志中。

如果这还不足以满足您的需求,那么您可以使用一些逻辑从/someproject 中提取所有日志,然后运行脚本从/someproject/somethingneverused 中删除日志

【讨论】:

以上是关于当修订跨分支重叠时,使用 svn log 提取标签之间的提交消息的主要内容,如果未能解决你的问题,请参考以下文章

svn log 显示合并文件的变化

使用xslt从日志xml中提取svn修订

通过分发目标文件加速编译

SVN 分支比较

尝试从分支合并时出现 SVN 错误

使用没有主干标签和分支的 SVN 存储库从 SVN 迁移到 Git