Skip to content

Commit fa90725

Browse files
committed
fix: don't do "delete only" for keys with type info in them
1 parent 8e16b25 commit fa90725

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/shared/local/moveDetection.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,13 @@ const compareHashes = ({ addedMap, deletedMap }: AddAndDeleteMaps): StringMapsFo
135135
if (addedMap.size && deletedMap.size) {
136136
// the remaining deletes didn't match the basename+hash of an add, and vice versa.
137137
// They *might* match the basename of an add, in which case we *could* have the "move, then edit" case.
138-
const addedBasenameMap = new Map([...addedMap.entries()].map(hashEntryToBasenameEntry));
139-
const deletedBasenameMap = new Map([...deletedMap.entries()].map(hashEntryToBasenameEntry));
138+
// the entry might be sha,basename OR sha,basename,type,parent
139+
const addedBasenameMap = new Map(
140+
[...addedMap.entries()].filter(hashEntryHasNoTypeInformation).map(hashEntryToBasenameEntry)
141+
);
142+
const deletedBasenameMap = new Map(
143+
[...deletedMap.entries()].filter(hashEntryHasNoTypeInformation).map(hashEntryToBasenameEntry)
144+
);
140145
const deleteOnly = new Map<string, string>(
141146
Array.from(deletedBasenameMap.entries())
142147
.filter(([k]) => addedBasenameMap.has(k))
@@ -289,6 +294,7 @@ const toKey = (input: FilenameBasenameHash): string => `${input.hash}${JOIN_CHAR
289294

290295
const hashEntryToBasenameEntry = ([k, v]: [string, string]): [string, string] => [hashToBasename(k), v];
291296
const hashToBasename = (hash: string): string => hash.split(JOIN_CHAR)[1];
297+
const hashEntryHasNoTypeInformation = ([k]: [string, string]): boolean => k.split(JOIN_CHAR).length === 2;
292298

293299
const getResolverForFilenames =
294300
(registry: RegistryAccess) =>

0 commit comments

Comments
 (0)