[Cmake-commits] CMake branch, next, updated. v2.8.9-375-g2dd3b78

Brad King brad.king at kitware.com
Wed Sep 5 09:36:12 EDT 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  2dd3b783fdc8d0c918d8134f9623439940715073 (commit)
       via  57234dd10a091e676d9e3a9279029dadace757c3 (commit)
       via  3776690e62c631edd520f566b2ebcaffbad230b4 (commit)
       via  41f0f83542ce8d69e4d9a4512a6dc66327f20c8d (commit)
       via  fb6d5136926fc142fa893f853b62c5ca8df04d6c (commit)
       via  8d1e10296ae852afd80c789efa73492f87543034 (commit)
       via  2f204bc176e418e810de7034903974e7edb46b14 (commit)
      from  dc4345a1a236ecd4ad95980507ca825c9abc9327 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2dd3b783fdc8d0c918d8134f9623439940715073
commit 2dd3b783fdc8d0c918d8134f9623439940715073
Merge: dc4345a 57234dd
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Sep 5 09:36:10 2012 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Sep 5 09:36:10 2012 -0400

    Merge topic 'ctest-svn-update' into next
    
    57234dd cmCTestSVN: Load and process information from externals
    3776690 cmCTestSVN: Add a LoadExternal() function and an ExternalParser class
    41f0f83 cmCTestSVN: Use the SVNInfo structure
    fb6d513 cmCTestSVN: Create the SVNInfo for the root repository
    8d1e102 cmCTestSVN: Add the Repositories list and the RootInfo pointer
    2f204bc cmCTestSVN: Extend Revision struct with SVN repo information


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=57234dd10a091e676d9e3a9279029dadace757c3
commit 57234dd10a091e676d9e3a9279029dadace757c3
Author:     Xavier Besseron <xavier.besseron at uni.lu>
AuthorDate: Mon Sep 3 11:10:53 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 4 08:35:36 2012 -0400

    cmCTestSVN: Load and process information from externals
    
    Call LoadExternals() and perform operations on all elements of the
    Repositories list.

diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index b27c633..49cea2e 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -121,9 +121,15 @@ void cmCTestSVN::NoteOldRevision()
   // Info for root repository
   this->Repositories.push_back( SVNInfo("") );
   this->RootInfo = &(this->Repositories.back());
+  // Info for the external repositories
+  this->LoadExternals();
 
-    // Get info for the root repositiry
-    SVNInfo& svninfo = *RootInfo;
+  // Get info for all the repositories
+  std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
+  std::list<SVNInfo>::iterator itend = this->Repositories.end();
+  for( ; itbeg != itend ; itbeg++)
+    {
+    SVNInfo& svninfo = *itbeg;
     svninfo.OldRevision = this->LoadInfo(svninfo);
     this->Log << "Revision for repository '" << svninfo.LocalPath
               << "' before update: " << svninfo.OldRevision << "\n";
@@ -131,6 +137,7 @@ void cmCTestSVN::NoteOldRevision()
                "   Old revision of external repository '"
                << svninfo.LocalPath << "' is: "
                << svninfo.OldRevision << "\n");
+    }
 
   // Set the global old revision to the one of the root
   this->OldRevision = this->RootInfo->OldRevision;
@@ -140,8 +147,12 @@ void cmCTestSVN::NoteOldRevision()
 //----------------------------------------------------------------------------
 void cmCTestSVN::NoteNewRevision()
 {
-  // Get info for the root repository
-    SVNInfo& svninfo = *RootInfo;
+  // Get info for the external repositories
+  std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
+  std::list<SVNInfo>::iterator itend = this->Repositories.end();
+  for( ; itbeg != itend ; itbeg++)
+    {
+    SVNInfo& svninfo = *itbeg;
     svninfo.NewRevision = this->LoadInfo(svninfo);
     this->Log << "Revision for repository '" << svninfo.LocalPath
               << "' after update: " << svninfo.NewRevision << "\n";
@@ -168,6 +179,8 @@ void cmCTestSVN::NoteNewRevision()
     this->Log << "Repository '" << svninfo.LocalPath
               << "' Base = " << svninfo.Base << "\n";
 
+  }
+
   // Set the global new revision to the one of the root
   this->NewRevision = this->RootInfo->NewRevision;
 }
@@ -379,9 +392,14 @@ private:
 //----------------------------------------------------------------------------
 void cmCTestSVN::LoadRevisions()
 {
-    // Get revision of the root repository
-    SVNInfo& svninfo = *RootInfo;
+  // Get revisions for all the external repositories
+  std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
+  std::list<SVNInfo>::iterator itend = this->Repositories.end();
+  for( ; itbeg != itend ; itbeg++)
+    {
+    SVNInfo& svninfo = *itbeg;
     LoadRevisions(svninfo);
+    }
 }
 
 //----------------------------------------------------------------------------
@@ -418,6 +436,14 @@ void cmCTestSVN::DoRevisionSVN(Revision const& revision,
     {
     this->GuessBase(*this->RootInfo, changes);
     }
+
+  // Ignore changes in the old revision for external repositories
+  if(revision.Rev == revision.SVNInfo->OldRevision
+     && revision.SVNInfo->LocalPath != "")
+    {
+    return;
+    }
+
   this->cmCTestGlobalVC::DoRevision(revision, changes);
 }
 

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3776690e62c631edd520f566b2ebcaffbad230b4
commit 3776690e62c631edd520f566b2ebcaffbad230b4
Author:     Xavier Besseron <xavier.besseron at uni.lu>
AuthorDate: Mon Sep 3 11:03:43 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 4 08:35:36 2012 -0400

    cmCTestSVN: Add a LoadExternal() function and an ExternalParser class
    
    This call 'svn status' and parse the result to get the list of externals
    repositories.  The external repositories found are added to the
    Repositories list.

diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index 32b1ef9..b27c633 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -482,6 +482,56 @@ void cmCTestSVN::WriteXMLGlobal(std::ostream& xml)
 }
 
 //----------------------------------------------------------------------------
+class cmCTestSVN::ExternalParser: public cmCTestVC::LineParser
+{
+public:
+  ExternalParser(cmCTestSVN* svn, const char* prefix): SVN(svn)
+    {
+    this->SetLog(&svn->Log, prefix);
+    this->RegexExternal.compile("^X..... +(.+)$");
+    }
+private:
+  cmCTestSVN* SVN;
+  cmsys::RegularExpression RegexExternal;
+  bool ProcessLine()
+    {
+    if(this->RegexExternal.find(this->Line))
+      {
+      this->DoPath(this->RegexExternal.match(1));
+      }
+    return true;
+    }
+
+  void DoPath(std::string const& path)
+    {
+    // Get local path relative to the source directory
+    std::string local_path;
+    if(path.size() > this->SVN->SourceDirectory.size() &&
+       strncmp(path.c_str(), this->SVN->SourceDirectory.c_str(),
+               this->SVN->SourceDirectory.size()) == 0)
+      {
+      local_path = path.c_str() + this->SVN->SourceDirectory.size() + 1;
+      }
+    else
+      {
+      local_path = path;
+      }
+    this->SVN->Repositories.push_back( SVNInfo(local_path.c_str()) );
+    }
+};
+
+//----------------------------------------------------------------------------
+void cmCTestSVN::LoadExternals()
+{
+  // Run "svn status" to get the list of external repositories
+  const char* svn = this->CommandLineTool.c_str();
+  const char* svn_status[] = {svn, "status", 0};
+  ExternalParser out(this, "external-out> ");
+  OutputLogger err(this->Log, "external-err> ");
+  this->RunChild(svn_status, &out, &err);
+}
+
+//----------------------------------------------------------------------------
 std::string cmCTestSVN::SVNInfo::BuildLocalPath(std::string const& path) const
 {
   std::string local_path;
diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index 4fb37a6..56265d0 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -68,6 +68,7 @@ private:
   SVNInfo* RootInfo;
 
   std::string LoadInfo(SVNInfo& svninfo);
+  void LoadExternals();
   void LoadModifications();
   void LoadRevisions();
   void LoadRevisions(SVNInfo& svninfo);
@@ -84,10 +85,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

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=41f0f83542ce8d69e4d9a4512a6dc66327f20c8d
commit 41f0f83542ce8d69e4d9a4512a6dc66327f20c8d
Author:     Xavier Besseron <xavier.besseron at uni.lu>
AuthorDate: Mon Sep 3 10:50:07 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 4 08:35:35 2012 -0400

    cmCTestSVN: Use the SVNInfo structure
    
    - Suppress the URL, Root, Base fields from the cmCTestSVN class
    - Update the code to use RootInfo instead
    - LoadInfo(), GuessBase(), and a new LoadRevision() functions work on a given SVNInfo
    - Use the implementation from the base class for LocalPath(), correct path is built by SVNInfo::BuildLocalPath() instead

diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index 53dd20e..32b1ef9 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -49,8 +49,11 @@ void cmCTestSVN::CleanupImpl()
 class cmCTestSVN::InfoParser: public cmCTestVC::LineParser
 {
 public:
-  InfoParser(cmCTestSVN* svn, const char* prefix, std::string& rev):
-    SVN(svn), Rev(rev)
+  InfoParser(cmCTestSVN* svn,
+             const char* prefix,
+             std::string& rev,
+             SVNInfo& svninfo):
+      Rev(rev), SVNRepo(svninfo)
     {
     this->SetLog(&svn->Log, prefix);
     this->RegexRev.compile("^Revision: ([0-9]+)");
@@ -58,8 +61,8 @@ public:
     this->RegexRoot.compile("^Repository Root: +([^ ]+) *$");
     }
 private:
-  cmCTestSVN* SVN;
   std::string& Rev;
+  cmCTestSVN::SVNInfo& SVNRepo;
   cmsys::RegularExpression RegexRev;
   cmsys::RegularExpression RegexURL;
   cmsys::RegularExpression RegexRoot;
@@ -71,11 +74,11 @@ private:
       }
     else if(this->RegexURL.find(this->Line))
       {
-      this->SVN->URL = this->RegexURL.match(1);
+      this->SVNRepo.URL = this->RegexURL.match(1);
       }
     else if(this->RegexRoot.find(this->Line))
       {
-      this->SVN->Root = this->RegexRoot.match(1);
+      this->SVNRepo.Root = this->RegexRoot.match(1);
       }
     return true;
     }
@@ -100,13 +103,13 @@ static bool cmCTestSVNPathStarts(std::string const& p1, std::string const& p2)
 }
 
 //----------------------------------------------------------------------------
-std::string cmCTestSVN::LoadInfo()
+std::string cmCTestSVN::LoadInfo(SVNInfo& svninfo)
 {
   // Run "svn info" to get the repository info from the work tree.
   const char* svn = this->CommandLineTool.c_str();
-  const char* svn_info[] = {svn, "info", 0};
+  const char* svn_info[] = {svn, "info", svninfo.LocalPath.c_str(), 0};
   std::string rev;
-  InfoParser out(this, "info-out> ", rev);
+  InfoParser out(this, "info-out> ", rev, svninfo);
   OutputLogger err(this->Log, "info-err> ");
   this->RunChild(svn_info, &out, &err);
   return rev;
@@ -118,55 +121,78 @@ void cmCTestSVN::NoteOldRevision()
   // Info for root repository
   this->Repositories.push_back( SVNInfo("") );
   this->RootInfo = &(this->Repositories.back());
-  this->OldRevision = this->LoadInfo();
-  this->Log << "Revision before update: " << this->OldRevision << "\n";
-  cmCTestLog(this->CTest, HANDLER_OUTPUT, "   Old revision of repository is: "
-             << this->OldRevision << "\n");
+
+    // Get info for the root repositiry
+    SVNInfo& svninfo = *RootInfo;
+    svninfo.OldRevision = this->LoadInfo(svninfo);
+    this->Log << "Revision for repository '" << svninfo.LocalPath
+              << "' before update: " << svninfo.OldRevision << "\n";
+    cmCTestLog(this->CTest, HANDLER_OUTPUT,
+               "   Old revision of external repository '"
+               << svninfo.LocalPath << "' is: "
+               << svninfo.OldRevision << "\n");
+
+  // Set the global old revision to the one of the root
+  this->OldRevision = this->RootInfo->OldRevision;
   this->PriorRev.Rev = this->OldRevision;
 }
 
 //----------------------------------------------------------------------------
 void cmCTestSVN::NoteNewRevision()
 {
-  this->NewRevision = this->LoadInfo();
-  this->Log << "Revision after update: " << this->NewRevision << "\n";
-  cmCTestLog(this->CTest, HANDLER_OUTPUT, "   New revision of repository is: "
-             << this->NewRevision << "\n");
-
-  // this->Root = ""; // uncomment to test GuessBase
-  this->Log << "URL = " << this->URL << "\n";
-  this->Log << "Root = " << this->Root << "\n";
-
-  // Compute the base path the working tree has checked out under
-  // the repository root.
-  if(!this->Root.empty() && cmCTestSVNPathStarts(this->URL, this->Root))
-    {
-    this->Base = cmCTest::DecodeURL(this->URL.substr(this->Root.size()));
-    this->Base += "/";
-    }
-  this->Log << "Base = " << this->Base << "\n";
+  // Get info for the root repository
+    SVNInfo& svninfo = *RootInfo;
+    svninfo.NewRevision = this->LoadInfo(svninfo);
+    this->Log << "Revision for repository '" << svninfo.LocalPath
+              << "' after update: " << svninfo.NewRevision << "\n";
+    cmCTestLog(this->CTest, HANDLER_OUTPUT,
+               "   New revision of external repository '"
+               << svninfo.LocalPath << "' is: "
+               << svninfo.NewRevision << "\n");
+
+    // svninfo.Root = ""; // uncomment to test GuessBase
+    this->Log << "Repository '" << svninfo.LocalPath
+              << "' URL = " << svninfo.URL << "\n";
+    this->Log << "Repository '" << svninfo.LocalPath
+              << "' Root = " << svninfo.Root << "\n";
+
+    // Compute the base path the working tree has checked out under
+    // the repository root.
+    if(!svninfo.Root.empty()
+       && cmCTestSVNPathStarts(svninfo.URL, svninfo.Root))
+      {
+      svninfo.Base = cmCTest::DecodeURL(
+            svninfo.URL.substr(svninfo.Root.size()));
+      svninfo.Base += "/";
+      }
+    this->Log << "Repository '" << svninfo.LocalPath
+              << "' Base = " << svninfo.Base << "\n";
+
+  // Set the global new revision to the one of the root
+  this->NewRevision = this->RootInfo->NewRevision;
 }
 
 //----------------------------------------------------------------------------
-void cmCTestSVN::GuessBase(std::vector<Change> const& changes)
+void cmCTestSVN::GuessBase(SVNInfo& svninfo,
+                           std::vector<Change> const& changes)
 {
   // Subversion did not give us a good repository root so we need to
   // guess the base path from the URL and the paths in a revision with
   // changes under it.
 
   // Consider each possible URL suffix from longest to shortest.
-  for(std::string::size_type slash = this->URL.find('/');
-      this->Base.empty() && slash != std::string::npos;
-      slash = this->URL.find('/', slash+1))
+  for(std::string::size_type slash = svninfo.URL.find('/');
+      svninfo.Base.empty() && slash != std::string::npos;
+      slash = svninfo.URL.find('/', slash+1))
     {
     // If the URL suffix is a prefix of at least one path then it is the base.
-    std::string base = cmCTest::DecodeURL(this->URL.substr(slash));
+    std::string base = cmCTest::DecodeURL(svninfo.URL.substr(slash));
     for(std::vector<Change>::const_iterator ci = changes.begin();
-        this->Base.empty() && ci != changes.end(); ++ci)
+        svninfo.Base.empty() && ci != changes.end(); ++ci)
       {
       if(cmCTestSVNPathStarts(ci->Path, base))
         {
-        this->Base = base;
+        svninfo.Base = base;
         }
       }
     }
@@ -175,25 +201,9 @@ void cmCTestSVN::GuessBase(std::vector<Change> const& changes)
   // base lie under its path.  If no base was found then the working
   // tree must be a checkout of the entire repo and this will match
   // the leading slash in all paths.
-  this->Base += "/";
-
-  this->Log << "Guessed Base = " << this->Base << "\n";
-}
+  svninfo.Base += "/";
 
-//----------------------------------------------------------------------------
-const char* cmCTestSVN::LocalPath(std::string const& path)
-{
-  if(path.size() > this->Base.size() &&
-     strncmp(path.c_str(), this->Base.c_str(), this->Base.size()) == 0)
-    {
-    // This path lies under the base, so return a relative path.
-    return path.c_str() + this->Base.size();
-    }
-  else
-    {
-    // This path does not lie under the base, so ignore it.
-    return 0;
-    }
+  this->Log << "Guessed Base = " << svninfo.Base << "\n";
 }
 
 //----------------------------------------------------------------------------
@@ -282,11 +292,13 @@ class cmCTestSVN::LogParser: public cmCTestVC::OutputLogger,
                              private cmXMLParser
 {
 public:
-  LogParser(cmCTestSVN* svn, const char* prefix):
-    OutputLogger(svn->Log, prefix), SVN(svn) { this->InitializeParser(); }
+  LogParser(cmCTestSVN* svn, const char* prefix, SVNInfo& svninfo):
+    OutputLogger(svn->Log, prefix), SVN(svn), SVNRepo(svninfo)
+  { this->InitializeParser(); }
   ~LogParser() { this->CleanupParser(); }
 private:
   cmCTestSVN* SVN;
+  cmCTestSVN::SVNInfo& SVNRepo;
 
   typedef cmCTestSVN::Revision Revision;
   typedef cmCTestSVN::Change Change;
@@ -308,6 +320,7 @@ private:
     if(strcmp(name, "logentry") == 0)
       {
       this->Rev = Revision();
+      this->Rev.SVNInfo = &SVNRepo;
       if(const char* rev = this->FindAttribute(atts, "revision"))
         {
         this->Rev.Rev = rev;
@@ -337,7 +350,9 @@ private:
       }
     else if(strcmp(name, "path") == 0 && !this->CData.empty())
       {
-      this->CurChange.Path.assign(&this->CData[0], this->CData.size());
+      std::string orig_path(&this->CData[0], this->CData.size());
+      std::string new_path = SVNRepo.BuildLocalPath( orig_path );
+      this->CurChange.Path.assign(new_path);
       this->Changes.push_back(this->CurChange);
       }
     else if(strcmp(name, "author") == 0 && !this->CData.empty())
@@ -364,22 +379,31 @@ private:
 //----------------------------------------------------------------------------
 void cmCTestSVN::LoadRevisions()
 {
+    // Get revision of the root repository
+    SVNInfo& svninfo = *RootInfo;
+    LoadRevisions(svninfo);
+}
+
+//----------------------------------------------------------------------------
+void cmCTestSVN::LoadRevisions(SVNInfo &svninfo)
+{
   // We are interested in every revision included in the update.
   std::string revs;
-  if(atoi(this->OldRevision.c_str()) < atoi(this->NewRevision.c_str()))
+  if(atoi(svninfo.OldRevision.c_str()) < atoi(svninfo.NewRevision.c_str()))
     {
-    revs = "-r" + this->OldRevision + ":" + this->NewRevision;
+    revs = "-r" + svninfo.OldRevision + ":" + svninfo.NewRevision;
     }
   else
     {
-    revs = "-r" + this->NewRevision;
+    revs = "-r" + svninfo.NewRevision;
     }
 
   // Run "svn log" to get all global revisions of interest.
   const char* svn = this->CommandLineTool.c_str();
-  const char* svn_log[] = {svn, "log", "--xml", "-v", revs.c_str(), 0};
+  const char* svn_log[] = {svn, "log", "--xml", "-v", revs.c_str(),
+                           svninfo.LocalPath.c_str(), 0};
   {
-  LogParser out(this, "log-out> ");
+  LogParser out(this, "log-out> ", svninfo);
   OutputLogger err(this->Log, "log-err> ");
   this->RunChild(svn_log, &out, &err);
   }
@@ -390,9 +414,9 @@ void cmCTestSVN::DoRevisionSVN(Revision const& revision,
                                std::vector<Change> const& changes)
 {
   // Guess the base checkout path from the changes if necessary.
-  if(this->Base.empty() && !changes.empty())
+  if(this->RootInfo->Base.empty() && !changes.empty())
     {
-    this->GuessBase(changes);
+    this->GuessBase(*this->RootInfo, changes);
     }
   this->cmCTestGlobalVC::DoRevision(revision, changes);
 }
@@ -454,7 +478,7 @@ void cmCTestSVN::WriteXMLGlobal(std::ostream& xml)
 {
   this->cmCTestGlobalVC::WriteXMLGlobal(xml);
 
-  xml << "\t<SVNPath>" << this->Base << "</SVNPath>\n";
+  xml << "\t<SVNPath>" << this->RootInfo->Base << "</SVNPath>\n";
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index a084d40..4fb37a6 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -33,15 +33,6 @@ private:
   virtual void NoteNewRevision();
   virtual bool UpdateImpl();
 
-  // 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;
-
   // Information about an SVN repository (root repository or external)
   struct SVNInfo {
 
@@ -76,12 +67,12 @@ private:
   // Pointer to the infos of the root repository.
   SVNInfo* RootInfo;
 
-  std::string LoadInfo();
+  std::string LoadInfo(SVNInfo& svninfo);
   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 DoRevisionSVN(Revision const& revision,
                      std::vector<Change> const& changes);

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fb6d5136926fc142fa893f853b62c5ca8df04d6c
commit fb6d5136926fc142fa893f853b62c5ca8df04d6c
Author:     Xavier Besseron <xavier.besseron at uni.lu>
AuthorDate: Fri Aug 24 10:48:57 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 4 08:35:35 2012 -0400

    cmCTestSVN: Create the SVNInfo for the root repository

diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index 15d9487..53dd20e 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -115,6 +115,9 @@ std::string cmCTestSVN::LoadInfo()
 //----------------------------------------------------------------------------
 void cmCTestSVN::NoteOldRevision()
 {
+  // Info for root repository
+  this->Repositories.push_back( SVNInfo("") );
+  this->RootInfo = &(this->Repositories.back());
   this->OldRevision = this->LoadInfo();
   this->Log << "Revision before update: " << this->OldRevision << "\n";
   cmCTestLog(this->CTest, HANDLER_OUTPUT, "   Old revision of repository is: "

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8d1e10296ae852afd80c789efa73492f87543034
commit 8d1e10296ae852afd80c789efa73492f87543034
Author:     Xavier Besseron <xavier.besseron at uni.lu>
AuthorDate: Fri Aug 24 10:47:59 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 4 08:35:35 2012 -0400

    cmCTestSVN: Add the Repositories list and the RootInfo pointer
    
    The Repository list will contain the SVNInfo of all the repositories
    (root and external ones).  The RootInfo pointer will point to the
    SVNInfo structure of the root repository.

diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index 12feba9..a084d40 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -70,6 +70,12 @@ private:
   // Extended revision structure to include info about external it refers to.
   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();
   void LoadModifications();
   void LoadRevisions();

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2f204bc176e418e810de7034903974e7edb46b14
commit 2f204bc176e418e810de7034903974e7edb46b14
Author:     Xavier Besseron <xavier.besseron at uni.lu>
AuthorDate: Fri Aug 24 10:30:09 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 4 08:35:35 2012 -0400

    cmCTestSVN: Extend Revision struct with SVN repo information
    
    Also rename DoRevision to DoRevisionSVN since the signature changes.

diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index 7ca87e2..15d9487 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -18,6 +18,11 @@
 
 #include <cmsys/RegularExpression.hxx>
 
+struct cmCTestSVN::Revision: public cmCTestVC::Revision
+{
+  cmCTestSVN::SVNInfo* SVNInfo;
+};
+
 //----------------------------------------------------------------------------
 cmCTestSVN::cmCTestSVN(cmCTest* ct, std::ostream& log):
   cmCTestGlobalVC(ct, log)
@@ -325,7 +330,7 @@ private:
     {
     if(strcmp(name, "logentry") == 0)
       {
-      this->SVN->DoRevision(this->Rev, this->Changes);
+      this->SVN->DoRevisionSVN(this->Rev, this->Changes);
       }
     else if(strcmp(name, "path") == 0 && !this->CData.empty())
       {
@@ -378,8 +383,8 @@ void cmCTestSVN::LoadRevisions()
 }
 
 //----------------------------------------------------------------------------
-void cmCTestSVN::DoRevision(Revision const& revision,
-                            std::vector<Change> const& changes)
+void cmCTestSVN::DoRevisionSVN(Revision const& revision,
+                               std::vector<Change> const& changes)
 {
   // Guess the base checkout path from the changes if necessary.
   if(this->Base.empty() && !changes.empty())
diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index 97eeaf5..12feba9 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -67,6 +67,9 @@ private:
 
   };
 
+  // Extended revision structure to include info about external it refers to.
+  struct Revision;
+
   std::string LoadInfo();
   void LoadModifications();
   void LoadRevisions();
@@ -74,8 +77,8 @@ private:
   void GuessBase(std::vector<Change> const& changes);
   const char* LocalPath(std::string const& path);
 
-  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);
 

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list