static gboolean
collect_upload_commit_ids (SeafCommit *commit, void *data, gboolean *stop)
{
    CcnetProcessor *processor = data;
    TransferTask *task = ((SeafileSendcommitV3Proc *)processor)->tx_task;
    USE_PRIV;

    if (strcmp (priv->last_uploaded_id, commit->commit_id) == 0) {
        priv->visited_last_uploaded = TRUE;
        *stop = TRUE;
        return TRUE;
    }

    if (priv->remote_id[0] != 0 &&
        strcmp (priv->remote_id, commit->commit_id) == 0) {
        *stop = TRUE;
        return TRUE;
    }

    if (commit->parent_id &&
        !seaf_commit_manager_commit_exists (seaf->commit_mgr,
                                            commit->repo_id, commit->version,
                                            commit->parent_id)) {
        *stop = TRUE;
        return TRUE;
    }

    if (commit->second_parent_id &&
        !seaf_commit_manager_commit_exists (seaf->commit_mgr,
                                            commit->repo_id, commit->version,
                                            commit->second_parent_id)) {
        *stop = TRUE;
        return TRUE;
    }

    priv->id_list = g_list_prepend (priv->id_list, g_strdup(commit->commit_id));

    /* We don't need to send the contents under an empty dir.
     */
    if (strcmp (commit->root_id, EMPTY_SHA1) != 0)
        object_list_insert (task->fs_roots, commit->root_id);

    object_list_insert (task->commits, commit->commit_id);

    return TRUE;
}
Example #2
0
static void
check_commit (CcnetProcessor *processor, const char *commit_id)
{
    USE_PRIV;

    if (!seaf_commit_manager_commit_exists (seaf->commit_mgr, commit_id)) {
        request_object_batch (priv, commit_id);
    }
}