[PATCH] D34955: [Basic] Detect Git submodule version in CMake
Brian Gesiak via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Jul 9 06:14:20 PDT 2017
modocache updated this revision to Diff 105673.
modocache added a comment.
Use submodule's .git directory.
https://reviews.llvm.org/D34955
Files:
lib/Basic/CMakeLists.txt
Index: lib/Basic/CMakeLists.txt
===================================================================
--- lib/Basic/CMakeLists.txt
+++ lib/Basic/CMakeLists.txt
@@ -15,8 +15,25 @@
endfunction()
macro(find_first_existing_vc_file out_var path)
+ set(git_path "${path}/.git")
+
+ # Normally '.git' is a directory that contains a 'logs/HEAD' file that
+ # is updated as modifications are made to the repository. In case the
+ # repository is a Git submodule, '.git' is a file that contains text that
+ # indicates where the repository's Git directory exists.
+ if (EXISTS "${git_path}" AND NOT IS_DIRECTORY "${git_path}")
+ FILE(READ "${git_path}" file_contents)
+ STRING(REGEX REPLACE "\n" "" file_contents "${file_contents}")
+ if ("${file_contents}" MATCHES "^gitdir:")
+ # '.git' is indeed a link to the submodule's Git directory.
+ # Use the path to that Git directory.
+ STRING(REGEX REPLACE "gitdir: " "" file_contents ${file_contents})
+ set(git_path "${git_path}${file_contents}")
+ endif()
+ endif()
+
find_first_existing_file(${out_var}
- "${path}/.git/logs/HEAD" # Git
+ "${git_path}/logs/HEAD" # Git or Git submodule
"${path}/.svn/wc.db" # SVN 1.7
"${path}/.svn/entries" # SVN 1.6
)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D34955.105673.patch
Type: text/x-patch
Size: 1263 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170709/2a692cdd/attachment.bin>
More information about the cfe-commits
mailing list