1830 |
1830 |
1831 relations = [(p, sucs) for p in precs] |
1831 relations = [(p, sucs) for p in precs] |
1832 if biject: |
1832 if biject: |
1833 relations = [(p, (s,)) for p, s in zip(precs, sucs)] |
1833 relations = [(p, (s,)) for p, s in zip(precs, sucs)] |
1834 |
1834 |
1835 # create markers |
|
1836 obsolete.createmarkers(repo, relations, metadata=metadata) |
|
1837 |
|
1838 # informs that changeset have been pruned |
|
1839 ui.status(_('%i changesets pruned\n') % len(precs)) |
|
1840 |
|
1841 wdp = repo['.'] |
1835 wdp = repo['.'] |
1842 |
1836 |
1843 if len(sucs) == 1 and len(precs) == 1 and wdp in precs: |
1837 if len(sucs) == 1 and len(precs) == 1 and wdp in precs: |
1844 # '.' killed, so update to the successor |
1838 # '.' killed, so update to the successor |
1845 newnode = sucs[0] |
1839 newnode = sucs[0] |
1846 else: |
1840 else: |
1847 # update to an unkilled parent |
1841 # update to an unkilled parent |
1848 newnode = wdp |
1842 newnode = wdp |
1849 |
1843 |
1850 while newnode.obsolete(): |
1844 while newnode in precs or newnode.obsolete(): |
1851 newnode = newnode.parents()[0] |
1845 newnode = newnode.parents()[0] |
|
1846 |
1852 |
1847 |
1853 if newnode.node() != wdp.node(): |
1848 if newnode.node() != wdp.node(): |
1854 if opts.get('keep', False): |
1849 if opts.get('keep', False): |
1855 # This is largely the same as the implementation in |
1850 # This is largely the same as the implementation in |
1856 # strip.stripcmd(). We might want to refactor this somewhere |
1851 # strip.stripcmd(). We might want to refactor this somewhere |
1874 commands.update(ui, repo, newnode.rev()) |
1869 commands.update(ui, repo, newnode.rev()) |
1875 ui.status(_('working directory now at %s\n') % newnode) |
1870 ui.status(_('working directory now at %s\n') % newnode) |
1876 # update bookmarks |
1871 # update bookmarks |
1877 if bookmark: |
1872 if bookmark: |
1878 _deletebookmark(ui, marks, bookmark) |
1873 _deletebookmark(ui, marks, bookmark) |
|
1874 |
|
1875 # create markers |
|
1876 obsolete.createmarkers(repo, relations, metadata=metadata) |
|
1877 |
|
1878 # informs that changeset have been pruned |
|
1879 ui.status(_('%i changesets pruned\n') % len(precs)) |
|
1880 |
1879 for ctx in repo.unfiltered().set('bookmark() and %ld', precs): |
1881 for ctx in repo.unfiltered().set('bookmark() and %ld', precs): |
1880 # used to be: |
1882 # used to be: |
1881 # |
1883 # |
1882 # ldest = list(repo.set('max((::%d) - obsolete())', ctx)) |
1884 # ldest = list(repo.set('max((::%d) - obsolete())', ctx)) |
1883 # if ldest: |
1885 # if ldest: |