summaryrefslogtreecommitdiffstats
path: root/Source/CTest
diff options
context:
space:
mode:
authorXavier Besseron <xavier.besseron@uni.lu>2012-09-03 08:45:05 (GMT)
committerBrad King <brad.king@kitware.com>2012-09-03 14:38:51 (GMT)
commitaa1076f4600a94494da355d641aa0a5773a67863 (patch)
tree29663c4cce1e7010e39eba3f82a5ea3f85e2fcb0 /Source/CTest
parent19d9f5908b541a3d61361cbfd1a315ac3f512543 (diff)
downloadCMake-aa1076f4600a94494da355d641aa0a5773a67863.zip
CMake-aa1076f4600a94494da355d641aa0a5773a67863.tar.gz
CMake-aa1076f4600a94494da355d641aa0a5773a67863.tar.bz2
cmCTestSVN: Add the new SVNInfo structure
It represents information of an SVN repository. It can be the base repository or an external one.
Diffstat (limited to 'Source/CTest')
-rw-r--r--Source/CTest/cmCTestSVN.cxx26
-rw-r--r--Source/CTest/cmCTestSVN.h25
2 files changed, 51 insertions, 0 deletions
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<SVNPath>" << this->Base << "</SVNPath>\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();