【问题标题】:Doxygen for local repo用于本地回购的 Doxygen
【发布时间】:2016-07-07 04:05:12
【问题描述】:

目前,我在远程服务器中有一个没有详细记录的代码存储库,名为“A”。
我有它的本地克隆,称为''B''。

我想陪以下两件事:

  1. 将 Doxygen 样式的 cmets 添加到 ''B'' 以生成文档。
  2. 将变更集推送到 ''A'',而 ''B'' 中没有这些 cmets。

设置回购/分支以实现这一目标的最佳方式是什么?

【问题讨论】:

  • 我看到在编辑中添加了 git 和 svn 标签。如果您特别询问如何在 mercurial 中实现这一点,我建议您在问题中指定并删除 svn 和 git 标签

标签: git svn version-control mercurial


【解决方案1】:

您可以在B 中设置第二个分支:

  • 可用于合并B的主分支,其中添加了那些Doxygen风格的注释(即:从主分支合并到第二个分支)
  • 但有一个激活smudge content filter driver 的配置,smudge 是一个删除所有 Doxygen cmets 的脚本(也就是说,如果这些 cmets 易于解析和检测)

(图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)

这涉及到一个.gitattributes 文件(仅存在于第二个分支中)

*.cpp filter=removeDoxygen

(将 cpp 替换为您的项目源代码的正确扩展名)

这涉及到本地配置:

 git config filter.removeDoxygen.smudge 'removeDoxygen'

removeDoxygen$PATH 中任意位置的 shell 脚本。
(即使在 Windows 上也可以是一个 shell 脚本,因为它将由 msysgit shell 执行)

该合并将导致文件自动修改(通过smudge 脚本),并且需要在第二个分支中添加和提交。

然后将第二个分支推送到 repo A

【讨论】:

  • 更具体到我的用户案例:''A'' 由 mercurial 维护,''A'' 中的一些代码已经具有 doxygen 样式注释。这里最好的操作是什么?
  • @user103500 我假设是由 git 管理的。 repo B 没有任何变化:cmets 将在第二个分支中删除。当推回到 A (hg-git.github.io) 时,这些 cmets 应该保持消失。
  • @user103500 如果 B 不是直接从 A 克隆的,我建议推送到 A 中的新分支,然后在 mercurial repo A 中进行 mercurial 合并。
  • 当我向上游推送时,我不想删除 ''A'' 中的原始 cmets。当我向上游推进时,我确实想在“B”中删除我的 cmets。在我的例子中,''B'' 是直接从 ''A'' 克隆而来的。
  • @user103500 B 是 git repo 吗?
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
相关资源
最近更新 更多