Merge topic 'ctest-run-submodule-sync'
c18d91ad
Help: add release notes for topic 'ctest-run-submodule-sync'7f560743
cmCTestGIT: run `git submodule sync` before updating submodules06b310b5
cmCTestGIT: add an option to initialize submodules on update56c1ea40
cmCTestGIT: fix git version references
This commit is contained in:
commit
fd40b0f875
|
@ -407,6 +407,7 @@ Variables for CTest
|
|||
/variable/CTEST_DROP_SITE_USER
|
||||
/variable/CTEST_EXTRA_COVERAGE_GLOB
|
||||
/variable/CTEST_GIT_COMMAND
|
||||
/variable/CTEST_GIT_INIT_SUBMODULES
|
||||
/variable/CTEST_GIT_UPDATE_CUSTOM
|
||||
/variable/CTEST_GIT_UPDATE_OPTIONS
|
||||
/variable/CTEST_HG_COMMAND
|
||||
|
|
|
@ -589,6 +589,12 @@ Configuration settings to specify the version control tool include:
|
|||
* `CTest Script`_ variable: :variable:`CTEST_GIT_COMMAND`
|
||||
* :module:`CTest` module variable: ``GITCOMMAND``
|
||||
|
||||
``GITInitSubmodules``
|
||||
If set, CTest will update the repository's submodules before updating.
|
||||
|
||||
* `CTest Script`_ variable: :variable:`CTEST_GIT_INIT_SUBMODULES`
|
||||
* :module:`CTest` module variable: ``CTEST_GIT_INIT_SUBMODULES``
|
||||
|
||||
``GITUpdateCustom``
|
||||
Specify a custom command line (as a semicolon-separated list) to run
|
||||
in the source tree (Git work tree) to update it instead of running
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
ctest-run-submodule-sync
|
||||
------------------------
|
||||
|
||||
* The :command:`ctest_update` command now looks at the
|
||||
:variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
|
||||
submodules should be updated or not before updating.
|
||||
* The :command:`ctest_update` command will now synchronize submodules on an
|
||||
update. Updates which add submodules or change a submodule's URL will now be
|
||||
pulled properly.
|
|
@ -0,0 +1,5 @@
|
|||
CTEST_GIT_INIT_SUBMODULES
|
||||
-------------------------
|
||||
|
||||
Specify the CTest ``GITInitSubmodules`` setting
|
||||
in a :manual:`ctest(1)` dashboard client script.
|
|
@ -52,6 +52,7 @@ SVNUpdateOptions: @SVN_UPDATE_OPTIONS@
|
|||
|
||||
# Git options
|
||||
GITCommand: @GITCOMMAND@
|
||||
GITInitSubmodules: @CTEST_GIT_INIT_SUBMODULES@
|
||||
GITUpdateOptions: @GIT_UPDATE_OPTIONS@
|
||||
GITUpdateCustom: @CTEST_GIT_UPDATE_CUSTOM@
|
||||
|
||||
|
|
|
@ -273,21 +273,60 @@ 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> ");
|
||||
|
||||
bool ret;
|
||||
|
||||
std::string init_submodules =
|
||||
this->CTest->GetCTestConfiguration("GITInitSubmodules");
|
||||
if (cmSystemTools::IsOn(init_submodules.c_str()))
|
||||
{
|
||||
char const* git_submodule_init[] = {git, "submodule", "init", 0};
|
||||
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());
|
||||
}
|
||||
|
|
|
@ -54,6 +54,8 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler()
|
|||
"GITCommand", "CTEST_GIT_COMMAND", this->Quiet);
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
"GITUpdateOptions", "CTEST_GIT_UPDATE_OPTIONS", this->Quiet);
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
"GITInitSubmodules", "CTEST_GIT_INIT_SUBMODULES", this->Quiet);
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
"GITUpdateCustom", "CTEST_GIT_UPDATE_CUSTOM", this->Quiet);
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
|
|
Loading…
Reference in New Issue