在我的项目中,我git pull
不时使用几个不同的 git 存储库。我想并行更新这些以提高速度。在 shell 脚本中,合并输出可以交错,因此我不知道哪些存储库实际上已被更新。因此,我使用以下 CMake 脚本使用 Ninja(它会缓存输出直到命令完成,然后按命令完成的顺序输出它们):
cmake_minimum_required(VERSION 2.8.8)
project("gitupdate" NONE)
find_package(Git)
function(update_git _dir _remote _branch)
set(_fulldir "${PROJECT_SOURCE_DIR}/${_dir}")
add_custom_target("${_dir}-${_remote}-${_branch}" ALL
WORKING_DIRECTORY ${_fulldir}
COMMAND ${GIT_EXECUTABLE} pull ${_remote} ${_branch}
COMMENT "Updating ${_dir} ${_remote} ${_branch}..."
VERBATIM
)
endfunction()
这工作正常,直到我有一个从多个遥控器更新的 git 目录。例如
update_git(subproject remoteA master)
update_git(subproject remoteB master)
我可以以某种方式告诉 CMake 不要同时执行这些目标吗?
PS:Git 语法着色从 Ninja 缓存的输出中消失了。有机会保留这些吗?