mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 10:03:43 +00:00
Merge pull request #2885 from JIghtuse/master
describe example: function to add commits to opts
This commit is contained in:
commit
fe477951be
@ -13,6 +13,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The following example partially reimplements the `git describe` command
|
* The following example partially reimplements the `git describe` command
|
||||||
@ -46,6 +47,27 @@ typedef struct {
|
|||||||
|
|
||||||
typedef struct args_info args_info;
|
typedef struct args_info args_info;
|
||||||
|
|
||||||
|
static void *xrealloc(void *oldp, size_t newsz)
|
||||||
|
{
|
||||||
|
void *p = realloc(oldp, newsz);
|
||||||
|
if (p == NULL) {
|
||||||
|
fprintf(stderr, "Cannot allocate memory, exiting.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void opts_add_commit(describe_options *opts, const char *commit)
|
||||||
|
{
|
||||||
|
size_t sz;
|
||||||
|
|
||||||
|
assert(opts != NULL);
|
||||||
|
|
||||||
|
sz = ++opts->commit_count * sizeof(opts->commits[0]);
|
||||||
|
opts->commits = xrealloc(opts->commits, sz);
|
||||||
|
opts->commits[opts->commit_count - 1] = commit;
|
||||||
|
}
|
||||||
|
|
||||||
static void do_describe_single(git_repository *repo, describe_options *opts, const char *rev)
|
static void do_describe_single(git_repository *repo, describe_options *opts, const char *rev)
|
||||||
{
|
{
|
||||||
git_object *commit;
|
git_object *commit;
|
||||||
@ -96,9 +118,7 @@ static void parse_options(describe_options *opts, int argc, char **argv)
|
|||||||
const char *curr = argv[args.pos];
|
const char *curr = argv[args.pos];
|
||||||
|
|
||||||
if (curr[0] != '-') {
|
if (curr[0] != '-') {
|
||||||
size_t newsz = ++opts->commit_count * sizeof(opts->commits[0]);
|
opts_add_commit(opts, curr);
|
||||||
opts->commits = (const char **)realloc((void *)opts->commits, newsz);
|
|
||||||
opts->commits[opts->commit_count - 1] = curr;
|
|
||||||
} else if (!strcmp(curr, "--all")) {
|
} else if (!strcmp(curr, "--all")) {
|
||||||
opts->describe_options.describe_strategy = GIT_DESCRIBE_ALL;
|
opts->describe_options.describe_strategy = GIT_DESCRIBE_ALL;
|
||||||
} else if (!strcmp(curr, "--tags")) {
|
} else if (!strcmp(curr, "--tags")) {
|
||||||
@ -124,9 +144,7 @@ static void parse_options(describe_options *opts, int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!opts->format_options.dirty_suffix || !opts->format_options.dirty_suffix[0]) {
|
if (!opts->format_options.dirty_suffix || !opts->format_options.dirty_suffix[0]) {
|
||||||
size_t sz = ++opts->commit_count * sizeof(opts->commits[0]);
|
opts_add_commit(opts, "HEAD");
|
||||||
opts->commits = (const char **)malloc(sz);
|
|
||||||
opts->commits[0] = "HEAD";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user