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 ""
This commit is contained in:
David Cole 2012-04-25 17:30:18 -04:00
parent 8bb46ee787
commit 987c017f6b
1 changed files with 7 additions and 1 deletions

View File

@ -1079,9 +1079,15 @@ function(_ep_add_download_command name)
set(git_tag "master") set(git_tag "master")
endif() 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(repository ${git_repository})
set(module) set(module)
set(tag ${git_tag}) set(tag)
configure_file( configure_file(
"${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in" "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
"${stamp_dir}/${name}-gitinfo.txt" "${stamp_dir}/${name}-gitinfo.txt"