⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 revert.c

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 C
字号:
/* * revert.c:  wrapper around wc revert functionality. * * ==================================================================== * Copyright (c) 2000-2004 CollabNet.  All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution.  The terms * are also available at http://subversion.tigris.org/license-1.html. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * * This software consists of voluntary contributions made by many * individuals.  For exact contribution history, see the revision * history and logs, available at http://subversion.tigris.org/. * ==================================================================== *//* ==================================================================== *//*** Includes. ***/#include "svn_wc.h"#include "svn_client.h"#include "svn_pools.h"#include "svn_error.h"#include "svn_time.h"#include "svn_config.h"#include "client.h"/*** Code. ***//* Attempt to revert PATH, recursively if RECURSIVE is true and PATH   is a directory, else non-recursively.  Consult CTX to determine   whether or not to revert timestamp to the time of last commit   ('use-commit-times = yes').  Use POOL for temporary allocation.   If PATH is unversioned, return SVN_ERR_UNVERSIONED_RESOURCE. */static svn_error_t *revert(const char *path,       svn_boolean_t recursive,       svn_boolean_t use_commit_times,       svn_client_ctx_t *ctx,       apr_pool_t *pool){  svn_wc_adm_access_t *adm_access, *target_access;  const char *target;  svn_error_t *err;  SVN_ERR(svn_wc_adm_open_anchor(&adm_access, &target_access, &target, path,                                 TRUE, recursive ? -1 : 0,                                 ctx->cancel_func, ctx->cancel_baton,                                 pool));  err = svn_wc_revert2(path, adm_access, recursive, use_commit_times,                       ctx->cancel_func, ctx->cancel_baton,                       ctx->notify_func2, ctx->notify_baton2,                       pool);  if (err)    {      /* If target isn't versioned, just send a 'skip'         notification and move on. */      if (err->apr_err == SVN_ERR_ENTRY_NOT_FOUND          || err->apr_err == SVN_ERR_UNVERSIONED_RESOURCE)        {          if (ctx->notify_func2)            (*ctx->notify_func2)              (ctx->notify_baton2,               svn_wc_create_notify(path, svn_wc_notify_skip, pool),               pool);          svn_error_clear(err);        }      else        return err;    }  SVN_ERR(svn_wc_adm_close(adm_access));  return SVN_NO_ERROR;}svn_error_t *svn_client_revert(const apr_array_header_t *paths,                  svn_boolean_t recursive,                  svn_client_ctx_t *ctx,                  apr_pool_t *pool){  apr_pool_t *subpool;  svn_error_t *err = SVN_NO_ERROR;  int i;  svn_config_t *cfg;  svn_boolean_t use_commit_times;  cfg = ctx->config ? apr_hash_get(ctx->config, SVN_CONFIG_CATEGORY_CONFIG,                                     APR_HASH_KEY_STRING) : NULL;  SVN_ERR(svn_config_get_bool(cfg, &use_commit_times,                              SVN_CONFIG_SECTION_MISCELLANY,                              SVN_CONFIG_OPTION_USE_COMMIT_TIMES,                              FALSE));  subpool = svn_pool_create(pool);  for (i = 0; i < paths->nelts; i++)    {      const char *path = APR_ARRAY_IDX(paths, i, const char *);      svn_pool_clear(subpool);      /* See if we've been asked to cancel this operation. */      if ((ctx->cancel_func)           && ((err = ctx->cancel_func(ctx->cancel_baton))))        goto errorful;      err = revert(path, recursive, use_commit_times, ctx, subpool);      if (err)        goto errorful;    }   errorful:  svn_pool_destroy(subpool);    /* Sleep to ensure timestamp integrity. */  svn_sleep_for_timestamps();  return err;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -