Browse Source

ExternalProject: Avoid unnecessary git clones (#12564)

In the case of git, only track the repository in the
repository info dependency tracking file. Not the tag.

The download step should only re-run if the repository changes.
The download step should NOT re-run if the tag changes.

The update step is an 'always' re-running step, and so should
already re-run, unless it's been eliminated by use of

  UPDATE_COMMAND ""
David Cole 13 năm trước cách đây
mục cha
commit
987c017f6b
1 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 7 1
      Modules/ExternalProject.cmake

+ 7 - 1
Modules/ExternalProject.cmake

@@ -1079,9 +1079,15 @@ function(_ep_add_download_command name)
       set(git_tag "master")
     endif()
 
+    # For the download step, and the git clone operation, only the repository
+    # should be recorded in a configured RepositoryInfo file. If the repo
+    # changes, the clone script should be run again. But if only the tag
+    # changes, avoid running the clone script again. Let the 'always' running
+    # update step checkout the new tag.
+    #
     set(repository ${git_repository})
     set(module)
-    set(tag ${git_tag})
+    set(tag)
     configure_file(
       "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
       "${stamp_dir}/${name}-gitinfo.txt"