fix: merge/delete conflicts (#151)

feat: enhance merge conflict handling with improved status messages and conditional rendering
feat: improved modify / delete conflict handling
- fix ours/theirs messages for deleted files
- fix handling of choice moniker
- fix parsing of local/incoming name when deleted
This commit is contained in:
santiagosayshey
2025-02-26 18:11:35 +10:30
committed by GitHub
parent 49e36d67a6
commit df16d7c52f
5 changed files with 131 additions and 34 deletions

View File

@@ -15,9 +15,10 @@ const ConflictRow = ({change, fetchGitStatus}) => {
param => param.parameter === 'name'
);
// Check for name in conflicting parameters or directly in change object
const displayLocalName =
nameConflict?.local_value || change.name || 'Unnamed';
const displayIncomingName = nameConflict?.incoming_value || 'Unnamed';
const displayIncomingName = nameConflict?.incoming_value || change?.incoming_name || 'Unnamed';
const isResolved = change.status === 'RESOLVED';

View File

@@ -10,14 +10,22 @@ const MergeConflicts = ({
areAllConflictsResolved,
fetchGitStatus
}) => {
if (!conflicts || conflicts.length === 0) return null;
const hasConflicts = conflicts && conflicts.length > 0;
return (
<div className='mb-4'>
<div className='flex items-center justify-between'>
<h4 className='text-sm font-medium text-gray-200 flex items-center'>
<AlertTriangle className='text-yellow-400 mr-2' size={16} />
<span>Merge Conflicts</span>
{areAllConflictsResolved() ? (
<CheckCircle className='text-green-400 mr-2' size={16} />
) : (
<AlertTriangle className='text-yellow-400 mr-2' size={16} />
)}
<span>
{areAllConflictsResolved()
? 'All Conflicts Resolved'
: 'Merge Conflicts'}
</span>
</h4>
<div className='flex space-x-2'>
<Tooltip
@@ -47,10 +55,23 @@ const MergeConflicts = ({
</Tooltip>
</div>
</div>
<ConflictTable
conflicts={conflicts}
fetchGitStatus={fetchGitStatus}
/>
{/* Only show the conflict table if there are conflicts */}
{hasConflicts && (
<ConflictTable
conflicts={conflicts}
fetchGitStatus={fetchGitStatus}
/>
)}
{/* Show a success message when all conflicts are resolved */}
{!hasConflicts && areAllConflictsResolved() && (
<div className='mt-3 p-4 bg-gray-800 border border-gray-700 rounded-lg text-center'>
<p className='text-gray-300'>
All conflicts have been successfully resolved. You can now commit the merge.
</p>
</div>
)}
</div>
);
};