# HG changeset patch # User Mads Kiilerich # Date 1365684858 -7200 # Node ID 6b618aa08b6eb6394b934d0ea7829f1b24f4b9f3 # Parent 1a9ad84583ee76365c334bf3337d3ec828c506aa wireproto: clarify cryptic 'remote: unsynced changes' error message on push The message was not very much to the point and did not in any way help an ordinary user. 'repository changed while preparing/uploading bundle - please try again' is more correct, gives the user some understanding of what is going on, and tells how to 'recover' from the situation. The 'bundle' aspect could be seen as an implementation detail that shouldn't be mentioned, but I think it helps giving an exact error message. The message could still leave the user wondering why Mercurial doesn't lock the repo and how unsafe it thus is. Explaining that is however too much detail. diff -r 1a9ad84583ee -r 6b618aa08b6e mercurial/wireproto.py --- a/mercurial/wireproto.py Mon Feb 11 00:43:12 2013 +0100 +++ b/mercurial/wireproto.py Thu Apr 11 14:54:18 2013 +0200 @@ -602,7 +602,8 @@ # fail early if possible if not check_heads(): - return pusherr('unsynced changes') + return pusherr('repository changed while preparing changes - ' + 'please try again') # write bundle data to temporary file because it can be big fd, tempname = tempfile.mkstemp(prefix='hg-unbundle-') @@ -615,7 +616,8 @@ if not check_heads(): # someone else committed/pushed/unbundled while we # were transferring data - return pusherr('unsynced changes') + return pusherr('repository changed while uploading changes - ' + 'please try again') # push can proceed fp.seek(0) diff -r 1a9ad84583ee -r 6b618aa08b6e tests/test-push-cgi.t --- a/tests/test-push-cgi.t Mon Feb 11 00:43:12 2013 +0100 +++ b/tests/test-push-cgi.t Thu Apr 11 14:54:18 2013 +0200 @@ -35,17 +35,17 @@ 1 changesets found $ CONTENT_LENGTH=279; export CONTENT_LENGTH; -expect unsynced changes +expect failure because heads doesn't match (formerly known as 'unsynced changes') $ QUERY_STRING="cmd=unbundle&heads=0000000000000000000000000000000000000000"; export QUERY_STRING $ python hgweb.cgi page1 2>&1 $ cat page1 Status: 200 Script output follows\r (esc) Content-Type: application/mercurial-0.1\r (esc) - Content-Length: 19\r (esc) + Content-Length: 64\r (esc) \r (esc) 0 - unsynced changes + repository changed while preparing changes - please try again successful force push