在javascript中将客户端的Git差异显示为html

Chr*_*mas 5 javascript git diff patch

所以,简而言之,我基本上是在寻找以下方面的信息:

  1. 一种将 Git 的 diff 格式(它通过 github api 为您提供)转换为某种 html 格式的方法,例如在实际的 github 网站上。如果没有这样的事情,
  2. 我想知道一些关于git的diff文件格式的信息,这样我就可以自己写了。

Von*_*onC 4

2017 年更新(2 年后)

Jaybeecave在评论中提到了工具diff2html.xyz,一个 diff 解析器和漂亮的 html 生成器。


git diff格式的灵感来自diff -p unix 命令。
(-p 代表--show-c-function:显示每个更改所在的 C 函数。)

正如我在“块头中的摘录来自哪里git diff? ”中解释的那样,该功能(“显示哪个 C 函数”)已经发展到考虑其他语言。

这与您使用 GitHub API 比较两个提交时patch在JSON 答案字段中看到的内容类似。 该功能于 2012 年 12 月推出

只需使用相同的资源 URL 并在标头中发送application/vnd.github.diff或即可:application/vnd.github.patchAccept

curl -H "Accept: application/vnd.github.diff" https://api.github.com/repos/pengwynn/dotfiles/commits/aee60a4cd56fb4c6a50e60f17096fc40c0d4d72c
Run Code Online (Sandbox Code Playgroud)

结果:

diff --git a/tmux/tmux.conf.symlink b/tmux/tmux.conf.symlink
index 1f599cb..abaf625 100755
--- a/tmux/tmux.conf.symlink
+++ b/tmux/tmux.conf.symlink
@@ -111,6 +111,7 @@ set-option -g base-index 1
 ## enable mouse
 set-option -g mouse-select-pane on
 set-option -g mouse-select-window on
+set-option -g mouse-resize-pane on
 set-window-option -g mode-keys vi
 set-window-option -g mode-mouse on
 # set-window-option -g monitor-activity off
Run Code Online (Sandbox Code Playgroud)

格式遵循经典的diff统一格式这里也有详细介绍)。您可以在(node.js 的 dtl(diff 模板库)绑定)
中查看示例cubicdaiya/node-dtl