diff options
author | Brad King <brad.king@kitware.com> | 2010-06-08 20:37:04 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2010-06-08 20:50:17 (GMT) |
commit | c3781efb28a35f54ed6306354330734994f2c8b1 (patch) | |
tree | 3612ad00fb1dc19bf6e216fc19288c993f222765 /Tests | |
parent | 2eae651acc45c303008d9870a6a4f9da3d8bcf19 (diff) | |
download | CMake-c3781efb28a35f54ed6306354330734994f2c8b1.zip CMake-c3781efb28a35f54ed6306354330734994f2c8b1.tar.gz CMake-c3781efb28a35f54ed6306354330734994f2c8b1.tar.bz2 |
ctest_update: Support Git upstream branch rewrites
Use 'git fetch' followed by 'git reset' to update the source tree. This
is better than 'git pull' because it can handle a rewritten upstream
branch and does not leave local modifications. After fetch, parse
FETCH_HEAD to find the merge head that 'git pull' would choose to track
the upstream branch. Then reset to the selected head.
In the normal fast-forward case the behavior remains unchanged.
However, now local modifications and commits will be erased, and
upstream rewrites are handled smoothly. This ensures that the upstream
branch is tested as expected.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CTestUpdateCommon.cmake | 6 | ||||
-rw-r--r-- | Tests/CTestUpdateGIT.cmake.in | 2 | ||||
-rwxr-xr-x | Tests/CTestUpdateGIT.sh.in | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake index c62505c..a52cb14 100644 --- a/Tests/CTestUpdateCommon.cmake +++ b/Tests/CTestUpdateCommon.cmake @@ -191,13 +191,17 @@ function(run_dashboard_command_line bin_dir) # Verify the updates reported by CTest. list(APPEND UPDATE_MAYBE Updated{subdir}) + set(_modified Modified{CTestConfig.cmake}) + if(UPDATE_NO_MODIFIED) + set(_modified "") + endif() check_updates(${bin_dir} Updated{foo.txt} Updated{bar.txt} Updated{zot.txt} Updated{subdir/foo.txt} Updated{subdir/bar.txt} - Modified{CTestConfig.cmake} + ${_modified} ) endfunction(run_dashboard_command_line) diff --git a/Tests/CTestUpdateGIT.cmake.in b/Tests/CTestUpdateGIT.cmake.in index 95461bb..4ac1b31 100644 --- a/Tests/CTestUpdateGIT.cmake.in +++ b/Tests/CTestUpdateGIT.cmake.in @@ -227,7 +227,9 @@ UpdateCommand: ${GIT} ") # Run the dashboard command line interface. +set(UPDATE_NO_MODIFIED 1) run_dashboard_command_line(user-binary) +set(UPDATE_NO_MODIFIED 0) rewind_source(user-source) modify_content(user-source) diff --git a/Tests/CTestUpdateGIT.sh.in b/Tests/CTestUpdateGIT.sh.in index 4761d32..e7586d6 100755 --- a/Tests/CTestUpdateGIT.sh.in +++ b/Tests/CTestUpdateGIT.sh.in @@ -1,5 +1,5 @@ #!/bin/sh -if test "x$1" = "xpull"; then +if test "x$1" = "xpull" -o "x$1" = "xreset"; then "@GIT@" "$@" && sleep 1 && touch foo.txt else exec "@GIT@" "$@" |