1294 """diff of the current patch""" |
1294 """diff of the current patch""" |
1295 # deep in the dirstate code, the walkhelper method wants a list, not a tuple |
1295 # deep in the dirstate code, the walkhelper method wants a list, not a tuple |
1296 repo.mq.diff(repo, list(files)) |
1296 repo.mq.diff(repo, list(files)) |
1297 return 0 |
1297 return 0 |
1298 |
1298 |
1299 def fold(ui, repo, *files): |
1299 def fold(ui, repo, *files, **opts): |
1300 """fold the named patches into the current patch |
1300 """fold the named patches into the current patch |
1301 Patches must not yet be applied.""" |
1301 |
|
1302 Patches must not yet be applied. |
|
1303 The header for each folded patch will be concatenated with |
|
1304 the current patch header, separated by a line of '* * *'.""" |
|
1305 |
1302 q = repo.mq |
1306 q = repo.mq |
1303 |
1307 |
1304 if not files: |
1308 if not files: |
1305 raise util.Abort(_('qfold requires at least one patch name')) |
1309 raise util.Abort(_('qfold requires at least one patch name')) |
1306 if not q.check_toppatch(repo): |
1310 if not q.check_toppatch(repo): |
1307 raise util.Abort(_('No patches applied\n')) |
1311 raise util.Abort(_('No patches applied\n')) |
|
1312 |
|
1313 message=commands.logmessage(**opts) |
|
1314 if opts['edit']: |
|
1315 if message: |
|
1316 raise util.Abort(_('option "-e" incompatible with "-m" or "-l"')) |
1308 |
1317 |
1309 parent = q.lookup('qtip') |
1318 parent = q.lookup('qtip') |
1310 patches = [] |
1319 patches = [] |
1311 messages = [] |
1320 messages = [] |
1312 for f in files: |
1321 for f in files: |
1316 if q.isapplied(patch): |
1325 if q.isapplied(patch): |
1317 raise util.Abort(_('qfold cannot fold already applied patch %s') % patch) |
1326 raise util.Abort(_('qfold cannot fold already applied patch %s') % patch) |
1318 patches.append(patch) |
1327 patches.append(patch) |
1319 |
1328 |
1320 for patch in patches: |
1329 for patch in patches: |
1321 messages.append(q.readheaders(patch)[0]) |
1330 if not message: |
|
1331 messages.append(q.readheaders(patch)[0]) |
1322 pf = os.path.join(q.path, patch) |
1332 pf = os.path.join(q.path, patch) |
1323 (patchsuccess, files, fuzz) = q.patch(repo, pf) |
1333 (patchsuccess, files, fuzz) = q.patch(repo, pf) |
1324 if not patchsuccess: |
1334 if not patchsuccess: |
1325 raise util.Abort(_('Error folding patch %s') % patch) |
1335 raise util.Abort(_('Error folding patch %s') % patch) |
1326 |
1336 |
1327 message = q.readheaders(parent)[0] |
1337 if not message: |
1328 for msg in messages: |
1338 message, comments, user = q.readheaders(parent)[0:3] |
1329 message.append('* * *') |
1339 for msg in messages: |
1330 message.extend(msg) |
1340 message.append('* * *') |
1331 message = '\n'.join(message) |
1341 message.extend(msg) |
|
1342 message = '\n'.join(message) |
|
1343 |
|
1344 if opts['edit']: |
|
1345 message = ui.edit(message, user or ui.username()) |
1332 |
1346 |
1333 q.refresh(repo, msg=message) |
1347 q.refresh(repo, msg=message) |
1334 |
1348 |
1335 for patch in patches: |
1349 for patch in patches: |
1336 q.delete(repo, patch) |
1350 q.delete(repo, patch) |
1508 (commit, |
1522 (commit, |
1509 commands.table["^commit|ci"][1], |
1523 commands.table["^commit|ci"][1], |
1510 'hg qcommit [OPTION]... [FILE]...'), |
1524 'hg qcommit [OPTION]... [FILE]...'), |
1511 "^qdiff": (diff, [], 'hg qdiff [FILE]...'), |
1525 "^qdiff": (diff, [], 'hg qdiff [FILE]...'), |
1512 "qdelete": (delete, [], 'hg qdelete PATCH'), |
1526 "qdelete": (delete, [], 'hg qdelete PATCH'), |
1513 'qfold': (fold, [], 'hg qfold PATCH...'), |
1527 'qfold': |
|
1528 (fold, |
|
1529 [('e', 'edit', None, _('edit patch header')), |
|
1530 ('m', 'message', '', _('set patch header to <text>')), |
|
1531 ('l', 'logfile', '', _('set patch header to contents of <file>'))], |
|
1532 'hg qfold [-e] [-m <text>] [-l <file] PATCH...'), |
1514 'qheader': (header, [], |
1533 'qheader': (header, [], |
1515 _('hg qheader [PATCH]')), |
1534 _('hg qheader [PATCH]')), |
1516 "^qimport": |
1535 "^qimport": |
1517 (qimport, |
1536 (qimport, |
1518 [('e', 'existing', None, 'import file in patch dir'), |
1537 [('e', 'existing', None, 'import file in patch dir'), |