diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/deliverable.c | 7 | ||||
-rw-r--r-- | src/utils.c | 22 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/deliverable.c b/src/deliverable.c index 9b5d94d..e1179a4 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -1302,7 +1302,12 @@ void delivery_tests_run(struct Delivery *ctx) { } } msg(OMC_MSG_L3, "Cloning repository %s\n", ctx->tests[i].repository); - git_clone(&proc, ctx->tests[i].repository, destdir, ctx->tests[i].version); + if (!git_clone(&proc, ctx->tests[i].repository, destdir, ctx->tests[i].version)) { + ctx->tests[i].repository_info_tag = strdup(git_describe(destdir)); + ctx->tests[i].repository_info_ref = strdup(git_rev_parse(destdir, "HEAD")); + } else { + COE_CHECK_ABORT(!globals.continue_on_error, "Unable to clone repository\n") + } if (pushd(destdir)) { COE_CHECK_ABORT(!globals.continue_on_error, "Unable to enter repository directory\n") diff --git a/src/utils.c b/src/utils.c index 12cf22c..d8cf929 100644 --- a/src/utils.c +++ b/src/utils.c @@ -377,7 +377,27 @@ char *git_describe(const char *path) { pushd(path); static char version[NAME_MAX]; FILE *pp; - pp = popen("git describe --always --tags", "r"); + pp = popen("git describe --first-parent --always --tags", "r"); + memset(version, 0, sizeof(version)); + fgets(version, sizeof(version) - 1, pp); + strip(version); + pclose(pp); + popd(); + return version; +} + +char *git_rev_parse(const char *path, char *args) { + pushd(path); + static char version[NAME_MAX]; + char cmd[PATH_MAX]; + FILE *pp; + + if (isempty(args)) { + fprintf(stderr, "git_rev_parse args cannot be empty"); + return NULL; + } + sprintf(cmd, "git rev-parse %s", args); + pp = popen(cmd, "r"); memset(version, 0, sizeof(version)); fgets(version, sizeof(version) - 1, pp); strip(version); |