From 7491c424a00f0824f1d45b33d3b3f55fb0a7c4d8 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Tue, 11 Feb 2025 20:50:17 +0800 Subject: [PATCH] repo_commit: Show chunks --- handle_repo_commit.go | 22 +++++++++++++++++----- static/style.css | 14 +++++++++++++- templates/repo_commit.html.tmpl | 19 ++++++++++++++++--- diff --git a/handle_repo_commit.go b/handle_repo_commit.go index c7bdf9fc97bd6bf52f59cd5f1692ec4c52c3c3ff..3a6320158318a5468a2fc3c2122de486044cacdc 100644 --- a/handle_repo_commit.go +++ b/handle_repo_commit.go @@ -4,7 +4,14 @@ import ( "net/http" "github.com/go-git/go-git/v5/plumbing" + "github.com/go-git/go-git/v5/plumbing/format/diff" ) + +type usable_file_patch struct { + From diff.File + To diff.File + Chunks []diff.Chunk +} func handle_repo_commit(w http.ResponseWriter, r *http.Request) { data := make(map[string]any) @@ -38,12 +45,17 @@ return } data["patch"] = patch - /* - for _, file_patch := range patch.FilePatches() { - for _, chunk := range file_patch.Chunks() { - } + usable_file_patches := make([]usable_file_patch, 0) + for _, file_patch := range patch.FilePatches() { + from, to := file_patch.Files() + usable_file_patch := usable_file_patch{ + Chunks: file_patch.Chunks(), + From: from, + To: to, } - */ + usable_file_patches = append(usable_file_patches, usable_file_patch) + } + data["file_patches"] = usable_file_patches err = templates.ExecuteTemplate(w, "repo_commit", data) if err != nil { diff --git a/static/style.css b/static/style.css index af5a9b366e48a34fde41ffbd8e1bbf869fb38398..e37ad0d4307e5052a40b50edae00e8fb0606f11f 100644 --- a/static/style.css +++ b/static/style.css @@ -88,7 +88,7 @@ } .commit-id { font-family: monospace; } -pre, .scroll { +.scroll { overflow-x: auto; } .toggle-table-off, .toggle-table-on { @@ -112,3 +112,15 @@ } .toggle-table-on:checked + table > tbody { display: table-row-group; } +.chunk-unchanged { + color: grey; +} +.chunk-addition { + color: green; +} +.chunk-deletion { + color: red; +} +.chunk-unknown { + color: yellow; +} diff --git a/templates/repo_commit.html.tmpl b/templates/repo_commit.html.tmpl index c480c926b1a23a93c3f27db2dc2d7c9ada7ecbe3..edc4bc3c248167e88195916e7d35a4ca521570f9 100644 --- a/templates/repo_commit.html.tmpl +++ b/templates/repo_commit.html.tmpl @@ -42,9 +42,22 @@
-
{{ .patch }}
-

-

+ {{ range .file_patches }} +
+ {{ .From.Path }} {{ .From.Mode }} → {{ .To.Path }} {{ .To.Mode }} + {{ range .Chunks }} + {{ if eq .Type 0 }} +
{{ .Content }}
+ {{ else if eq .Type 1 }} +
{{ .Content }}
+ {{ else if eq .Type 2 }} +
{{ .Content }}
+ {{ else }} +
{{ .Content }}
+ {{ end }} + {{ end }} +
+ {{ end }}