From aa1076f4600a94494da355d641aa0a5773a67863 Mon Sep 17 00:00:00 2001 From: Xavier Besseron Date: Mon, 3 Sep 2012 10:45:05 +0200 Subject: cmCTestSVN: Add the new SVNInfo structure It represents information of an SVN repository. It can be the base repository or an external one. --- Source/CTest/cmCTestSVN.cxx | 26 ++++++++++++++++++++++++++ Source/CTest/cmCTestSVN.h | 25 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx index fab9a8c..7ca87e2 100644 --- a/Source/CTest/cmCTestSVN.cxx +++ b/Source/CTest/cmCTestSVN.cxx @@ -448,3 +448,29 @@ void cmCTestSVN::WriteXMLGlobal(std::ostream& xml) xml << "\t" << this->Base << "\n"; } + +//---------------------------------------------------------------------------- +std::string cmCTestSVN::SVNInfo::BuildLocalPath(std::string const& path) const +{ + std::string local_path; + + // Add local path prefix if not empty + if (!this->LocalPath.empty()) + { + local_path += this->LocalPath; + local_path += "/"; + } + + // Add path with base prefix removed + if(path.size() > this->Base.size() && + strncmp(path.c_str(), this->Base.c_str(), this->Base.size()) == 0) + { + local_path += (path.c_str() + this->Base.size()); + } + else + { + local_path += path; + } + + return local_path; +} diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h index f72c58f..97eeaf5 100644 --- a/Source/CTest/cmCTestSVN.h +++ b/Source/CTest/cmCTestSVN.h @@ -42,6 +42,31 @@ private: // Directory under repository root checked out in working tree. std::string Base; + // Information about an SVN repository (root repository or external) + struct SVNInfo { + + SVNInfo(const char* path) : LocalPath(path) {} + // Remove base from the filename + std::string BuildLocalPath(std::string const& path) const; + + // 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; + + }; + std::string LoadInfo(); void LoadModifications(); void LoadRevisions(); -- cgit v0.12