summaryrefslogtreecommitdiff
path: root/Source/CTest/cmCTestSVN.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/CTest/cmCTestSVN.h')
-rw-r--r--Source/CTest/cmCTestSVN.h54
1 files changed, 43 insertions, 11 deletions
diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index f72c58fb0..c6548e3fb 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -33,24 +33,54 @@ private:
virtual void NoteNewRevision();
virtual bool UpdateImpl();
- // URL of repository directory checked out in the working tree.
- std::string URL;
+ bool RunSVNCommand(std::vector<char const*> const& parameters,
+ OutputParser* out, OutputParser* err);
- // URL of repository root directory.
- std::string Root;
+ // Information about an SVN repository (root repository or external)
+ struct SVNInfo {
- // Directory under repository root checked out in working tree.
- std::string Base;
+ SVNInfo(const char* path) : LocalPath(path) {}
+ // Remove base from the filename
+ std::string BuildLocalPath(std::string const& path) const;
- std::string LoadInfo();
+ // LocalPath relative to the main source directory.
+ std::string LocalPath;
+
+ // URL of repository directory checked out in the working tree.
+ std::string URL;
+
+ // URL of repository root directory.
+ std::string Root;
+
+ // Directory under repository root checked out in working tree.
+ std::string Base;
+
+ // Old and new repository revisions.
+ std::string OldRevision;
+ std::string NewRevision;
+
+ };
+
+ // Extended revision structure to include info about external it refers to.
+ struct Revision;
+ friend struct Revision;
+
+ // Info of all the repositories (root, externals and nested ones).
+ std::list<SVNInfo> Repositories;
+
+ // Pointer to the infos of the root repository.
+ SVNInfo* RootInfo;
+
+ std::string LoadInfo(SVNInfo& svninfo);
+ void LoadExternals();
void LoadModifications();
void LoadRevisions();
+ void LoadRevisions(SVNInfo& svninfo);
- void GuessBase(std::vector<Change> const& changes);
- const char* LocalPath(std::string const& path);
+ void GuessBase(SVNInfo &svninfo, std::vector<Change> const& changes);
- void DoRevision(Revision const& revision,
- std::vector<Change> const& changes);
+ void DoRevisionSVN(Revision const& revision,
+ std::vector<Change> const& changes);
void WriteXMLGlobal(std::ostream& xml);
@@ -59,10 +89,12 @@ private:
class LogParser;
class StatusParser;
class UpdateParser;
+ class ExternalParser;
friend class InfoParser;
friend class LogParser;
friend class StatusParser;
friend class UpdateParser;
+ friend class ExternalParser;
};
#endif