Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
cvsps
commitid.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File commitid.diff of Package cvsps
diff --git a/cache.c b/cache.c index 5f67a7c..762cfb7 100644 --- a/cache.c +++ b/cache.c @@ -89,6 +89,7 @@ enum CACHE_NEED_PS_TAG_FLAGS, CACHE_NEED_PS_BRANCH, CACHE_NEED_PS_BRANCH_ADD, + CACHE_NEED_PS_COMMITID_OR_DESCR, CACHE_NEED_PS_DESCR, CACHE_NEED_PS_EOD, CACHE_NEED_PS_MEMBERS, @@ -108,6 +109,7 @@ time_t read_cache() int tag_flags = 0; char branchbuff[LOG_STR_MAX] = ""; int branch_add = 0; + char cidbuff[CID_STR_MAX] = ""; int logbufflen = LOG_STR_MAX + 1; char * logbuff = malloc(logbufflen); time_t cache_date = -1; @@ -286,9 +288,19 @@ time_t read_cache() /* remove prefix "branch_add: " and LF from len */ len -= 12; branch_add = atoi(buff + 12); - state = CACHE_NEED_PS_DESCR; + state = CACHE_NEED_PS_COMMITID_OR_DESCR; } break; + case CACHE_NEED_PS_COMMITID_OR_DESCR: + if (strncmp(buff, "commitid:", 9) == 0) + { + /* remove prefix "commitid: " and LF from len */ + len -= 10; + strzncpy(cidbuff, buff + 10, MIN(len, CID_STR_MAX)); + state = CACHE_NEED_PS_DESCR; + break; + } + /* FALLTHROUGH */ case CACHE_NEED_PS_DESCR: if (strncmp(buff, "descr:", 6) == 0) state = CACHE_NEED_PS_EOD; @@ -296,8 +308,8 @@ time_t read_cache() case CACHE_NEED_PS_EOD: if (strcmp(buff, CACHE_DESCR_BOUNDARY) == 0) { - debug(DEBUG_STATUS, "patch set %s %s %s %s", datebuff, authbuff, logbuff, branchbuff); - ps = get_patch_set(datebuff, logbuff, authbuff, branchbuff, NULL); + debug(DEBUG_STATUS, "patch set %s %s %s %s %s", datebuff, authbuff, logbuff, branchbuff, cidbuff); + ps = get_patch_set(datebuff, logbuff, authbuff, branchbuff, cidbuff, NULL); /* the tag and tag_flags will be assigned by the resolve_global_symbols code * ps->tag = (strlen(tagbuff)) ? get_string(tagbuff) : NULL; * ps->tag_flags = tag_flags; @@ -336,6 +348,7 @@ time_t read_cache() tag_flags = 0; branchbuff[0] = 0; branch_add = 0; + cidbuff[0] = 0; logbuff[0] = 0; state = CACHE_NEED_PS; } @@ -523,6 +536,8 @@ static void dump_patch_set(FILE * fp, PatchSet * ps) fprintf(fp, "tag_flags: %d\n", ps->tag_flags); fprintf(fp, "branch: %s\n", ps->branch); fprintf(fp, "branch_add: %d\n", ps->branch_add); + if (ps->commitid[0]) + fprintf(fp, "commitid: %s\n", ps->commitid); fprintf(fp, "descr:\n%s", ps->descr); /* descr is guaranteed to end with LF */ fprintf(fp, CACHE_DESCR_BOUNDARY); fprintf(fp, "members:\n"); diff --git a/cvsps.c b/cvsps.c index 981cd78..b91f0c7 100644 --- a/cvsps.c +++ b/cvsps.c @@ -268,6 +268,7 @@ static void load_from_cvs() PatchSetMember * psm = NULL; char datebuff[20]; char authbuff[AUTH_STR_MAX]; + char cidbuff[CID_STR_MAX]; int logbufflen = LOG_STR_MAX + 1; char * logbuff = malloc(logbufflen); int loglen = 0; @@ -466,6 +467,19 @@ static void load_from_cvs() psm->post_rev->dead = 1; } + cidbuff[0] = 0; + p = strstr(buff, "commitid: "); + if (p) + { + char * op; + p += 10; + op = strchr(p, ';'); + if (op) + { + strzncpy(cidbuff, p, op - p + 1); + } + } + state = NEED_EOM; } break; @@ -474,7 +488,7 @@ static void load_from_cvs() { if (psm) { - PatchSet * ps = get_patch_set(datebuff, logbuff, authbuff, psm->post_rev->branch, psm); + PatchSet * ps = get_patch_set(datebuff, logbuff, authbuff, psm->post_rev->branch, cidbuff, psm); patch_set_add_member(ps, psm); } @@ -487,7 +501,7 @@ static void load_from_cvs() { if (psm) { - PatchSet * ps = get_patch_set(datebuff, logbuff, authbuff, psm->post_rev->branch, psm); + PatchSet * ps = get_patch_set(datebuff, logbuff, authbuff, psm->post_rev->branch, cidbuff, psm); patch_set_add_member(ps, psm); assign_pre_revision(psm, NULL); } @@ -1199,7 +1213,7 @@ static CvsFile * build_file_by_name(const char * fn) return retval; } -PatchSet * get_patch_set(const char * dte, const char * log, const char * author, const char * branch, PatchSetMember * psm) +PatchSet * get_patch_set(const char * dte, const char * log, const char * author, const char * branch, const char *commitid, PatchSetMember * psm) { PatchSet * retval = NULL, **find = NULL; int (*cmp1)(const void *,const void*) = (bkcvs) ? compare_patch_sets_bk : compare_patch_sets; @@ -1212,6 +1226,7 @@ PatchSet * get_patch_set(const char * dte, const char * log, const char * author convert_date(&retval->date, dte); retval->author = get_string(author); + retval->commitid = get_string(commitid); retval->descr = xstrdup(log); retval->branch = get_string(branch); @@ -1267,7 +1282,7 @@ PatchSet * get_patch_set(const char * dte, const char * log, const char * author else { debug(DEBUG_STATUS, "new patch set!"); - debug(DEBUG_STATUS, "%s %s %s", retval->author, retval->descr, dte); + debug(DEBUG_STATUS, "%s %s %s %s", retval->author, retval->descr, retval->commitid, dte); retval->min_date = retval->date - timestamp_fuzz_factor; retval->max_date = retval->date + timestamp_fuzz_factor; @@ -1639,7 +1654,7 @@ static int compare_patch_sets(const void * v_ps1, const void * v_ps2) int ret; time_t d, min, max; - /* We order by (author, descr, branch, members, date), but because of the fuzz factor + /* We order by (author, descr, branch, commitid, members, date), but because of the fuzz factor * we treat times within a certain distance as equal IFF the author * and descr match. */ @@ -1656,6 +1671,10 @@ static int compare_patch_sets(const void * v_ps1, const void * v_ps2) if (ret) return ret; + ret = strcmp(ps1->commitid, ps2->commitid); + if (ret) + return ret; + ret = compare_patch_sets_by_members(ps1, ps2); if (ret) return ret; @@ -1724,6 +1743,10 @@ static int compare_patch_sets_bytime(const PatchSet * ps1, const PatchSet * ps2) return ret; ret = strcmp(ps1->branch, ps2->branch); + if (ret) + return ret; + + ret = strcmp(ps1->commitid, ps2->commitid); return ret; } @@ -2072,6 +2095,7 @@ static PatchSet * create_patch_set() ps->tag = NULL; ps->tag_flags = 0; ps->branch_add = 0; + ps->commitid = ""; ps->funk_factor = 0; ps->ancestor_branch = NULL; CLEAR_LIST_NODE(&ps->collision_link); diff --git a/cvsps.h b/cvsps.h index 280a253..2638ebe 100644 --- a/cvsps.h +++ b/cvsps.h @@ -25,7 +25,7 @@ CvsFile * create_cvsfile(); CvsFileRevision * cvs_file_add_revision(CvsFile *, const char *); void cvs_file_add_symbol(CvsFile * file, const char * rev, const char * tag); char * cvs_file_add_branch(CvsFile *, const char *, const char *); -PatchSet * get_patch_set(const char *, const char *, const char *, const char *, PatchSetMember *); +PatchSet * get_patch_set(const char *, const char *, const char *, const char *, const char *, PatchSetMember *); PatchSetMember * create_patch_set_member(); CvsFileRevision * file_get_revision(CvsFile *, const char *); void patch_set_add_member(PatchSet * ps, PatchSetMember * psm); diff --git a/cvsps_types.h b/cvsps_types.h index dba145d..f3cc33f 100644 --- a/cvsps_types.h +++ b/cvsps_types.h @@ -10,6 +10,7 @@ #define LOG_STR_MAX 65536 #define AUTH_STR_MAX 64 +#define CID_STR_MAX 64 #define REV_STR_MAX 64 #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) @@ -113,6 +114,7 @@ struct _PatchSet char *descr; char *author; char *tag; + char *commitid; int tag_flags; char *branch; char *ancestor_branch;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor