0
在我的項目中,我不時地使用幾個不同的git存儲庫,我需要git pull
。我想更新這些並行的速度。在shell腳本中,合併輸出可以交錯,以至於我不知道哪些存儲庫實際上已更新。所以我用忍者(用於緩存的輸出,直到命令完成,然後輸出他們在命令完成的順序)使用下面的CMake的腳本:互斥並行
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:從Ninja緩存的輸出中消失了Git語法着色。有沒有機會保留這些?
着色可通過使GIT中回收命令標誌'--color = always',這樣它會忽視的事實是它的輸出不直接進入到TTY。 – Novelocrat
@Novelocrat不起作用:'error:unknown option'color = always''。 'git config --global color.ui always'也不起作用。請注意,這是MSYS bash --rxvt。 Windows終端不理解ANSI轉義碼,不瞭解rxvt。 – Meinersbur