00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _SVNCPP_CLIENT_H_
00026 #define _SVNCPP_CLIENT_H_
00027
00028
00029 #if defined (_MSC_VER) && _MSC_VER <= 1200
00030
00031 #pragma warning (disable: 4786)
00032
00033 #pragma warning (disable: 4290)
00034 #endif
00035
00036
00037 #if defined (_MSC_VER) && _MSC_VER > 1200 && _MSC_VER <= 1500
00038
00039 #pragma warning (disable: 4290)
00040 #endif
00041
00042
00043
00044 #include "svncpp/vector_wrapper.hpp"
00045 #include "svncpp/utility_wrapper.hpp"
00046 #include "svncpp/map_wrapper.hpp"
00047
00048
00049 #include "svncpp/context.hpp"
00050 #include "svncpp/exception.hpp"
00051 #include "svncpp/path.hpp"
00052 #include "svncpp/entry.hpp"
00053 #include "svncpp/revision.hpp"
00054 #include "svncpp/log_entry.hpp"
00055 #include "svncpp/annotate_line.hpp"
00056
00057
00058 namespace svn
00059 {
00060
00061 class Context;
00062 class DirEntry;
00063 class Info;
00064 class Status;
00065 class Targets;
00066
00067 typedef std::vector<AnnotateLine> AnnotatedFile;
00068 typedef std::vector<DirEntry> DirEntries;
00069 typedef std::vector<Info> InfoVector;
00070 typedef std::vector<LogEntry> LogEntries;
00071 typedef std::vector<Status> StatusEntries;
00072
00073
00074
00075 typedef std::map<std::string,std::string> PropertiesMap;
00076
00077 typedef std::pair<std::string, PropertiesMap> PathPropertiesMapEntry;
00078
00079 typedef std::vector<PathPropertiesMapEntry> PathPropertiesMapList;
00080
00087 struct StatusFilter
00088 {
00089 public:
00090 bool showUnversioned;
00091 bool showUnmodified;
00092 bool showModified;
00093 bool showConflicted;
00094 bool showIgnored;
00095 bool showExternals;
00096
00097 StatusFilter()
00098 : showUnversioned(false), showUnmodified(false),
00099 showModified(false), showConflicted(false),
00100 showExternals(false)
00101 {
00102 }
00103 };
00104
00105
00109 class Client
00110 {
00111 public:
00115 Client(Context * context = 0);
00116
00117 virtual ~Client();
00118
00122 const Context *
00123 getContext() const;
00124
00128 Context *
00129 getContext();
00130
00138 void
00139 setContext(Context * context = NULL);
00140
00154 StatusEntries
00155 status(const char * path,
00156 const bool descend = false,
00157 const bool get_all = true,
00158 const bool update = false,
00159 const bool no_ignore = false,
00160 const bool ignore_externals = false) throw(ClientException);
00161
00179 svn_revnum_t
00180 status(const char * path,
00181 const StatusFilter & filter,
00182 const bool descend,
00183 const bool update,
00184 StatusEntries & entries) throw(ClientException);
00185
00186
00198 svn_revnum_t
00199 checkout(const char * moduleName,
00200 const Path & destPath,
00201 const Revision & revision,
00202 bool recurse,
00203 bool ignore_externals = false,
00204 const Revision & peg_revision = Revision::UNSPECIFIED) throw(ClientException);
00205
00210 void
00211 relocate(const Path & path, const char *from_url,
00212 const char *to_url, bool recurse) throw(ClientException);
00213
00218 void
00219 remove(const Path & path, bool force) throw(ClientException);
00220
00228 void
00229 remove(const Targets & targets,
00230 bool force) throw(ClientException);
00231
00240 void
00241 lock(const Targets & targets, bool force,
00242 const char * comment) throw(ClientException);
00243
00251 void
00252 unlock(const Targets & targets, bool force) throw(ClientException);
00253
00258 void
00259 revert(const Targets & targets, bool recurse) throw(ClientException);
00260
00265 void
00266 add(const Path & path, bool recurse) throw(ClientException);
00267
00280 std::vector<svn_revnum_t>
00281 update(const Targets & targets,
00282 const Revision & revision,
00283 bool recurse,
00284 bool ignore_externals) throw(ClientException);
00285
00286 svn_revnum_t
00287 update(const Path & path,
00288 const Revision & revision,
00289 bool recurse,
00290 bool ignore_externals) throw(ClientException);
00291
00302 std::string
00303 cat(const Path & path,
00304 const Revision & revision,
00305 const Revision & peg_revision = Revision::UNSPECIFIED) throw(ClientException);
00306
00307
00324 void
00325 get(Path & dstPath,
00326 const Path & path,
00327 const Revision & revision,
00328 const Revision & peg_revision = Revision::UNSPECIFIED) throw(ClientException);
00329
00330
00340 AnnotatedFile *
00341 annotate(const Path & path,
00342 const Revision & revisionStart,
00343 const Revision & revisionEnd) throw(ClientException);
00344
00356 svn_revnum_t
00357 commit(const Targets & targets,
00358 const char * message,
00359 bool recurse,
00360 bool keep_locks = false) throw(ClientException);
00361
00366 void
00367 copy(const Path & srcPath,
00368 const Revision & srcRevision,
00369 const Path & destPath) throw(ClientException);
00370
00375 void
00376 move(const Path & srcPath,
00377 const Revision & srcRevision,
00378 const Path & destPath,
00379 bool force) throw(ClientException);
00380
00389 void
00390 mkdir(const Path & path) throw(ClientException);
00391
00392 void
00393 mkdir(const Targets & targets) throw(ClientException);
00394
00401 void
00402 cleanup(const Path & path) throw(ClientException);
00403
00408 void
00409 resolved(const Path & path, bool recurse) throw(ClientException);
00410
00424 void
00425 doExport(const Path & from_path,
00426 const Path & to_path,
00427 const Revision & revision,
00428 bool overwrite = false,
00429 const Revision & peg_revision = Revision::UNSPECIFIED,
00430 bool ignore_externals = false,
00431 bool recurse = true,
00432 const char * native_eol = NULL) throw(ClientException);
00433
00439 svn_revnum_t
00440 doSwitch(const Path & path, const char * url,
00441 const Revision & revision,
00442 bool recurse) throw(ClientException);
00443
00453 void
00454 import(const Path & path,
00455 const char * url,
00456 const char * message,
00457 bool recurse) throw(ClientException);
00458 void
00459 import(const Path & path,
00460 const Path & url,
00461 const char * message,
00462 bool recurse) throw(ClientException);
00463
00464
00469 void
00470 merge(const Path & path1, const Revision & revision1,
00471 const Path & path2, const Revision & revision2,
00472 const Path & localPath, bool force,
00473 bool recurse,
00474 bool notice_ancestry = false,
00475 bool dry_run = false) throw(ClientException);
00476
00477
00490 InfoVector
00491 info(const Path & pathOrUrl,
00492 bool recurse=false,
00493 const Revision & revision = Revision::UNSPECIFIED,
00494 const Revision & pegRevision = Revision::UNSPECIFIED) throw(ClientException);
00495
00496
00512 const LogEntries *
00513 log(const char * path,
00514 const Revision & revisionStart,
00515 const Revision & revisionEnd,
00516 bool discoverChangedPaths = false,
00517 bool strictNodeHistory = true) throw(ClientException);
00518
00541 std::string
00542 diff(const Path & tmpPath, const Path & path,
00543 const Revision & revision1, const Revision & revision2,
00544 const bool recurse, const bool ignoreAncestry,
00545 const bool noDiffDeleted) throw(ClientException);
00546
00570 std::string
00571 diff(const Path & tmpPath, const Path & path1, const Path & path2,
00572 const Revision & revision1, const Revision & revision2,
00573 const bool recurse, const bool ignoreAncestry,
00574 const bool noDiffDeleted) throw(ClientException);
00575
00599 std::string
00600 diff(const Path & tmpPath, const Path & path,
00601 const Revision & pegRevision, const Revision & revision1,
00602 const Revision & revision2, const bool recurse,
00603 const bool ignoreAncestry, const bool noDiffDeleted)
00604 throw(ClientException);
00605
00616 DirEntries
00617 list(const char * pathOrUrl,
00618 svn_opt_revision_t * revision,
00619 bool recurse) throw(ClientException);
00620
00630 PathPropertiesMapList
00631 proplist(const Path &path,
00632 const Revision &revision,
00633 bool recurse = false);
00634
00645 PathPropertiesMapList
00646 propget(const char * propName,
00647 const Path & path,
00648 const Revision & revision,
00649 bool recurse = false);
00650
00667 void
00668 propset(const char * propName,
00669 const char * propValue,
00670 const Path & path,
00671 const Revision & revision,
00672 bool recurse = false,
00673 bool skip_checks = true);
00674
00684 void
00685 propdel(const char * propName,
00686 const Path & path,
00687 const Revision & revision,
00688 bool recurse = false);
00689
00690
00699 std::pair<svn_revnum_t,PropertiesMap>
00700 revproplist(const Path & path,
00701 const Revision & revision);
00702
00712 std::pair<svn_revnum_t,std::string>
00713 revpropget(const char * propName,
00714 const Path & path,
00715 const Revision & revision);
00716
00728 svn_revnum_t
00729 revpropset(const char * propName,
00730 const char * propValue,
00731 const Path & path,
00732 const Revision & revision,
00733 bool force = false);
00734
00745 svn_revnum_t
00746 revpropdel(const char * propName,
00747 const Path & path,
00748 const Revision & revision,
00749 bool force = false);
00750
00751
00759 void
00760 ignore(const Path & path) throw(ClientException);
00761
00769 void
00770 ignore(const Targets & targets) throw(ClientException);
00771 private:
00772 Context * m_context;
00773
00777 Client & operator= (const Client &);
00778
00782 Client(const Client &);
00783 };
00784 }
00785
00786 #endif
00787
00788
00789
00790
00791