diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -29,6 +29,11 @@ cmdtable = {} command = cmdutil.command(cmdtable) testedwith = 'internal' +def _savegraft(ctx, extra): + s = ctx.extra().get('source', None) + if s is not None: + extra['source'] = s + def _savebranch(ctx, extra): extra['branch'] = ctx.branch() @@ -151,7 +156,7 @@ def rebase(ui, repo, **opts): collapsef = opts.get('collapse', False) collapsemsg = cmdutil.logmessage(ui, opts) e = opts.get('extrafn') # internal, used by e.g. hgsubversion - extrafns = [] + extrafns = [_savegraft] if e: extrafns = [e] keepf = opts.get('keep', False) diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t --- a/tests/test-rebase-obsolete.t +++ b/tests/test-rebase-obsolete.t @@ -178,9 +178,9 @@ More complex case were part of the rebas 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {'date': '*', 'user': 'test'} (glob) 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 {'date': '*', 'user': 'test'} (glob) 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {'date': '*', 'user': 'test'} (glob) - 08483444fef91d6224f6655ee586a65d263ad34c cbc07f26687521cecfc9a141bf5ecfc0fd2b8531 0 {'date': '* *', 'user': 'test'} (glob) + 08483444fef91d6224f6655ee586a65d263ad34c 4596109a6a4328c398bde3a4a3b6737cfade3003 0 {'date': '* *', 'user': 'test'} (glob) $ hg log -G - @ 11:cbc07f266875 D + @ 11:4596109a6a43 D | | o 10:5ae4c968c6ac C | | @@ -203,17 +203,17 @@ More complex case were part of the rebas 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {'date': '* *', 'user': 'test'} (glob) 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 {'date': '* *', 'user': 'test'} (glob) 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {'date': '* *', 'user': 'test'} (glob) - 08483444fef91d6224f6655ee586a65d263ad34c cbc07f26687521cecfc9a141bf5ecfc0fd2b8531 0 {'date': '* *', 'user': 'test'} (glob) - 8877864f1edb05d0e07dc4ba77b67a80a7b86672 b1861c79d66ec3aa1b607ac3c9fb819e38b12238 0 {'date': '* *', 'user': 'test'} (glob) + 08483444fef91d6224f6655ee586a65d263ad34c 4596109a6a4328c398bde3a4a3b6737cfade3003 0 {'date': '* *', 'user': 'test'} (glob) + 8877864f1edb05d0e07dc4ba77b67a80a7b86672 462a34d07e599b87ea08676a449373fe4e2e1347 0 {'date': '* *', 'user': 'test'} (glob) 08483444fef91d6224f6655ee586a65d263ad34c 0 {'date': '* *', 'user': 'test'} (glob) - 5ae4c968c6aca831df823664e706c9d4aa34473d dd4be135457a404ce5541de427ae1d98a28f4acd 0 {'date': '* *', 'user': 'test'} (glob) + 5ae4c968c6aca831df823664e706c9d4aa34473d 98f6af4ee9539e14da4465128f894c274900b6e5 0 {'date': '* *', 'user': 'test'} (glob) $ hg log --rev 'divergent()' $ hg log -G - @ 13:dd4be135457a C + @ 13:98f6af4ee953 C | - o 12:b1861c79d66e B + o 12:462a34d07e59 B | - o 11:cbc07f266875 D + o 11:4596109a6a43 D | o 7:02de42196ebe H | @@ -225,7 +225,22 @@ More complex case were part of the rebas |/ o 0:cd010b8cd998 A - + $ hg log --style default --debug -r 4596109a6a4328c398bde3a4a3b6737cfade3003 + changeset: 11:4596109a6a4328c398bde3a4a3b6737cfade3003 + phase: draft + parent: 7:02de42196ebee42ef284b6780a87cdc96e8eaab6 + parent: -1:0000000000000000000000000000000000000000 + manifest: 11:a91006e3a02f1edf631f7018e6e5684cf27dd905 + user: Nicolas Dumazet + date: Sat Apr 30 15:24:48 2011 +0200 + files+: D + extra: branch=default + extra: rebase_source=08483444fef91d6224f6655ee586a65d263ad34c + extra: source=32af7686d403cf45b5d95f2d70cebea587ac806a + description: + D + + $ cd .. collapse rebase