static void * compute_upload_commits_thread (void *vdata) { CcnetProcessor *processor = vdata; SeafileSendcommitV3Proc *proc = (SeafileSendcommitV3Proc *)processor; TransferTask *task = proc->tx_task; USE_PRIV; gboolean ret; priv->fast_forward = TRUE; ret = seaf_commit_manager_traverse_commit_tree (seaf->commit_mgr, task->head, traverse_commit_fast_forward, processor, FALSE); if (!ret) { priv->compute_success = FALSE; return vdata; } if (priv->fast_forward) { priv->compute_success = TRUE; seaf_debug ("[sendcommt] Send commit after a fast forward merge.\n"); return vdata; } seaf_debug ("[sendcommit] Send commit after a real merge.\n"); if (compute_delta_commits (processor, task->head) < 0) { priv->compute_success = FALSE; return vdata; } priv->compute_success = TRUE; return vdata; }
static void * collect_commit_id_thread (void *vprocessor) { CcnetProcessor *processor = vprocessor; USE_PRIV; priv->fast_forward = TRUE; if (seaf_commit_manager_traverse_commit_tree (seaf->commit_mgr, priv->head_commit_id, collect_id_fast_forward, processor, FALSE) < 0) { g_warning ("[putcommit] Failed to collect commit id.\n"); string_list_free (priv->id_list); priv->id_list = NULL; return vprocessor; } if (priv->fast_forward) { seaf_debug ("Send commits after a fast-forward merge.\n"); return vprocessor; } seaf_debug ("Send commits after a real merge.\n"); compute_delta_commits (processor, priv->head_commit_id); return vprocessor; }
static void * collect_commit_id_thread (void *vprocessor) { CcnetProcessor *processor = vprocessor; USE_PRIV; SeafRepo *repo; repo = seaf_repo_manager_get_repo (seaf->repo_mgr, priv->repo_id); if (!repo) { seaf_warning ("Failed to get repo %s.\n", priv->repo_id); priv->id_list = NULL; return vprocessor; } priv->repo_version = repo->version; priv->fast_forward = TRUE; if (seaf_commit_manager_traverse_commit_tree (seaf->commit_mgr, repo->id, repo->version, priv->head_commit_id, collect_id_fast_forward, processor, FALSE) < 0) { seaf_warning ("[putcommit] Failed to collect commit id.\n"); string_list_free (priv->id_list); priv->id_list = NULL; goto out; } if (priv->fast_forward) { seaf_debug ("Send commits after a fast-forward merge.\n"); goto out; } seaf_debug ("Send commits after a real merge.\n"); compute_delta_commits (processor, priv->head_commit_id); out: seaf_repo_unref (repo); return vprocessor; }