xaizek / zograscope (License: AGPLv3 only) (since 2018-12-07)
Mainly a syntax-aware diff that also provides a number of additional tools.
Commit 71b362e7250e7a09d5cf7a1e68329040a1cf27e2

Print our header before executing git-diff
This way output stays consistent and user gets information about the
path.
Author: xaizek
Author date (UTC): 2022-05-16 09:06
Committer name: xaizek
Committer date (UTC): 2022-05-16 09:06
Parent(s): a1d50fcd637d6c0fe4d45d8c50c1916cf1f1b41b
Signing key: 99DC5E4DB05F6BE2
Tree: 8448230ecbd8beca8ad3b51cb958f56b794d47bb
File Lines added Lines deleted
tools/diff/diff.cpp 13 0
File tools/diff/diff.cpp changed (mode: 100644) (index 2d804b8..4fc146a)
... ... run(Environment &env, const Args &args)
196 196 static int static int
197 197 gitFallback(const Args &args) gitFallback(const Args &args)
198 198 { {
199 std::cout << "Parsing has failed, falling back to `git diff`\n";
200
201 // Print only a header by passing in an empty tree.
202 Node n;
203 std::unique_ptr<Language> l = Language::create(args.pos[0]);
204 Printer printer(n, n, *l, std::cout);
205 printer.addHeader({ args.pos[3], args.pos[6] });
206 printer.addHeader({ "a/" + args.pos[0], "b/" + args.pos[0] });
207 TimeReport tr;
208 printer.print(tr);
209
210 std::cout.flush();
211
199 212 if (args.pos[5] == std::string(40U, '0')) { if (args.pos[5] == std::string(40U, '0')) {
200 213 execlp("git", "git", "diff", "--no-ext-diff", args.pos[2].c_str(), execlp("git", "git", "diff", "--no-ext-diff", args.pos[2].c_str(),
201 214 "--", args.pos[0].c_str(), static_cast<char *>(nullptr)); "--", args.pos[0].c_str(), static_cast<char *>(nullptr));
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/zograscope

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/zograscope

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master