fix(coding): preserve conflict and unicode search results
This commit is contained in:
@@ -101,8 +101,13 @@ function normalizeRelativePath(value: string): string {
|
||||
return normalized;
|
||||
}
|
||||
|
||||
function statusFromSignature(signature: string, renamed: boolean): ConversationChangedFileStatus {
|
||||
function statusFromSignature(
|
||||
signature: string,
|
||||
renamed: boolean,
|
||||
conflicted = false,
|
||||
): ConversationChangedFileStatus {
|
||||
if (signature === '??') return 'untracked';
|
||||
if (conflicted) return 'conflicted';
|
||||
if (renamed || signature.includes('R')) return 'renamed';
|
||||
if (signature.includes('D')) return 'deleted';
|
||||
if (signature.includes('A')) return 'added';
|
||||
@@ -121,7 +126,10 @@ function parsePorcelainV2(value: string): StatusEntry[] {
|
||||
continue;
|
||||
}
|
||||
const renamed = record.startsWith('2 ');
|
||||
const match = renamed
|
||||
const conflicted = record.startsWith('u ');
|
||||
const match = conflicted
|
||||
? record.match(/^u ([^ ]+) [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ (.*)$/s)
|
||||
: renamed
|
||||
? record.match(/^2 ([^ ]+) [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ (.*)$/s)
|
||||
: record.match(/^1 ([^ ]+) [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ (.*)$/s);
|
||||
if (!match) continue;
|
||||
@@ -129,7 +137,7 @@ function parsePorcelainV2(value: string): StatusEntry[] {
|
||||
const filePath = normalizeRelativePath(match[2]);
|
||||
entries.push({
|
||||
path: filePath,
|
||||
status: statusFromSignature(signature, renamed),
|
||||
status: statusFromSignature(signature, renamed, conflicted),
|
||||
signature,
|
||||
});
|
||||
if (renamed) index += 1;
|
||||
|
||||
Reference in New Issue
Block a user