在客户端以javascript格式显示Git diff作为html

时间:2015-01-24 22:16:26

标签: javascript git diff patch

所以,简而言之,我基本上是在寻找一些信息:

  1. 一种将Git的diff格式(它为你提供github api)转换成某种html格式的方法,就像在实际的github网站上一样。如果没有这样的话,
  2. 我想了解一下git的diff文件的格式,所以我可以自己编写。

1 个答案:

答案 0 :(得分:3)

2017年更新(2年后)

Jaybeecave提到了in the comments工具diff2html.xyz,一个差异解析器和漂亮的html生成器。


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

正如我在" Where does the excerpt in the git diff hunk header come from?"中解释的那样,该功能("显示哪个C功能")已经发展为考虑其他语言。

这类似于您在JSON答案when you compare two commits with the GitHub APIpatch字段中看到的内容。
该功能为introduced in December 2012

  

只需使用相同的资源网址,然后在application/vnd.github.diff标题中发送application/vnd.github.patchAccept

curl -H "Accept: application/vnd.github.diff" https://api.github.com/repos/pengwynn/dotfiles/commits/aee60a4cd56fb4c6a50e60f17096fc40c0d4d72c

结果:

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

格式遵循经典 diff unified format (也是detailed here)。
您可以在cubicdaiya/node-dtl中看到一个示例(node.js的dtl(diff模板库)绑定)