320 ├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ |
320 ├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ |
321 │ │🄶 No Changes │ │ │ │ |
321 │ │🄶 No Changes │ │ │ │ |
322 │ (Some, None) │ OR │🄻 Deleted │ ø │ ø │ |
322 │ (Some, None) │ OR │🄻 Deleted │ ø │ ø │ |
323 │ │🄷 Deleted[1] │ │ │ │ |
323 │ │🄷 Deleted[1] │ │ │ │ |
324 ├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ |
324 ├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ |
325 │ │🄸 No Changes │ │ │ │ |
325 │ │🄸 No Changes │ │ │ 🄽 Touched │ |
326 │ (None, Some) │ OR │ ø │🄼 Added │🄽 Merged │ |
326 │ (None, Some) │ OR │ ø │🄼 Added │OR 🅀 Salvaged │ |
327 │ │🄹 Salvaged[2]│ │ (copied?) │ (copied?) │ |
327 │ │🄹 Salvaged[2]│ │ (copied?) │ (copied?) │ |
328 ├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ |
328 ├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ |
329 │ │ │ │ │ │ |
329 │ │ │ │ 🄾 Touched │ │ |
330 │ (Some, Some) │🄺 No Changes │ ø │🄾 Merged │🄿 Merged │ |
330 │ (Some, Some) │🄺 No Changes │ ø │OR 🅁 Salvaged │🄿 Merged │ |
331 │ │ [3] │ │ (copied?) │ (copied?) │ |
331 │ │ [3] │ │ (copied?) │ (copied?) │ |
332 └──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘ |
332 └──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘ |
333 |
333 |
334 Special case [1]: |
334 Special case [1]: |
335 |
335 |
452 copy_candidates.append(filename) |
452 copy_candidates.append(filename) |
453 elif d1[1][0] is None and d2[1][0] is None: |
453 elif d1[1][0] is None and d2[1][0] is None: |
454 # case 🄻 — both deleted the file. |
454 # case 🄻 — both deleted the file. |
455 md.mark_removed(filename) |
455 md.mark_removed(filename) |
456 elif d1[1][0] is not None and d2[1][0] is not None: |
456 elif d1[1][0] is not None and d2[1][0] is not None: |
457 # case 🄽 🄾 🄿 |
457 if d1[0][0] is None or d2[0][0] is None: |
458 md.mark_merged(filename) |
458 if any(_find(ma, filename) is not None for ma in mas): |
|
459 # case 🅀 or 🅁 |
|
460 md.mark_salvaged(filename) |
|
461 else: |
|
462 # case 🄽 🄾 : touched |
|
463 md.mark_touched(filename) |
|
464 else: |
|
465 # case 🄿 : merged |
|
466 md.mark_merged(filename) |
459 copy_candidates.append(filename) |
467 copy_candidates.append(filename) |
460 else: |
468 else: |
461 # Impossible case, the post-merge file status cannot be None on |
469 # Impossible case, the post-merge file status cannot be None on |
462 # one side and Something on the other side. |
470 # one side and Something on the other side. |
463 assert False, "unreachable" |
471 assert False, "unreachable" |