mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-20 15:48:26 +00:00
Include signatures in blame hunks
This commit is contained in:
parent
ebd67243d5
commit
c1ca2b67e1
@ -128,22 +128,20 @@ int main(int argc, char *argv[])
|
|||||||
while (i < git_blob_rawsize(blob)) {
|
while (i < git_blob_rawsize(blob)) {
|
||||||
const char *eol = strchr(rawdata+i, '\n');
|
const char *eol = strchr(rawdata+i, '\n');
|
||||||
char oid[10] = {0};
|
char oid[10] = {0};
|
||||||
git_commit *hunkcommit;
|
|
||||||
const git_signature *sig;
|
|
||||||
const git_blame_hunk *hunk = git_blame_get_hunk_byline(blame, line);
|
const git_blame_hunk *hunk = git_blame_get_hunk_byline(blame, line);
|
||||||
|
|
||||||
if (hunk) {
|
if (hunk) {
|
||||||
|
char sig[128] = {0};
|
||||||
|
|
||||||
git_oid_tostr(oid, 10, &hunk->final_commit_id);
|
git_oid_tostr(oid, 10, &hunk->final_commit_id);
|
||||||
check(git_commit_lookup(&hunkcommit, repo, &hunk->final_commit_id), "Commit lookup error");
|
snprintf(sig, 30, "%s <%s>", hunk->final_signature->name, hunk->final_signature->email);
|
||||||
sig = git_commit_author(hunkcommit);
|
|
||||||
|
|
||||||
printf("%s ( %-30s %3d) %.*s\n",
|
printf("%s ( %-30s %3d) %.*s\n",
|
||||||
oid,
|
oid,
|
||||||
sig->name,
|
sig,
|
||||||
line,
|
line,
|
||||||
(int)(eol-rawdata-i),
|
(int)(eol-rawdata-i),
|
||||||
rawdata+i);
|
rawdata+i);
|
||||||
git_commit_free(hunkcommit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i = eol - rawdata + 1;
|
i = eol - rawdata + 1;
|
||||||
|
@ -103,10 +103,12 @@ typedef struct git_blame_hunk {
|
|||||||
|
|
||||||
git_oid final_commit_id;
|
git_oid final_commit_id;
|
||||||
uint16_t final_start_line_number;
|
uint16_t final_start_line_number;
|
||||||
|
git_signature *final_signature;
|
||||||
|
|
||||||
git_oid orig_commit_id;
|
git_oid orig_commit_id;
|
||||||
const char *orig_path;
|
const char *orig_path;
|
||||||
uint16_t orig_start_line_number;
|
uint16_t orig_start_line_number;
|
||||||
|
git_signature *orig_signature;
|
||||||
|
|
||||||
char boundary;
|
char boundary;
|
||||||
} git_blame_hunk;
|
} git_blame_hunk;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "git2/tree.h"
|
#include "git2/tree.h"
|
||||||
#include "git2/diff.h"
|
#include "git2/diff.h"
|
||||||
#include "git2/blob.h"
|
#include "git2/blob.h"
|
||||||
|
#include "git2/signature.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "repository.h"
|
#include "repository.h"
|
||||||
#include "blame_git.h"
|
#include "blame_git.h"
|
||||||
@ -80,6 +81,8 @@ static git_blame_hunk* dup_hunk(git_blame_hunk *hunk)
|
|||||||
static void free_hunk(git_blame_hunk *hunk)
|
static void free_hunk(git_blame_hunk *hunk)
|
||||||
{
|
{
|
||||||
git__free((void*)hunk->orig_path);
|
git__free((void*)hunk->orig_path);
|
||||||
|
git_signature_free(hunk->final_signature);
|
||||||
|
git_signature_free(hunk->orig_signature);
|
||||||
git__free(hunk);
|
git__free(hunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,6 +255,7 @@ static git_blame_hunk* hunk_from_entry(git_blame__entry *e)
|
|||||||
git_blame_hunk *h = new_hunk(
|
git_blame_hunk *h = new_hunk(
|
||||||
e->lno+1, e->num_lines, e->s_lno+1, e->suspect->path);
|
e->lno+1, e->num_lines, e->s_lno+1, e->suspect->path);
|
||||||
git_oid_cpy(&h->final_commit_id, git_commit_id(e->suspect->commit));
|
git_oid_cpy(&h->final_commit_id, git_commit_id(e->suspect->commit));
|
||||||
|
h->final_signature = git_signature_dup(git_commit_author(e->suspect->commit));
|
||||||
h->boundary = e->is_boundary ? 1 : 0;
|
h->boundary = e->is_boundary ? 1 : 0;
|
||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user