#c #svn #segmentation-fault #svn-client
#c #svn #ошибка сегментации #svn-клиент
Вопрос:
Я хочу извлечь рабочую копию:
apr_pool_t *pool = NULL;
apr_pool_create(amp;pool, NULL);
svn_client_ctx_t *context = NULL;
svn_client_create_context(amp;context, pool);
svn_opt_revision_t revision;
revision.kind = svn_opt_revision_head;
svn_client_checkout3(NULL,
repo.URL.absoluteString.UTF8String, // repo URL
localURL.path.UTF8String, // local path
amp;revision,
amp;revision,
svn_depth_infinity,
TRUE,
FALSE,
context,
pool);
apr_pool_destroy(pool);
Он вылетает при svn_client_checkout3
с EXC_BAD_ACCESS
(вероятно, ошибка сегментации). Я прочитал документацию, но не могу понять, что я делаю неправильно.
Что может быть причиной этой ошибки?
Ответ №1:
Я предполагаю, что вы инициализировали APR, svn_utf, svn_fs, svn_ra и т.д. Перед этим фрагментом кода?
В репозитории Subversion есть несколько примеров кода, которые показывают, как следует выполнять инициализацию и обрабатывать запросы обратного вызова для таких вещей, как авторизация.
Если вы хотите избежать всего этого, я бы рекомендовал взглянуть на некоторые привязки более высокого уровня, которые существуют для Python (часть Subversion), Java (JavaHL и SVNKit) и .Net (SharpSvn). Или, если вы просто хотите выполнить одну команду, вы могли бы просто выложить на svn
.