# # # patch "rcs_import.cc" # from [1fbe2f790f79cfbdb5f99c013af33f77cc33080f] # to [4b20e7930c43b4126104f0d8c82ef7c6256ad3e4] # ============================================================ --- rcs_import.cc 1fbe2f790f79cfbdb5f99c013af33f77cc33080f +++ rcs_import.cc 4b20e7930c43b4126104f0d8c82ef7c6256ad3e4 @@ -82,16 +82,19 @@ struct cvs_branch; struct cvs_branch; -typedef unsigned long long digest_type; - struct cvs_event_digest { - digest_type digest; + u32 digest; cvs_event_digest(cvs_author a, cvs_changelog c, cvs_tag t, cvs_branchname b) { - digest = (digest_type) a | ((digest_type) c << 16) | ((digest_type) t << 32) | ((digest_type) b << 48); + if (c) + digest = c; + else if (t) + digest = ((u32) 2 << 30) | t; + else + digest = ((u32) 3 << 30) | b; } bool operator < (const struct cvs_event_digest & other) const @@ -754,11 +757,6 @@ process_branch(string const & begin_vers /* add a branch event */ shared_ptr branch_event = shared_ptr(new cvs_event_branch(curr_commit)); - cvs.stk.top()->append_event(branch_event); - L(FL("added branch event for file %s from branch %s into branch %s") - % cvs.path_interner.lookup(curr_commit->path) - % cvs.bstk.top() - % branch); L(FL("following RCS branch %s = '%s'\n") % (*i) % branch); @@ -768,13 +766,21 @@ process_branch(string const & begin_vers cvs.push_branch(branch, priv); + process_branch(*i, curr_commit, branch_lines, branch_data, + branch_id, r, db, cvs); + /* link the branch event to the branch */ branch_event->branch = cvs.stk.top(); - process_branch(*i, curr_commit, branch_lines, branch_data, - branch_id, r, db, cvs); cvs.pop_branch(); + /* then append it to the parent branch */ + cvs.stk.top()->append_event(branch_event); + L(FL("added branch event for file %s from branch %s into branch %s") + % cvs.path_interner.lookup(curr_commit->path) + % cvs.bstk.top() + % branch); + L(FL("finished RCS branch %s = '%s'") % (*i) % branch); }