From 8bd231866afcae6aa8edb2d9df5f574bb017c0ed Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 9 Feb 2010 13:31:32 -0500 Subject: cmCTestGIT: Refresh index for local modifications We use 'git diff-index' to detect local modifications after pull. On some filesystems the work tree timestamps of a few files may be dated after the index, making them appear as locally modified. We address the problem by using 'git update-index --refresh' to refresh the index and avoid false local modifications. --- Source/CTest/cmCTestGIT.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx index 8108b19..6d5bf65 100644 --- a/Source/CTest/cmCTestGIT.cxx +++ b/Source/CTest/cmCTestGIT.cxx @@ -409,10 +409,16 @@ void cmCTestGIT::LoadRevisions() //---------------------------------------------------------------------------- void cmCTestGIT::LoadModifications() { - // Use 'git diff-index' to get modified files. const char* git = this->CommandLineTool.c_str(); - const char* git_diff_index[] = {git, "diff-index", "-z", "HEAD", 0}; + // Use 'git update-index' to refresh the index w.r.t. the work tree. + const char* git_update_index[] = {git, "update-index", "--refresh", 0}; + OutputLogger ui_out(this->Log, "ui-out> "); + OutputLogger ui_err(this->Log, "ui-err> "); + 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}; DiffParser out(this, "di-out> "); OutputLogger err(this->Log, "di-err> "); this->RunChild(git_diff_index, &out, &err); -- cgit v0.12