[Cmake-commits] CMake branch, next, updated. v2.8.9-741-gfdc4ecd

Brad King brad.king at kitware.com
Tue Sep 25 13:37:21 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  fdc4ecdc4c16c5a1e8ff00705fc25fd1d2493522 (commit)
       via  9ace8015784fe0e6ca734bdc1a02d5550b5c565c (commit)
      from  c19da5830bde19c6710cdbe65c43fce4656c61ad (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=fdc4ecdc4c16c5a1e8ff00705fc25fd1d2493522
commit fdc4ecdc4c16c5a1e8ff00705fc25fd1d2493522
Merge: c19da58 9ace801
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Sep 25 13:37:14 2012 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Sep 25 13:37:14 2012 -0400

    Merge topic 'ctest-svn-non-interactive' into next
    
    9ace801 ctest_update: Tell svn not to prompt interactively (#13024)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9ace8015784fe0e6ca734bdc1a02d5550b5c565c
commit 9ace8015784fe0e6ca734bdc1a02d5550b5c565c
Author:     Nils Gladitz <gladitz at scivis.de>
AuthorDate: Sun Sep 23 19:55:48 2012 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Sep 25 13:36:47 2012 -0400

    ctest_update: Tell svn not to prompt interactively (#13024)
    
    While at it, add SVNOptions/CTEST_SVN_OPTIONS configuration settings to
    add options to all svn invocations instead of just "svn update".

diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in
index ad7f805..9e49ac7 100644
--- a/Modules/DartConfiguration.tcl.in
+++ b/Modules/DartConfiguration.tcl.in
@@ -44,6 +44,7 @@ CVSUpdateOptions: @CVS_UPDATE_OPTIONS@
 
 # Subversion options
 SVNCommand: @SVNCOMMAND@
+SVNOptions: @CTEST_SVN_OPTIONS@
 SVNUpdateOptions: @SVN_UPDATE_OPTIONS@
 
 # Git options
diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index 49cea2e..2668c8e 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -38,11 +38,11 @@ cmCTestSVN::~cmCTestSVN()
 //----------------------------------------------------------------------------
 void cmCTestSVN::CleanupImpl()
 {
-  const char* svn = this->CommandLineTool.c_str();
-  const char* svn_cleanup[] = {svn, "cleanup", 0};
+  std::vector<const char*> svn_cleanup;
+  svn_cleanup.push_back("cleanup");
   OutputLogger out(this->Log, "cleanup-out> ");
   OutputLogger err(this->Log, "cleanup-err> ");
-  this->RunChild(svn_cleanup, &out, &err);
+  this->RunSVNCommand(svn_cleanup, &out, &err);
 }
 
 //----------------------------------------------------------------------------
@@ -106,12 +106,13 @@ static bool cmCTestSVNPathStarts(std::string const& p1, std::string const& p2)
 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", svninfo.LocalPath.c_str(), 0};
+  std::vector<const char*> svn_info;
+  svn_info.push_back("info");
+  svn_info.push_back(svninfo.LocalPath.c_str());
   std::string rev;
   InfoParser out(this, "info-out> ", rev, svninfo);
   OutputLogger err(this->Log, "info-err> ");
-  this->RunChild(svn_info, &out, &err);
+  this->RunSVNCommand(svn_info, &out, &err);
   return rev;
 }
 
@@ -285,19 +286,52 @@ bool cmCTestSVN::UpdateImpl()
     }
 
   std::vector<char const*> svn_update;
-  svn_update.push_back(this->CommandLineTool.c_str());
   svn_update.push_back("update");
-  svn_update.push_back("--non-interactive");
   for(std::vector<cmStdString>::const_iterator ai = args.begin();
       ai != args.end(); ++ai)
     {
     svn_update.push_back(ai->c_str());
     }
-  svn_update.push_back(0);
 
   UpdateParser out(this, "up-out> ");
   OutputLogger err(this->Log, "up-err> ");
-  return this->RunUpdateCommand(&svn_update[0], &out, &err);
+  return this->RunSVNCommand(svn_update, &out, &err);
+}
+
+//----------------------------------------------------------------------------
+bool cmCTestSVN::RunSVNCommand(std::vector<char const*> const& parameters,
+    OutputParser* out, OutputParser* err)
+{
+  if(parameters.empty()) return false;
+
+  std::vector<char const*> args;
+  args.push_back(this->CommandLineTool.c_str());
+
+  args.insert(args.end(), parameters.begin(), parameters.end());
+
+  args.push_back("--non-interactive");
+
+  std::string userOptions =
+    this->CTest->GetCTestConfiguration("SVNOptions");
+
+  std::vector<cmStdString> parsedUserOptions =
+    cmSystemTools::ParseArguments(userOptions.c_str());
+  for(std::vector<cmStdString>::iterator i = parsedUserOptions.begin();
+      i != parsedUserOptions.end(); ++i)
+    {
+    args.push_back(i->c_str());
+    }
+
+  args.push_back(0);
+
+  if(strcmp(parameters[0], "update") == 0)
+    {
+    return RunUpdateCommand(&args[0], out, err);
+    }
+  else
+    {
+    return RunChild(&args[0], out, err);
+    }
 }
 
 //----------------------------------------------------------------------------
@@ -417,14 +451,15 @@ void cmCTestSVN::LoadRevisions(SVNInfo &svninfo)
     }
 
   // 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(),
-                           svninfo.LocalPath.c_str(), 0};
-  {
+  std::vector<const char*> svn_log;
+  svn_log.push_back("log");
+  svn_log.push_back("--xml");
+  svn_log.push_back("-v");
+  svn_log.push_back(revs.c_str());
+  svn_log.push_back(svninfo.LocalPath.c_str());
   LogParser out(this, "log-out> ", svninfo);
   OutputLogger err(this->Log, "log-err> ");
-  this->RunChild(svn_log, &out, &err);
-  }
+  this->RunSVNCommand(svn_log, &out, &err);
 }
 
 //----------------------------------------------------------------------------
@@ -492,11 +527,11 @@ private:
 void cmCTestSVN::LoadModifications()
 {
   // Run "svn status" which reports local modifications.
-  const char* svn = this->CommandLineTool.c_str();
-  const char* svn_status[] = {svn, "status", "--non-interactive", 0};
+  std::vector<const char*> svn_status;
+  svn_status.push_back("status");
   StatusParser out(this, "status-out> ");
   OutputLogger err(this->Log, "status-err> ");
-  this->RunChild(svn_status, &out, &err);
+  this->RunSVNCommand(svn_status, &out, &err);
 }
 
 //----------------------------------------------------------------------------
@@ -550,11 +585,11 @@ private:
 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};
+  std::vector<const char*> svn_status;
+  svn_status.push_back("status");
   ExternalParser out(this, "external-out> ");
   OutputLogger err(this->Log, "external-err> ");
-  this->RunChild(svn_status, &out, &err);
+  this->RunSVNCommand(svn_status, &out, &err);
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index 56265d0..73d676e 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -33,6 +33,9 @@ private:
   virtual void NoteNewRevision();
   virtual bool UpdateImpl();
 
+  bool RunSVNCommand(std::vector<char const*> const& parameters,
+    OutputParser* out, OutputParser* err);
+
   // Information about an SVN repository (root repository or external)
   struct SVNInfo {
 
diff --git a/Source/CTest/cmCTestUpdateCommand.cxx b/Source/CTest/cmCTestUpdateCommand.cxx
index 8414349..2ca9f6c 100644
--- a/Source/CTest/cmCTestUpdateCommand.cxx
+++ b/Source/CTest/cmCTestUpdateCommand.cxx
@@ -44,6 +44,8 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler()
   this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
     "SVNUpdateOptions", "CTEST_SVN_UPDATE_OPTIONS");
   this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
+    "SVNOptions", "CTEST_SVN_OPTIONS");
+  this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
     "BZRCommand", "CTEST_BZR_COMMAND");
   this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
     "BZRUpdateOptions", "CTEST_BZR_UPDATE_OPTIONS");

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

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list