CTest: Fix ctest_update with 'HEAD' file in source tree

Add the '--' command-line separator to make the HEAD reference
unambiguous.  Extend the CTest.UpdateGIT test to cover this case.
This commit is contained in:
Brad King 2013-02-28 11:52:30 -05:00
parent 42c56c824c
commit 78b81b773c
2 changed files with 8 additions and 6 deletions

View File

@ -68,7 +68,7 @@ std::string cmCTestGIT::GetWorkingRevision()
{
// Run plumbing "git rev-list" to get work tree revision.
const char* git = this->CommandLineTool.c_str();
const char* git_rev_list[] = {git, "rev-list", "-n", "1", "HEAD", 0};
const char* git_rev_list[] = {git, "rev-list", "-n", "1", "HEAD", "--", 0};
std::string rev;
OneLineParser out(this, "rl-out> ", rev);
OutputLogger err(this->Log, "rl-err> ");
@ -639,7 +639,7 @@ void cmCTestGIT::LoadModifications()
this->RunChild(git_update_index, &ui_out, &ui_err);
// Use 'git diff-index' to get modified files.
const char* git_diff_index[] = {git, "diff-index", "-z", "HEAD", 0};
const char* git_diff_index[] = {git, "diff-index", "-z", "HEAD", "--", 0};
DiffParser out(this, "di-out> ");
OutputLogger err(this->Log, "di-err> ");
this->RunChild(git_diff_index, &out, &err);

View File

@ -76,6 +76,8 @@ run_child(WORKING_DIRECTORY ${TOP}/module
# Import initial content into the repository.
message("Importing content...")
create_content(import)
file(WRITE ${TOP}/import/HEAD "HEAD\n")
file(WRITE ${TOP}/import/master "master\n")
# Import the content into the repository.
run_child(WORKING_DIRECTORY ${TOP}/import
@ -157,19 +159,19 @@ update_content(user-source files_added files_removed dirs_added)
if(dirs_added)
run_child(
WORKING_DIRECTORY ${TOP}/user-source
COMMAND ${GIT} add ${dirs_added}
COMMAND ${GIT} add -- ${dirs_added}
)
endif()
run_child(
WORKING_DIRECTORY ${TOP}/user-source
COMMAND ${GIT} add ${files_added}
COMMAND ${GIT} add -- ${files_added}
)
run_child(
WORKING_DIRECTORY ${TOP}/user-source
COMMAND ${GIT} rm ${files_removed}
COMMAND ${GIT} rm -- ${files_removed}
)
run_child(WORKING_DIRECTORY ${TOP}/user-source/module
COMMAND ${GIT} checkout master
COMMAND ${GIT} checkout master --
)
run_child(
WORKING_DIRECTORY ${TOP}/user-source