1170
1170
def cook_conflicts(raw_conflicts, tt):
1171
1171
"""Generate a list of cooked conflicts, sorted by file path"""
1172
1172
def key(conflict):
1173
if conflict[2] is not None:
1174
return conflict[2], conflict[0]
1175
elif len(conflict) == 6:
1176
return conflict[4], conflict[0]
1173
if conflict.path is not None:
1174
return conflict.path, conflict.typestring
1175
elif getattr(conflict, "conflict_path", None) is not None:
1176
return conflict.conflict_path, conflict.typestring
1178
return None, conflict[0]
1178
return None, conflict.typestring
1180
1180
return sorted(list(iter_cook_conflicts(raw_conflicts, tt)), key=key)
1182
1182
def iter_cook_conflicts(raw_conflicts, tt):
1183
cooked_conflicts = []
1183
from bzrlib.conflicts import Conflict
1184
1184
fp = FinalPaths(tt)
1185
1185
for conflict in raw_conflicts:
1186
1186
c_type = conflict[0]
1188
1188
modified_path = fp.get_path(conflict[2])
1189
1189
modified_id = tt.final_file_id(conflict[2])
1190
1190
if len(conflict) == 3:
1191
yield c_type, action, modified_path, modified_id
1191
yield Conflict.factory(c_type, action=action, path=modified_path,
1192
file_id=modified_id)
1193
1195
conflicting_path = fp.get_path(conflict[3])
1194
1196
conflicting_id = tt.final_file_id(conflict[3])
1195
yield (c_type, action, modified_path, modified_id,
1196
conflicting_path, conflicting_id)
1199
def conflicts_strings(conflicts):
1200
"""Generate strings for the provided conflicts"""
1201
for conflict in conflicts:
1202
conflict_type = conflict[0]
1203
if conflict_type == 'text conflict':
1204
yield 'Text conflict in %s' % conflict[2]
1205
elif conflict_type == 'contents conflict':
1206
yield 'Contents conflict in %s' % conflict[2]
1207
elif conflict_type == 'path conflict':
1208
yield 'Path conflict: %s / %s' % conflict[2:]
1209
elif conflict_type == 'duplicate id':
1210
vals = (conflict[4], conflict[1], conflict[2])
1211
yield 'Conflict adding id to %s. %s %s.' % vals
1212
elif conflict_type == 'duplicate':
1213
vals = (conflict[4], conflict[1], conflict[2])
1214
yield 'Conflict adding file %s. %s %s.' % vals
1215
elif conflict_type == 'parent loop':
1216
vals = (conflict[4], conflict[2], conflict[1])
1217
yield 'Conflict moving %s into %s. %s.' % vals
1218
elif conflict_type == 'unversioned parent':
1219
vals = (conflict[2], conflict[1])
1220
yield 'Conflict adding versioned files to %s. %s.' % vals
1221
elif conflict_type == 'missing parent':
1222
vals = (conflict[2], conflict[1])
1223
yield 'Conflict adding files to %s. %s.' % vals
1197
yield Conflict.factory(c_type, action=action, path=modified_path,
1198
file_id=modified_id,
1199
conflict_path=conflicting_path,
1200
conflict_file_id=conflicting_id)