mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
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 cbd5a12a601a.
This commit is contained in:
parent
c9112a6b7a
commit
fee088299f
@ -268,7 +268,6 @@ def checkheads(repo, remote, outgoing, remoteheads, newbranch=False, inc=False,
|
||||
# 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 @@ def checkheads(repo, remote, outgoing, remoteheads, newbranch=False, inc=False,
|
||||
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 @@ def checkheads(repo, remote, outgoing, remoteheads, newbranch=False, inc=False,
|
||||
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"))
|
||||
|
@ -223,7 +223,7 @@ push should succeed even though it has an unexpected response
|
||||
$ 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
|
||||
|
Loading…
Reference in New Issue
Block a user