[Cmake-commits] CMake branch, next, updated. v3.5.1-710-gd28f403
Brad King
brad.king at kitware.com
Thu Mar 31 08:44:26 EDT 2016
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 d28f403a8c9b3ab5231aa0dfaab006a8f1f116d1 (commit)
via df48b7c86d899dee9c5345b782d69f3d4699556f (commit)
from 5d5a90d31233a2751f47f73e9205cdd594da1d95 (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 -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d28f403a8c9b3ab5231aa0dfaab006a8f1f116d1
commit d28f403a8c9b3ab5231aa0dfaab006a8f1f116d1
Merge: 5d5a90d df48b7c
Author: Brad King <brad.king at kitware.com>
AuthorDate: Thu Mar 31 08:44:25 2016 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Mar 31 08:44:25 2016 -0400
Merge topic 'ctest-run-submodule-sync' into next
df48b7c8 cmCTestGIT: run git submodule {init,sync} to update
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=df48b7c86d899dee9c5345b782d69f3d4699556f
commit df48b7c86d899dee9c5345b782d69f3d4699556f
Author: Ben Boeckel <ben.boeckel at kitware.com>
AuthorDate: Tue Mar 29 11:05:15 2016 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 31 08:38:14 2016 -0400
cmCTestGIT: run git submodule {init,sync} to update
Repositories which add submodules or change their URLs are not fixed by
CTest when updating a git repository.
diff --git a/Help/release/dev/ctest-run-submodule-sync.rst b/Help/release/dev/ctest-run-submodule-sync.rst
new file mode 100644
index 0000000..55e87c0
--- /dev/null
+++ b/Help/release/dev/ctest-run-submodule-sync.rst
@@ -0,0 +1,6 @@
+ctest-run-submodule-sync
+------------------------
+
+* The :command:`ctest_update` command will now initialize and synchronize
+ submodules on an update. Updates which add submodules or change a
+ submodule's URL will now be pulled properly.
diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx
index bbb3b9d..ee462f8 100644
--- a/Source/CTest/cmCTestGIT.cxx
+++ b/Source/CTest/cmCTestGIT.cxx
@@ -273,21 +273,53 @@ bool cmCTestGIT::UpdateImpl()
std::string top_dir = this->FindTopDir();
const char* git = this->CommandLineTool.c_str();
const char* recursive = "--recursive";
+ const char* sync_recursive = "--recursive";
- // Git < 1.6.5.0 did not support --recursive
+ // Git < 1.6.5 did not support submodule --recursive
if(this->GetGitVersion() < cmCTestGITVersion(1,6,5,0))
{
recursive = 0;
- // No need to require >= 1.6.5.0 if there are no submodules.
+ // No need to require >= 1.6.5 if there are no submodules.
if(cmSystemTools::FileExists((top_dir + "/.gitmodules").c_str()))
{
- this->Log << "Git < 1.6.5.0 cannot update submodules recursively\n";
+ this->Log << "Git < 1.6.5 cannot update submodules recursively\n";
+ }
+ }
+
+ // Git < 1.8.1 did not support sync --recursive
+ if(this->GetGitVersion() < cmCTestGITVersion(1,8,1,0))
+ {
+ sync_recursive = 0;
+ // No need to require >= 1.8.1 if there are no submodules.
+ if(cmSystemTools::FileExists((top_dir + "/.gitmodules").c_str()))
+ {
+ this->Log << "Git < 1.8.1 cannot synchronize submodules recursively\n";
}
}
- char const* git_submodule[] = {git, "submodule", "update", recursive, 0};
OutputLogger submodule_out(this->Log, "submodule-out> ");
OutputLogger submodule_err(this->Log, "submodule-err> ");
+
+ char const* git_submodule_init[] = {git, "submodule", "init", 0};
+ bool ret = this->RunChild(git_submodule_init, &submodule_out, &submodule_err,
+ top_dir.c_str());
+
+ if (!ret)
+ {
+ return false;
+ }
+
+ char const* git_submodule_sync[] = {git, "submodule", "sync",
+ sync_recursive, 0};
+ ret = this->RunChild(git_submodule_sync, &submodule_out, &submodule_err,
+ top_dir.c_str());
+
+ if (!ret)
+ {
+ return false;
+ }
+
+ char const* git_submodule[] = {git, "submodule", "update", recursive, 0};
return this->RunChild(git_submodule, &submodule_out, &submodule_err,
top_dir.c_str());
}
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list