【问题标题】:Sanitise Commit Output from Log?清理日志中的提交输出?
【发布时间】:2019-06-07 12:38:09
【问题描述】:

我正在尝试使用单个命令从 git 获取数据,因为多次调用 git 似乎非常慢。我想要来自提交、哈希、作者、日期、消息等的基本数据......问题在于消息以及它们可以包含任何内容的事实。它们可以包含我在字段之间使用分隔符的符号。我还想保留提交消息中的新行。

git log --pretty=format:%H,%an,%ae,%aD,%B:

所以我会解析输出并简单地用':'分割来获取每个提交的信息,并用','分割来获取每个条目的信息。现在的问题是,如果提交消息有逗号或冒号,那么它会改变并破坏结果。

有什么方法可以清理%B 的输出,还是我只需要使用(希望)没人会使用或猜到的分隔符?

【问题讨论】:

    标签: git


    【解决方案1】:

    git log 会将结果输出到标准输出。如果将结果通过管道传输到另一个命令,那么您会将 stdout 中的所有内容解析为一个对象,而不是单独的提交。您必须自己在提交(和分隔)之间进行解析,可能通过指定的分隔符。

    我不想告诉你,你不能做你所要求的一切......如果你要删除需要在提交消息中保留换行符的要求,那么我们可以依赖结构化和提交消息之前的所有内容的一致格式,将它们中的每一个解析为单独的项目,然后解析提交消息。这依赖于每个逗号位于一致的位置(例如,电子邮件没有逗号,您记录的日期在星期几之后有一个逗号)。

    您还可以使用极不可能的分隔符,例如 ♡ 或 ?? 等不常见的表情符号(抱歉,布隆迪人)。我可以在我的终端中毫无问题地使用它们,它们以git log 格式字符串工作。

    如果您愿意使用其他工具,this post 建议使用gitlogg 进行更高级的 git 日志记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      相关资源
      最近更新 更多