1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
//
// ====================================================================
// Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
//
// This software is licensed as described in the file LICENSE.txt,
// which you should have received as part of this distribution.
//
// ====================================================================
//
//
// pysvn_client_cmd_list.cpp
//
#if defined( _MSC_VER )
// disable warning C4786: symbol greater than 255 character,
// nessesary to ignore as <map> causes lots of warning
#pragma warning(disable: 4786)
#endif
#include "pysvn.hpp"
#include "pysvn_svnenv.hpp"
#include "pysvn_static_strings.hpp"
#if defined( PYSVN_HAS_CLIENT_LOCK )
Py::Object pysvn_client::cmd_lock( const Py::Tuple &a_args, const Py::Dict &a_kws )
{
static argument_description args_desc[] =
{
{ true, name_url_or_path },
{ true, name_comment },
{ false, name_force },
{ false, NULL }
};
FunctionArguments args( "lock", args_desc, a_args, a_kws );
args.check();
SvnPool pool( m_context );
apr_array_header_t *targets = targetsFromStringOrList( args.getArg( name_url_or_path ), pool );
std::string type_error_message;
try
{
type_error_message = "expecting string for comment (arg 2)";
std::string comment( args.getUtf8String( name_comment ) );
type_error_message = "expecting boolean for force keyword arg";
bool force = args.getBoolean( name_force, false );
try
{
checkThreadPermission();
PythonAllowThreads permission( m_context );
svn_error_t *error = svn_client_lock
(
targets,
comment.c_str(),
force, // non recursive
m_context,
pool
);
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 );
}
}
catch( Py::TypeError & )
{
throw Py::TypeError( type_error_message );
}
return Py::None();
}
#endif
#if defined( PYSVN_HAS_CLIENT_LOCK )
Py::Object pysvn_client::cmd_unlock( const Py::Tuple &a_args, const Py::Dict &a_kws )
{
static argument_description args_desc[] =
{
{ true, name_url_or_path },
{ false, name_force },
{ false, NULL }
};
FunctionArguments args( "unlock", args_desc, a_args, a_kws );
args.check();
SvnPool pool( m_context );
apr_array_header_t *targets = targetsFromStringOrList( args.getArg( name_url_or_path ), pool );
std::string type_error_message;
try
{
type_error_message = "expecting boolean for force keyword arg";
bool force = args.getBoolean( name_force, true );
try
{
checkThreadPermission();
PythonAllowThreads permission( m_context );
svn_error_t *error = svn_client_unlock
(
targets,
force,
m_context,
pool
);
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 );
}
}
catch( Py::TypeError & )
{
throw Py::TypeError( type_error_message );
}
return Py::None();
}
#endif
|