Mercurial > hg-stable
changeset 20398:2bc520bd0ce0
discovery: improve "note: unsynced remote changes!" warning
This note (which actually is a warning) frequently caused confusion.
"unsynced" is not a well established user-facing concept in Mercurial and the
message was not very specific or helpful.
Instead, show a messages like:
remote has heads on branch 'default' that are not known locally: 6c0482d977a3
and show it before aborting on "push creates new remote head". This will also
give more of a hint in the case where the branch has been closed remotely and
'hg heads' thus not would show any new heads after pulling.
A similar (but actually very different) message was addressed in 6b618aa08b6e.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Thu, 06 Feb 2014 02:19:38 +0100 |
parents | d7e78e6d97bd |
children | 74daabdf5ab5 |
files | mercurial/discovery.py tests/test-ssh.t |
diffstat | 2 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/discovery.py Fri Feb 07 17:26:28 2014 +0100 +++ b/mercurial/discovery.py Thu Feb 06 02:19:38 2014 +0100 @@ -268,7 +268,6 @@ # If there are more heads after the push than before, a suitable # error message, depending on unsynced status, is displayed. error = None - unsynced = False allmissing = set(outgoing.missing) allfuturecommon = set(c.node() for c in repo.set('%ld', outgoing.common)) allfuturecommon.update(allmissing) @@ -312,8 +311,15 @@ newhs.add(nh) else: newhs = candidate_newhs - if [h for h in unsyncedheads if h not in discardedheads]: - unsynced = True + unsynced = sorted(h for h in unsyncedheads if h not in discardedheads) + if unsynced: + heads = ' '.join(short(h) for h in unsynced) + if branch is None: + repo.ui.warn(_("remote has heads that are not known locally: " + "%s\n") % heads) + else: + repo.ui.warn(_("remote has heads on branch '%s' that are " + "not known locally: %s\n") % (branch, heads)) if remoteheads is None: if len(newhs) > 1: dhs = list(newhs) @@ -350,7 +356,3 @@ repo.ui.note((" %s\n") % short(h)) if error: raise util.Abort(error, hint=hint) - - # 6. Check for unsynced changes on involved branches. - if unsynced: - repo.ui.warn(_("note: unsynced remote changes!\n"))
--- a/tests/test-ssh.t Fri Feb 07 17:26:28 2014 +0100 +++ b/tests/test-ssh.t Thu Feb 06 02:19:38 2014 +0100 @@ -223,7 +223,7 @@ $ hg push pushing to ssh://user@dummy/remote searching for changes - note: unsynced remote changes! + remote has heads on branch 'default' that are not known locally: 6c0482d977a3 remote: adding changesets remote: adding manifests remote: adding file changes