Mercurial > hg
annotate relnotes/next @ 44347:9c9cfecd4600
rebase: don't use rebased node as dirstate p2 (BC)
When rebasing a node, we currently use the rebased node as p2 in the
dirstate until just before we commit it (we then change to the desired
parents). This p2 is visible to the user when the rebase gets
interrupted because of merge conflicts. That can be useful to the user
as a reminder of which commit is currently being rebased, but I
believe it's incorrect for a few reasons:
* I think the dirstate parents should be the ones that will be set
when the commit is created.
* I think having two parents means that you're merging those two
commits, but when rebasing, you're generally grafting, not merging.
* When rebasing a merge commit, we should use the two desired parents
as dirstate parents (and we clearly can't have the rebased node as
a third dirstate parent).
* `hg graft` (and `hg update --merge`) sets only one parent and `hg
rebase` should be consistent with that.
I realize that this is a somewhat large user-visible change, but I
think it's worth it because it will simplify things quite a bit.
Differential Revision: https://phab.mercurial-scm.org/D7827
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 10 Jan 2020 14:22:20 -0800 |
parents | 14d0e89520a2 |
children | 8be0c63535b5 |
rev | line source |
---|---|
42271
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
1 == New Features == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
2 |
44289
9f8eddd2723f
purge: add -i flag to delete ignored files instead of untracked files
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44194
diff
changeset
|
3 * `hg purge`/`hg clean` can now delete ignored files instead of |
9f8eddd2723f
purge: add -i flag to delete ignored files instead of untracked files
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44194
diff
changeset
|
4 untracked files, with the new -i flag. |
42309
604c086ddde6
log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents:
42271
diff
changeset
|
5 |
44345
14d0e89520a2
graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents:
44343
diff
changeset
|
6 * `hg log` now defaults to using an '%' symbol for commits involved |
14d0e89520a2
graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents:
44343
diff
changeset
|
7 in unresolved merge conflicts. That includes unresolved conflicts |
14d0e89520a2
graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents:
44343
diff
changeset
|
8 caused by e.g. `hg update --merge` and `hg graft`. '@' still takes |
14d0e89520a2
graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents:
44343
diff
changeset
|
9 precedence, so what used to be marked '@' still is. |
14d0e89520a2
graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents:
44343
diff
changeset
|
10 |
14d0e89520a2
graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents:
44343
diff
changeset
|
11 * New `conflictlocal()` and `conflictother()` revsets return the |
44343
8561ad49915d
revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents:
44289
diff
changeset
|
12 commits that are being merged, when there are conflicts. Also works |
8561ad49915d
revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents:
44289
diff
changeset
|
13 for conflicts caused by e.g. `hg graft`. |
8561ad49915d
revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents:
44289
diff
changeset
|
14 |
8561ad49915d
revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents:
44289
diff
changeset
|
15 |
42309
604c086ddde6
log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents:
42271
diff
changeset
|
16 == New Experimental Features == |
604c086ddde6
log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents:
42271
diff
changeset
|
17 |
604c086ddde6
log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents:
42271
diff
changeset
|
18 |
42271
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
19 == Bug Fixes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
20 |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
21 |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
22 == Backwards Compatibility Changes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
23 |
44347
9c9cfecd4600
rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents:
44345
diff
changeset
|
24 * When `hg rebase` pauses for merge conflict resolution, the working |
9c9cfecd4600
rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents:
44345
diff
changeset
|
25 copy will no longer have the rebased node as a second parent. You |
9c9cfecd4600
rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents:
44345
diff
changeset
|
26 can use the new `conflictparents()` revset for finding the other |
9c9cfecd4600
rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents:
44345
diff
changeset
|
27 parent during a conflict. |
9c9cfecd4600
rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents:
44345
diff
changeset
|
28 |
42944
c2676b5a9f59
narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42935
diff
changeset
|
29 |
42271
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
30 == Internal API Changes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
31 |
44159
df2162672d24
progress: delete deprecated ui.progress()
Martin von Zweigbergk <martinvonz@google.com>
parents:
44133
diff
changeset
|
32 * The deprecated `ui.progress()` has now been deleted. Please use |
df2162672d24
progress: delete deprecated ui.progress()
Martin von Zweigbergk <martinvonz@google.com>
parents:
44133
diff
changeset
|
33 `ui.makeprogress()` instead. |
44178
bd4f666b55a7
merge: drop now-unused "abort" argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents:
44159
diff
changeset
|
34 |
bd4f666b55a7
merge: drop now-unused "abort" argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents:
44159
diff
changeset
|
35 * `hg.merge()` has lost its `abort` argument. Please call |
bd4f666b55a7
merge: drop now-unused "abort" argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents:
44159
diff
changeset
|
36 `hg.abortmerge()` directly instead. |
44194
d4c1501225c4
cmdutil: change check_incompatible_arguments() *arg to single iterable
Martin von Zweigbergk <martinvonz@google.com>
parents:
44178
diff
changeset
|
37 |
d4c1501225c4
cmdutil: change check_incompatible_arguments() *arg to single iterable
Martin von Zweigbergk <martinvonz@google.com>
parents:
44178
diff
changeset
|
38 * The `*others` argument of `cmdutil.check_incompatible_arguments()` |
d4c1501225c4
cmdutil: change check_incompatible_arguments() *arg to single iterable
Martin von Zweigbergk <martinvonz@google.com>
parents:
44178
diff
changeset
|
39 changed from being varargs argument to being a single collection. |