hgext/evolve.py
changeset 1316 f11363699766
parent 1315 445d7f46f25d
child 1317 48f78feb0b47
equal deleted inserted replaced
1315:445d7f46f25d 1316:f11363699766
  1150         median = len(allpclusters[nbcluster//2][1])
  1150         median = len(allpclusters[nbcluster//2][1])
  1151         ui.write('        median length:      %9i\n' % median)
  1151         ui.write('        median length:      %9i\n' % median)
  1152         mean = sum(len(x[1]) for x in allpclusters) // nbcluster
  1152         mean = sum(len(x[1]) for x in allpclusters) // nbcluster
  1153         ui.write('        mean length:        %9i\n' % mean)
  1153         ui.write('        mean length:        %9i\n' % mean)
  1154 
  1154 
       
  1155 def handlenotrouble(ui, repo, startnode, dryrunopt):
       
  1156     if repo['.'].obsolete():
       
  1157         displayer = cmdutil.show_changeset(
       
  1158             ui, repo, {'template': shorttemplate})
       
  1159         successors = set()
       
  1160 
       
  1161         for successorsset in obsolete.successorssets(repo, repo['.'].node()):
       
  1162             for nodeid in successorsset:
       
  1163                 successors.add(repo[nodeid])
       
  1164 
       
  1165         if not successors:
       
  1166             ui.warn(_('parent is obsolete without successors; ' +
       
  1167                       'likely killed\n'))
       
  1168             return 2
       
  1169 
       
  1170         elif len(successors) > 1:
       
  1171             ui.warn(_('parent is obsolete with multiple successors:\n'))
       
  1172 
       
  1173             for ctx in sorted(successors, key=lambda ctx: ctx.rev()):
       
  1174                 displayer.show(ctx)
       
  1175 
       
  1176             return 2
       
  1177 
       
  1178         else:
       
  1179             ctx = successors.pop()
       
  1180 
       
  1181             ui.status(_('update:'))
       
  1182             if not ui.quiet:
       
  1183                 displayer.show(ctx)
       
  1184 
       
  1185             if dryrunopt:
       
  1186                 return 0
       
  1187             else:
       
  1188                 res = hg.update(repo, ctx.rev())
       
  1189                 if ctx != startnode:
       
  1190                     ui.status(_('working directory is now at %s\n') % ctx)
       
  1191                 return res
       
  1192 
       
  1193     troubled = repo.revs('troubled()')
       
  1194     if troubled:
       
  1195         ui.write_err(_('nothing to evolve here\n'))
       
  1196         ui.status(_('(%i troubled changesets, do you want --any ?)\n')
       
  1197                   % len(troubled))
       
  1198         return 2
       
  1199     else:
       
  1200         ui.write_err(_('no troubled changesets\n'))
       
  1201         return 1
  1155 @command('^evolve|stabilize|solve',
  1202 @command('^evolve|stabilize|solve',
  1156     [('n', 'dry-run', False,
  1203     [('n', 'dry-run', False,
  1157         'do not perform actions, just print what would be done'),
  1204         'do not perform actions, just print what would be done'),
  1158      ('', 'confirm', False,
  1205      ('', 'confirm', False,
  1159         'ask for confirmation before performing the action'),
  1206         'ask for confirmation before performing the action'),
  1205         graftcmd = commands.table['graft'][0]
  1252         graftcmd = commands.table['graft'][0]
  1206         return graftcmd(ui, repo, old_obsolete=True, **{'continue': True})
  1253         return graftcmd(ui, repo, old_obsolete=True, **{'continue': True})
  1207 
  1254 
  1208     tro = _picknexttroubled(ui, repo, anyopt or allopt)
  1255     tro = _picknexttroubled(ui, repo, anyopt or allopt)
  1209     if tro is None:
  1256     if tro is None:
  1210         if repo['.'].obsolete():
  1257         return handlenotrouble(ui, repo, startnode, dryrunopt)
  1211             displayer = cmdutil.show_changeset(
       
  1212                 ui, repo, {'template': shorttemplate})
       
  1213             successors = set()
       
  1214 
       
  1215             for successorsset in obsolete.successorssets(repo, repo['.'].node()):
       
  1216                 for nodeid in successorsset:
       
  1217                     successors.add(repo[nodeid])
       
  1218 
       
  1219             if not successors:
       
  1220                 ui.warn(_('parent is obsolete without successors; ' +
       
  1221                           'likely killed\n'))
       
  1222                 return 2
       
  1223 
       
  1224             elif len(successors) > 1:
       
  1225                 ui.warn(_('parent is obsolete with multiple successors:\n'))
       
  1226 
       
  1227                 for ctx in sorted(successors, key=lambda ctx: ctx.rev()):
       
  1228                     displayer.show(ctx)
       
  1229 
       
  1230                 return 2
       
  1231 
       
  1232             else:
       
  1233                 ctx = successors.pop()
       
  1234 
       
  1235                 ui.status(_('update:'))
       
  1236                 if not ui.quiet:
       
  1237                     displayer.show(ctx)
       
  1238 
       
  1239                 if dryrunopt:
       
  1240                     return 0
       
  1241                 else:
       
  1242                     res = hg.update(repo, ctx.rev())
       
  1243                     if ctx != startnode:
       
  1244                         ui.status(_('working directory is now at %s\n') % ctx)
       
  1245                     return res
       
  1246 
       
  1247         troubled = repo.revs('troubled()')
       
  1248         if troubled:
       
  1249             ui.write_err(_('nothing to evolve here\n'))
       
  1250             ui.status(_('(%i troubled changesets, do you want --any ?)\n')
       
  1251                       % len(troubled))
       
  1252             return 2
       
  1253         else:
       
  1254             ui.write_err(_('no troubled changesets\n'))
       
  1255             return 1
       
  1256 
  1258 
  1257     def progresscb():
  1259     def progresscb():
  1258         if allopt:
  1260         if allopt:
  1259             ui.progress('evolve', seen, unit='changesets', total=count)
  1261             ui.progress('evolve', seen, unit='changesets', total=count)
       
  1262 
  1260     seen = 1
  1263     seen = 1
  1261     count = allopt and _counttroubled(ui, repo) or 1
  1264     count = allopt and _counttroubled(ui, repo) or 1
  1262 
  1265 
  1263     while tro is not None:
  1266     while tro is not None:
  1264         progresscb()
  1267         progresscb()