diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp index 18adb570b37..d48aeb4906d 100644 --- a/src/plugins/git/commitdata.cpp +++ b/src/plugins/git/commitdata.cpp @@ -94,6 +94,8 @@ static FileStates stateFor(const QChar &c) return CopiedFile; case 'U': return UnmergedFile; + case 'T': + return TypeChangedFile; case '?': return UntrackedFile; default: @@ -209,6 +211,8 @@ QString CommitData::stateDisplayName(const FileStates &state) resultState.append(tr("renamed")); else if (state & CopiedFile) resultState.append(tr("copied")); + else if (state & TypeChangedFile) + resultState.append(tr("typechange")); if (state & UnmergedUs) { if (state & UnmergedThem) resultState.append(tr(" by both")); diff --git a/src/plugins/git/commitdata.h b/src/plugins/git/commitdata.h index c9162e48762..4a1beb04bd7 100644 --- a/src/plugins/git/commitdata.h +++ b/src/plugins/git/commitdata.h @@ -71,6 +71,7 @@ enum FileState { RenamedFile = 0x10, CopiedFile = 0x20, UnmergedFile = 0x40, + TypeChangedFile = 0x80, UnmergedUs = 0x100, UnmergedThem = 0x200, diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index b3f6ecb7ce4..41078392a7e 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2472,7 +2472,7 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory, filesToAdd.append(file); if ((state & StagedFile) && !checked) { - if (state & (ModifiedFile | AddedFile | DeletedFile)) { + if (state & (ModifiedFile | AddedFile | DeletedFile | TypeChangedFile)) { filesToReset.append(file); } else if (state & (RenamedFile | CopiedFile)) { const QString newFile = file.mid(file.indexOf(renameSeparator) + renameSeparator.count()); @@ -2482,7 +2482,7 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory, QTC_ASSERT(false, continue); // There should not be unmerged files when committing! } - if (state == ModifiedFile && checked) { + if ((state == ModifiedFile || state == TypeChangedFile) && checked) { filesToReset.removeAll(file); filesToAdd.append(file); } else if (state == AddedFile && checked) { diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 98c94260b3e..90498282351 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -1396,6 +1396,10 @@ void GitPlugin::testStatusParsing_data() QTest::newRow(" M") << FileStates(ModifiedFile) << FileStates(UnknownFileState); QTest::newRow(" D") << FileStates(DeletedFile) << FileStates(UnknownFileState); + QTest::newRow(" T") << FileStates(TypeChangedFile) << FileStates(UnknownFileState); + QTest::newRow("T ") << (TypeChangedFile | StagedFile) << FileStates(UnknownFileState); + QTest::newRow("TM") << (TypeChangedFile | StagedFile) << FileStates(ModifiedFile); + QTest::newRow("MT") << (ModifiedFile | StagedFile) << FileStates(TypeChangedFile); QTest::newRow("M ") << (ModifiedFile | StagedFile) << FileStates(UnknownFileState); QTest::newRow("MM") << (ModifiedFile | StagedFile) << FileStates(ModifiedFile); QTest::newRow("MD") << (ModifiedFile | StagedFile) << FileStates(DeletedFile); diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp index c43065e24bb..5ac2fbdd837 100644 --- a/src/plugins/git/gitsubmiteditor.cpp +++ b/src/plugins/git/gitsubmiteditor.cpp @@ -146,7 +146,7 @@ void GitSubmitEditor::setCommitData(const CommitData &d) return SubmitFileModel::FileUnmerged; if (state.testFlag(AddedFile) || state.testFlag(UntrackedFile)) return SubmitFileModel::FileAdded; - if (state.testFlag(ModifiedFile)) + if (state.testFlag(ModifiedFile) || state.testFlag(TypeChangedFile)) return SubmitFileModel::FileModified; if (state.testFlag(DeletedFile)) return SubmitFileModel::FileDeleted;