static int l_propset (lua_State *L) { const char *path = luaL_checkstring (L, 1); const char *propname = luaL_checkstring (L, 2); const char *propval = lua_isnil (L, 3) ? NULL : luaL_checkstring (L, 3); apr_pool_t *pool; svn_error_t *err; svn_client_ctx_t *ctx; init_function (&ctx, &pool, L); path = svn_path_canonicalize (path, pool); const char *propname_utf8; err = svn_utf_cstring_to_utf8 (&propname_utf8, propname, pool); IF_ERROR_RETURN (err, pool, L); if (propval != NULL) { svn_string_t *sstring = svn_string_create (propval, pool); err = svn_client_propset2 (propname_utf8, sstring, path, TRUE, FALSE, ctx, pool); } else { err = svn_client_propset2 (propname_utf8, NULL, path, TRUE, FALSE, ctx, pool); } IF_ERROR_RETURN (err, pool, L); svn_pool_destroy (pool); return 0; }
static int l_propset (lua_State *L) { const char *path = luaL_checkstring (L, 1); const char *propname = luaL_checkstring (L, 2); const char *propval = lua_isnil (L, 3) ? NULL : luaL_checkstring (L, 3); svn_boolean_t recursive = FALSE; svn_boolean_t force = FALSE; int itable = 4; if (lua_gettop (L) >= itable && lua_istable (L, itable)) { lua_getfield (L, itable, "recursive"); if (lua_isboolean (L, -1)) { recursive = lua_toboolean (L, -1); } lua_getfield (L, itable, "force"); if (lua_isboolean (L, -1)) { force = lua_toboolean (L, -1); } } apr_pool_t *pool; svn_error_t *err; svn_client_ctx_t *ctx; init_function (&ctx, &pool, L); path = svn_path_canonicalize (path, pool); const char *propname_utf8; err = svn_utf_cstring_to_utf8 (&propname_utf8, propname, pool); IF_ERROR_RETURN (err, pool, L); if (propval != NULL) { svn_string_t *sstring = svn_string_create (propval, pool); err = svn_client_propset2 (propname_utf8, sstring, path, recursive, force, ctx, pool); } else { err = svn_client_propset2 (propname_utf8, NULL, path, recursive, force, ctx, pool); } IF_ERROR_RETURN (err, pool, L); svn_pool_destroy (pool); return 0; }
void Property::set(const char * name, const char * value) { Pool pool; const svn_string_t * propval = svn_string_create((const char *) value, pool); bool recurse = false; bool skip_checks = false; svn_error_t * error = svn_client_propset2(name, propval, m_path.c_str(), recurse, skip_checks, *m_context, pool); if (error != NULL) throw ClientException(error); }
/** * set property in @a path no matter whether local or * repository * * @param path * @param revision * @param propName * @param propValue * @param recurse * @return PropertiesList */ void Client::propset(const char * propName, const char * propValue, const Path & path, const Revision & /*revision*/, bool recurse, bool skip_checks) { Pool pool; const svn_string_t * propval = svn_string_create((const char *) propValue, pool); svn_error_t * error = svn_client_propset2(propName, propval, path.c_str(), recurse, skip_checks, *m_context, pool); if (error != nullptr) throw ClientException(error); }
Py::Object pysvn_client::cmd_propset( const Py::Tuple &a_args, const Py::Dict &a_kws ) { static argument_description args_desc[] = { { true, name_prop_name }, { true, name_prop_value }, { true, name_url_or_path }, { false, name_revision }, { false, name_recurse }, #if defined( PYSVN_HAS_CLIENT_PROPSET2 ) { false, name_skip_checks }, #endif #if defined( PYSVN_HAS_CLIENT_PROPSET3 ) { false, name_depth }, { false, name_base_revision_for_url }, { false, name_changelists }, { false, name_revprops }, #endif { false, NULL } }; FunctionArguments args( "propset", args_desc, a_args, a_kws ); args.check(); std::string propname( args.getUtf8String( name_prop_name ) ); std::string propval( args.getUtf8String( name_prop_value ) ); std::string path( args.getUtf8String( name_url_or_path ) ); svn_opt_revision_t revision; if( is_svn_url( path ) ) revision = args.getRevision( name_revision, svn_opt_revision_head ); else revision = args.getRevision( name_revision, svn_opt_revision_working ); SvnPool pool( m_context ); #if defined( PYSVN_HAS_CLIENT_PROPSET3 ) apr_array_header_t *changelists = NULL; if( args.hasArg( name_changelists ) ) { changelists = arrayOfStringsFromListOfStrings( args.getArg( name_changelists ), pool ); } svn_revnum_t base_revision_for_url = args.getInteger( name_base_revision_for_url, 0 ); svn_depth_t depth = args.getDepth( name_depth, name_recurse, svn_depth_files, svn_depth_empty ); apr_hash_t *revprops = NULL; if( args.hasArg( name_revprops ) ) { Py::Object py_revprop = args.getArg( name_revprops ); if( !py_revprop.isNone() ) { revprops = hashOfStringsFromDistOfStrings( py_revprop, pool ); } } #else bool recurse = args.getBoolean( name_recurse, false ); #endif #if defined( PYSVN_HAS_CLIENT_PROPSET2 ) bool skip_checks = args.getBoolean( name_skip_checks, false ); #endif #if defined( PYSVN_HAS_CLIENT_PROPSET3 ) pysvn_commit_info_t *commit_info = NULL; #endif try { std::string norm_path( svnNormalisedIfPath( path, pool ) ); checkThreadPermission(); PythonAllowThreads permission( m_context ); const svn_string_t *svn_propval = svn_string_ncreate( propval.c_str(), propval.size(), pool ); #if defined( PYSVN_HAS_CLIENT_PROPSET3 ) svn_error_t *error = svn_client_propset3 ( &commit_info, propname.c_str(), svn_propval, norm_path.c_str(), depth, skip_checks, base_revision_for_url, changelists, revprops, m_context.ctx(), pool ); #elif defined( PYSVN_HAS_CLIENT_PROPSET2 ) svn_error_t *error = svn_client_propset2 ( propname.c_str(), svn_propval, norm_path.c_str(), recurse, skip_checks, m_context.ctx(), pool ); #else svn_error_t *error = svn_client_propset ( propname.c_str(), svn_propval, norm_path.c_str(), recurse, pool ); #endif permission.allowThisThread(); if( error != NULL ) throw SvnException( error ); } catch( SvnException &e ) { // use callback error over ClientException m_context.checkForError( m_module.client_error ); throw_client_error( e ); } #if defined( PYSVN_HAS_CLIENT_PROPSET3 ) return toObject( commit_info ); #else return Py::None(); #endif }
void Client::ignore(const Path & path) throw(ClientException) { static const char s_svnIgnore[] = "svn:ignore"; Pool pool; std::string dirpath, basename; path.split(dirpath, basename); Revision revision; apr_hash_t *props; svn_error_t * error = svn_client_propget(&props, s_svnIgnore, dirpath.c_str(), Revision::UNSPECIFIED.revision(), false, // recursive *m_context, pool); if (error != NULL) throw ClientException(error); PathPropertiesMapList path_prop_map_list; apr_hash_index_t *hi; for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi)) { PropertiesMap prop_map; const void *key; void *val; apr_hash_this(hi, &key, NULL, &val); prop_map [std::string(s_svnIgnore)] = std::string(((const svn_string_t *)val)->data); path_prop_map_list.push_back(PathPropertiesMapEntry((const char *)key, prop_map)); } std::string str = basename; for (PathPropertiesMapList::const_iterator i=path_prop_map_list.begin(), ei=path_prop_map_list.end();i!=ei;++i) { if (dirpath != i->first) continue; for (PropertiesMap::const_iterator j=i->second.begin(), ej=i->second.end(); j != ej; ++j) { if (s_svnIgnore != j->first) continue; str += '\n'+j->second; } } const svn_string_t * propval = svn_string_create(str.c_str(), pool); error = svn_client_propset2(s_svnIgnore, propval, dirpath.c_str(), false, false, *m_context, pool); if (error != NULL) throw ClientException(error); }