mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 22:01:26 +00:00
Add basic commit formatting to log output
This commit is contained in:
parent
f094f9052f
commit
f44c4fa108
@ -117,6 +117,32 @@ static int add_revision(struct log_state *s, const char *revstr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void print_time(const git_time *intime, const char *prefix)
|
||||||
|
{
|
||||||
|
char sign, out[32];
|
||||||
|
struct tm intm;
|
||||||
|
int offset, hours, minutes;
|
||||||
|
time_t t;
|
||||||
|
|
||||||
|
offset = intime->offset;
|
||||||
|
if (offset < 0) {
|
||||||
|
sign = '-';
|
||||||
|
offset = -offset;
|
||||||
|
} else {
|
||||||
|
sign = '+';
|
||||||
|
}
|
||||||
|
|
||||||
|
hours = offset / 60;
|
||||||
|
minutes = offset % 60;
|
||||||
|
|
||||||
|
t = (time_t)intime->time + (intime->offset * 60);
|
||||||
|
|
||||||
|
gmtime_r(&t, &intm);
|
||||||
|
strftime(out, sizeof(out), "%a %b %d %T %Y", &intm);
|
||||||
|
|
||||||
|
printf("%s%s %c%02d%02d\n", prefix, out, sign, hours, minutes);
|
||||||
|
}
|
||||||
|
|
||||||
struct log_options {
|
struct log_options {
|
||||||
int show_diff;
|
int show_diff;
|
||||||
int skip;
|
int skip;
|
||||||
@ -125,7 +151,6 @@ struct log_options {
|
|||||||
git_time_t after;
|
git_time_t after;
|
||||||
char *author;
|
char *author;
|
||||||
char *committer;
|
char *committer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
@ -173,12 +198,39 @@ int main(int argc, char *argv[])
|
|||||||
paths.count = argc - i;
|
paths.count = argc - i;
|
||||||
|
|
||||||
while (!git_revwalk_next(&oid, s.walker)) {
|
while (!git_revwalk_next(&oid, s.walker)) {
|
||||||
|
const git_signature *sig;
|
||||||
|
const char *scan, *eol;
|
||||||
|
|
||||||
check(git_commit_lookup(&commit, s.repo, &oid),
|
check(git_commit_lookup(&commit, s.repo, &oid),
|
||||||
"Failed to look up commit", NULL);
|
"Failed to look up commit", NULL);
|
||||||
git_commit_free(commit);
|
|
||||||
|
|
||||||
git_oid_tostr(buf, sizeof(buf), &oid);
|
git_oid_tostr(buf, sizeof(buf), &oid);
|
||||||
printf("%s\n", buf);
|
printf("commit %s\n", buf);
|
||||||
|
|
||||||
|
if ((count = (int)git_commit_parentcount(commit)) > 1) {
|
||||||
|
printf("Merge:");
|
||||||
|
for (i = 0; i < count; ++i) {
|
||||||
|
git_oid_tostr(buf, 8, git_commit_parent_id(commit, i));
|
||||||
|
printf(" %s", buf);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((sig = git_commit_author(commit)) != NULL) {
|
||||||
|
printf("Author: %s <%s>\n", sig->name, sig->email);
|
||||||
|
print_time(&sig->when, "Date: ");
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
for (scan = git_commit_message(commit); scan && *scan; ) {
|
||||||
|
for (eol = scan; *eol && *eol != '\n'; ++eol) /* find eol */;
|
||||||
|
|
||||||
|
printf(" %.*s\n", (int)(eol - scan), scan);
|
||||||
|
scan = *eol ? eol + 1 : NULL;
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
git_commit_free(commit);
|
||||||
}
|
}
|
||||||
|
|
||||||
git_revwalk_free(s.walker);
|
git_revwalk_free(s.walker);
|
||||||
|
Loading…
Reference in New Issue
Block a user