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  2a327bd34fa9052be435f5ca105d510adcc416c2 (commit)
       via  9c70ed0c06e08b84474db9518cca4ad6f949a34a (commit)
      from  694086e5ab99ecfa29cdeaf4c7824dd2ee890399 (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=2a327bd34fa9052be435f5ca105d510adcc416c2
commit 2a327bd34fa9052be435f5ca105d510adcc416c2
Merge: 694086e 9c70ed0
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Mon Sep 24 11:30:49 2012 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Mon Sep 24 11:30:49 2012 -0400

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


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9c70ed0c06e08b84474db9518cca4ad6f949a34a
commit 9c70ed0c06e08b84474db9518cca4ad6f949a34a
Author:     Nils Gladitz <glad...@scivis.de>
AuthorDate: Sun Sep 23 19:55:48 2012 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Mon Sep 24 11:30:42 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..7f530b0 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,51 @@ 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::size_t i = 0; i < parsedUserOptions.size(); ++i)
+    {
+    args.push_back(parsedUserOptions[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 +450,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 +526,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 +584,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
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to