Git: Support typechange

Replacing a normal file with a symbolic link.

Change-Id: Id07ab339e8fcdf039b61d6e459b8d751d499f4f6
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Orgad Shaneh
2016-11-08 09:38:41 +02:00
committed by Orgad Shaneh
parent b98f2a3059
commit 877a10c8ef
5 changed files with 12 additions and 3 deletions

View File

@@ -94,6 +94,8 @@ static FileStates stateFor(const QChar &c)
return CopiedFile; return CopiedFile;
case 'U': case 'U':
return UnmergedFile; return UnmergedFile;
case 'T':
return TypeChangedFile;
case '?': case '?':
return UntrackedFile; return UntrackedFile;
default: default:
@@ -209,6 +211,8 @@ QString CommitData::stateDisplayName(const FileStates &state)
resultState.append(tr("renamed")); resultState.append(tr("renamed"));
else if (state & CopiedFile) else if (state & CopiedFile)
resultState.append(tr("copied")); resultState.append(tr("copied"));
else if (state & TypeChangedFile)
resultState.append(tr("typechange"));
if (state & UnmergedUs) { if (state & UnmergedUs) {
if (state & UnmergedThem) if (state & UnmergedThem)
resultState.append(tr(" by both")); resultState.append(tr(" by both"));

View File

@@ -71,6 +71,7 @@ enum FileState {
RenamedFile = 0x10, RenamedFile = 0x10,
CopiedFile = 0x20, CopiedFile = 0x20,
UnmergedFile = 0x40, UnmergedFile = 0x40,
TypeChangedFile = 0x80,
UnmergedUs = 0x100, UnmergedUs = 0x100,
UnmergedThem = 0x200, UnmergedThem = 0x200,

View File

@@ -2472,7 +2472,7 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory,
filesToAdd.append(file); filesToAdd.append(file);
if ((state & StagedFile) && !checked) { if ((state & StagedFile) && !checked) {
if (state & (ModifiedFile | AddedFile | DeletedFile)) { if (state & (ModifiedFile | AddedFile | DeletedFile | TypeChangedFile)) {
filesToReset.append(file); filesToReset.append(file);
} else if (state & (RenamedFile | CopiedFile)) { } else if (state & (RenamedFile | CopiedFile)) {
const QString newFile = file.mid(file.indexOf(renameSeparator) + renameSeparator.count()); 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! 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); filesToReset.removeAll(file);
filesToAdd.append(file); filesToAdd.append(file);
} else if (state == AddedFile && checked) { } else if (state == AddedFile && checked) {

View File

@@ -1396,6 +1396,10 @@ void GitPlugin::testStatusParsing_data()
QTest::newRow(" M") << FileStates(ModifiedFile) << FileStates(UnknownFileState); QTest::newRow(" M") << FileStates(ModifiedFile) << FileStates(UnknownFileState);
QTest::newRow(" D") << FileStates(DeletedFile) << 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("M ") << (ModifiedFile | StagedFile) << FileStates(UnknownFileState);
QTest::newRow("MM") << (ModifiedFile | StagedFile) << FileStates(ModifiedFile); QTest::newRow("MM") << (ModifiedFile | StagedFile) << FileStates(ModifiedFile);
QTest::newRow("MD") << (ModifiedFile | StagedFile) << FileStates(DeletedFile); QTest::newRow("MD") << (ModifiedFile | StagedFile) << FileStates(DeletedFile);

View File

@@ -146,7 +146,7 @@ void GitSubmitEditor::setCommitData(const CommitData &d)
return SubmitFileModel::FileUnmerged; return SubmitFileModel::FileUnmerged;
if (state.testFlag(AddedFile) || state.testFlag(UntrackedFile)) if (state.testFlag(AddedFile) || state.testFlag(UntrackedFile))
return SubmitFileModel::FileAdded; return SubmitFileModel::FileAdded;
if (state.testFlag(ModifiedFile)) if (state.testFlag(ModifiedFile) || state.testFlag(TypeChangedFile))
return SubmitFileModel::FileModified; return SubmitFileModel::FileModified;
if (state.testFlag(DeletedFile)) if (state.testFlag(DeletedFile))
return SubmitFileModel::FileDeleted; return SubmitFileModel::FileDeleted;