[Cmake-commits] CMake branch, next, updated. v3.7.0-rc3-966-g38ec4b1

Brad King brad.king at kitware.com
Tue Nov 8 10:06:30 EST 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  38ec4b15d232f45124fe290accc773284b99a679 (commit)
       via  25cd3e21e86cefa0da6eac0ab54a3adc2d01fb72 (commit)
      from  edca8b6c81cee13aeb8bb2b14d4d3c4e79f11342 (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=38ec4b15d232f45124fe290accc773284b99a679
commit 38ec4b15d232f45124fe290accc773284b99a679
Merge: edca8b6 25cd3e2
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 8 10:06:29 2016 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Nov 8 10:06:29 2016 -0500

    Merge topic 'ExternalProject-GIT_CONFIG' into next
    
    25cd3e21 ExternalProject: Allow passing config flags to git clone


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=25cd3e21e86cefa0da6eac0ab54a3adc2d01fb72
commit 25cd3e21e86cefa0da6eac0ab54a3adc2d01fb72
Author:     Christian Fetzer <fetzer.ch at gmail.com>
AuthorDate: Mon Nov 7 21:53:23 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Nov 8 09:57:32 2016 -0500

    ExternalProject: Allow passing config flags to git clone
    
    Add a `GIT_CONFIG` parameter that allows to specify `--config` flags
    that are passed to the git clone command.  This can be used to specify
    for example `core.autocrlf=true`.

diff --git a/Help/release/dev/ExternalProject-GIT_CONFIG.rst b/Help/release/dev/ExternalProject-GIT_CONFIG.rst
new file mode 100644
index 0000000..0702c55
--- /dev/null
+++ b/Help/release/dev/ExternalProject-GIT_CONFIG.rst
@@ -0,0 +1,5 @@
+ExternalProject-GIT_CONFIG
+--------------------------
+
+* The :module:`ExternalProject` module gained a ``GIT_CONFIG`` option
+  to pass ``git -c`` options when cloning.
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 1e0be09..84d5d1a 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -73,6 +73,10 @@ Create custom targets to build projects in external trees
     does not output anything which can make the build appear to have stalled.
     This option forces Git to output progress information during the clone step
     so that forward progress is indicated.
+  ``GIT_CONFIG <option>...``
+    Tell Git to clone with ``--config <option>``.  Use additional configuration
+    parameters when cloning the project (``key=value`` as expected by ``git
+    config``).
   ``HG_REPOSITORY <url>``
     URL of mercurial repo
   ``HG_TAG <tag>``
@@ -514,7 +518,7 @@ define_property(DIRECTORY PROPERTY "EP_UPDATE_DISCONNECTED" INHERITED
   "ExternalProject module."
   )
 
-function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name git_submodules git_shallow git_progress src_name work_dir gitclone_infofile gitclone_stampfile tls_verify)
+function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name git_submodules git_shallow git_progress git_config src_name work_dir gitclone_infofile gitclone_stampfile tls_verify)
   if(NOT GIT_VERSION_STRING VERSION_LESS 1.7.10)
     set(git_clone_shallow_options "--depth 1 --no-single-branch")
   else()
@@ -565,6 +569,11 @@ if(git_progress)
   list(APPEND git_clone_options --progress)
 endif()
 
+set(git_config ${git_config})
+foreach(config IN LISTS git_config)
+  list(APPEND git_clone_options --config \${config})
+endforeach()
+
 # try the clone 3 times incase there is an odd git clone issue
 set(error_code 1)
 set(number_of_tries 0)
@@ -1812,6 +1821,7 @@ function(_ep_add_download_command name)
     endif()
     get_property(git_shallow TARGET ${name} PROPERTY _EP_GIT_SHALLOW)
     get_property(git_progress TARGET ${name} PROPERTY _EP_GIT_PROGRESS)
+    get_property(git_config TARGET ${name} PROPERTY _EP_GIT_CONFIG)
 
     # For the download step, and the git clone operation, only the repository
     # should be recorded in a configured RepositoryInfo file. If the repo
@@ -1836,7 +1846,7 @@ function(_ep_add_download_command name)
     # The script will delete the source directory and then call git clone.
     #
     _ep_write_gitclone_script(${tmp_dir}/${name}-gitclone.cmake ${source_dir}
-      ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} "${git_submodules}" "${git_shallow}" "${git_progress}" ${src_name} ${work_dir}
+      ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} "${git_submodules}" "${git_shallow}" "${git_progress}" "${git_config}" ${src_name} ${work_dir}
       ${stamp_dir}/${name}-gitinfo.txt ${stamp_dir}/${name}-gitclone-lastrun.txt "${tls_verify}"
       )
     set(comment "Performing download step (git clone) for '${name}'")
diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt
index ca6462d..6d421fa 100644
--- a/Tests/ExternalProject/CMakeLists.txt
+++ b/Tests/ExternalProject/CMakeLists.txt
@@ -363,6 +363,20 @@ if(do_git_tests)
   )
   set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
 
+  # Live git / master (no GIT_TAG), but git config flags
+  #
+  set(proj TutorialStep1-GIT-config)
+  ExternalProject_Add(${proj}
+    GIT_REPOSITORY "${local_git_repo}"
+    GIT_CONFIG core.eol=lf core.autocrlf=input
+    CMAKE_GENERATOR "${CMAKE_GENERATOR}"
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    INSTALL_COMMAND ""
+    DEPENDS "SetupLocalGITRepository"
+    LOG_UPDATE 1
+  )
+  set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
+
   # git by explicit branch/tag with empty submodule list
   #
   set(proj TutorialStep1-GIT-bytag-withsubmodules)

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

Summary of changes:
 Help/release/dev/ExternalProject-GIT_CONFIG.rst |    5 +++++
 Modules/ExternalProject.cmake                   |   14 ++++++++++++--
 Tests/ExternalProject/CMakeLists.txt            |   14 ++++++++++++++
 3 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100644 Help/release/dev/ExternalProject-GIT_CONFIG.rst


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list