##// END OF EJS Templates
update: warn about other topological heads on bare update...
update: warn about other topological heads on bare update A concern around the user experience of Mercurial is user getting stuck on there own topological branch forever. For example, someone pulling another topological branch, missing that message in pull asking them to merge and getting stuck on there own local branch. The current way to "address" this concern was for bare 'hg update' to target the tipmost (also latest pulled) changesets and complain when the update was not linear. That way, failure to merge newly pulled changesets would result in some kind of failure. Yet the failure was quite obscure, not working in all cases (eg: commit right after pull) and the behavior was very impractical in the common case (eg: issue4673). To be able to change that behavior, we need to provide other ways to alert a user stucks on one of many topological head. We do so with an extra message after bare update: 1 other heads for branch "default" Bookmark get its own special version: 1 other divergent bookmarks for "foobar" There is significant room to improve the message itself, and we should augment it with hint about how to see theses other heads or handle the situation (see in-line comment). But having "a" message is already a significant improvement compared to the existing situation. Once we have it we can iterate on a better version of it. As having such message is an important step toward changing the default destination for update and other nicety, I would like to move forward quickly on getting such message. This was discussed during London - October 2015 Sprint.
Pierre-Yves David -
r28029:72072cfc default
Show More
Name Size Modified Last Commit Author
/ tests
blacklists
bundles
gpg
svn
README Loading ...
autodiff.py Loading ...
binfile.bin Loading ...
bzr-definitions Loading ...
cgienv Loading ...
dumbhttp.py Loading ...
dummyssh Loading ...
f Loading ...
failfilemerge.py Loading ...
fakedirstatewritetime.py Loading ...
fakemergerecord.py Loading ...
fakepatchtime.py Loading ...
filterpyflakes.py Loading ...
generate-working-copy-states.py Loading ...
get-with-headers.py Loading ...
heredoctest.py Loading ...
hghave Loading ...
hghave.py Loading ...
hgterm.ti Loading ...
hgweberror.py Loading ...
histedit-helpers.sh Loading ...
hypothesishelpers.py Loading ...
killdaemons.py Loading ...
md5sum.py Loading ...
missing-comment.hg Loading ...
mockblackbox.py Loading ...
notcapable Loading ...
printenv.py Loading ...
readlink.py Loading ...
revlog-formatv0.py Loading ...
run-tests.py Loading ...
seq.py Loading ...
silenttestrunner.py Loading ...
sitecustomize.py Loading ...
svn-safe-append.py Loading ...
svnxml.py Loading ...
test-1102.t Loading ...
test-1993.t Loading ...
test-586.t Loading ...
test-abort-checkin.t Loading ...
test-acl.t Loading ...
test-add.t Loading ...
test-addremove-similar.t Loading ...
test-addremove.t Loading ...
test-alias.t Loading ...
test-ancestor.py Loading ...
test-ancestor.py.out Loading ...
test-annotate.t Loading ...
test-archive-symlinks.t Loading ...
test-archive.t Loading ...
test-atomictempfile.py Loading ...
test-audit-path.t Loading ...
test-backout.t Loading ...
test-backwards-remove.t Loading ...
test-bad-extension.t Loading ...
test-bad-pull.t Loading ...
test-basic.t Loading ...
test-batching.py Loading ...
test-batching.py.out Loading ...
test-bdiff.py Loading ...
test-bdiff.py.out Loading ...
test-bheads.t Loading ...
test-bisect.t Loading ...
test-bisect2.t Loading ...
test-bisect3.t Loading ...
test-blackbox.t Loading ...
test-bookmarks-current.t Loading ...
test-bookmarks-merge.t Loading ...
test-bookmarks-pushpull.t Loading ...
test-bookmarks-rebase.t Loading ...
test-bookmarks-strip.t Loading ...
test-bookmarks.t Loading ...
test-branch-option.t Loading ...
test-branch-tag-confict.t Loading ...
test-branches.t Loading ...
test-bundle-r.t Loading ...
test-bundle-type.t Loading ...
test-bundle-vs-outgoing.t Loading ...
test-bundle.t Loading ...
test-bundle2-exchange.t Loading ...
test-bundle2-format.t Loading ...
test-bundle2-multiple-changegroups.t Loading ...
test-bundle2-pushback.t Loading ...
test-bundle2-remote-changegroup.t Loading ...
test-casecollision-merge.t Loading ...
test-casecollision.t Loading ...
test-casefolding.t Loading ...
test-cat.t Loading ...
test-censor.t Loading ...
test-changelog-exec.t Loading ...
test-check-code.t Loading ...
test-check-commit.t Loading ...
test-check-config.t Loading ...
test-check-execute.t Loading ...
test-check-py3-compat.t Loading ...
test-check-pyflakes.t Loading ...
test-children.t Loading ...
test-churn.t Loading ...
test-clone-cgi.t Loading ...
test-clone-pull-corruption.t Loading ...
test-clone-r.t Loading ...
test-clone-uncompressed.t Loading ...
test-clone-update-order.t Loading ...
test-clone.t Loading ...
test-clonebundles.t Loading ...
test-command-template.t Loading ...
test-commandserver.t Loading ...
test-commit-amend.t Loading ...
test-commit-interactive-curses.t Loading ...
test-commit-interactive.t Loading ...
test-commit-multiple.t Loading ...
test-commit-unresolved.t Loading ...
test-commit.t Loading ...
test-committer.t Loading ...
test-completion.t Loading ...
test-config.t Loading ...
test-conflict.t Loading ...
test-confused-revert.t Loading ...
test-context.py Loading ...
test-context.py.out Loading ...
test-contrib-check-code.t Loading ...
test-contrib-check-commit.t Loading ...
test-contrib-perf.t Loading ...
test-contrib.t Loading ...
test-convert-authormap.t Loading ...
test-convert-baz.t Loading ...
test-convert-bzr-114.t Loading ...
test-convert-bzr-directories.t Loading ...
test-convert-bzr-ghosts.t Loading ...
test-convert-bzr-merges.t Loading ...
test-convert-bzr-treeroot.t Loading ...
test-convert-bzr.t Loading ...
test-convert-clonebranches.t Loading ...
test-convert-cvs-branch.t Loading ...
test-convert-cvs-detectmerge.t Loading ...
test-convert-cvs-synthetic.t Loading ...
test-convert-cvs.t Loading ...
test-convert-cvsnt-mergepoints.rlog Loading ...
test-convert-cvsnt-mergepoints.t Loading ...
test-convert-darcs.t Loading ...
test-convert-datesort.t Loading ...
test-convert-filemap.t Loading ...
test-convert-git.t Loading ...
test-convert-hg-sink.t Loading ...
test-convert-hg-source.t Loading ...
test-convert-hg-startrev.t Loading ...
test-convert-hg-svn.t Loading ...
test-convert-mtn.t Loading ...
test-convert-p4-filetypes.t Loading ...
test-convert-p4.t Loading ...
test-convert-splicemap.t Loading ...
test-convert-svn-branches.t Loading ...
test-convert-svn-encoding.t Loading ...
test-convert-svn-move.t Loading ...
test-convert-svn-sink.t Loading ...
test-convert-svn-source.t Loading ...
test-convert-svn-startrev.t Loading ...
test-convert-svn-tags.t Loading ...
test-convert-tagsbranch-topology.t Loading ...
test-convert-tla.t Loading ...
test-convert.t Loading ...
test-copy-move-merge.t Loading ...
test-copy.t Loading ...
test-ctxmanager.py Loading ...
test-custom-filters.t Loading ...
test-debian-packages.t Loading ...
test-debugbuilddag.t Loading ...
test-debugbundle.t Loading ...
test-debugcommands.t Loading ...
test-debugextensions.t Loading ...
test-debugindexdot.t Loading ...
test-debugrename.t Loading ...
test-default-push.t Loading ...
test-demandimport.py Loading ...
test-demandimport.py.out Loading ...
test-devel-warnings.t Loading ...
test-diff-binary-file.t Loading ...
test-diff-change.t Loading ...
test-diff-color.t Loading ...
test-diff-copy-depth.t Loading ...
test-diff-hashes.t Loading ...
test-diff-ignore-whitespace.t Loading ...
test-diff-issue2761.t Loading ...
test-diff-newlines.t Loading ...
test-diff-reverse.t Loading ...
test-diff-subdir.t Loading ...
test-diff-unified.t Loading ...
test-diff-upgrade.t Loading ...
test-diffdir.t Loading ...
test-diffstat.t Loading ...
test-dirstate-nonnormalset.t Loading ...
test-dirstate-race.t Loading ...
test-dirstate.t Loading ...
test-dispatch.py Loading ...
test-dispatch.py.out Loading ...
test-dispatch.t Loading ...
test-docker-packaging.t Loading ...
test-doctest.py Loading ...
test-double-merge.t Loading ...
test-duplicateoptions.py Loading ...
test-empty-dir.t Loading ...
test-empty-file.t Loading ...
test-empty-group.t Loading ...
test-empty.t Loading ...
test-encode.t Loading ...
test-encoding-align.t Loading ...
test-encoding-textwrap.t Loading ...
test-encoding.t Loading ...
test-eol-add.t Loading ...
test-eol-clone.t Loading ...
test-eol-hook.t Loading ...
test-eol-patch.t Loading ...
test-eol-tag.t Loading ...
test-eol-update.t Loading ...
test-eol.t Loading ...
test-eolfilename.t Loading ...
test-excessive-merge.t Loading ...
test-execute-bit.t Loading ...
test-export.t Loading ...
test-extdiff.t Loading ...
test-extension.t Loading ...
test-extra-filelog-entry.t Loading ...
test-fetch.t Loading ...
test-filebranch.t Loading ...
test-filecache.py Loading ...
test-filecache.py.out Loading ...
test-filelog.py Loading ...
test-filelog.py.out Loading ...
test-fileset-generated.t Loading ...
test-fileset.t Loading ...
test-flags.t Loading ...
test-fncache.t Loading ...
test-gendoc.t Loading ...
test-generaldelta.t Loading ...
test-getbundle.t Loading ...
test-git-export.t Loading ...
test-globalopts.t Loading ...
test-glog-topological.t Loading ...
test-glog.t Loading ...
test-gpg.t Loading ...
test-graft.t Loading ...
test-grep.t Loading ...
test-hardlinks.t Loading ...
test-help.t Loading ...
test-hg-parseurl.py Loading ...
test-hg-parseurl.py.out Loading ...
test-hgcia.t Loading ...
test-hghave.t Loading ...
test-hgignore.t Loading ...
test-hgk.t Loading ...
test-hgrc.t Loading ...
test-hgweb-auth.py Loading ...
test-hgweb-auth.py.out Loading ...
test-hgweb-bundle.t Loading ...
test-hgweb-commands.t Loading ...
test-hgweb-descend-empties.t Loading ...
test-hgweb-diffs.t Loading ...
test-hgweb-empty.t Loading ...
test-hgweb-filelog.t Loading ...
test-hgweb-json.t Loading ...
test-hgweb-no-path-info.t Loading ...
test-hgweb-no-request-uri.t Loading ...
test-hgweb-non-interactive.t Loading ...
test-hgweb-raw.t Loading ...
test-hgweb-removed.t Loading ...
test-hgweb-symrev.t Loading ...
test-hgweb.t Loading ...
test-hgwebdir-paths.py Loading ...
test-hgwebdir.t Loading ...
test-hgwebdirsym.t Loading ...
test-highlight.t Loading ...
test-histedit-arguments.t Loading ...
test-histedit-base.t Loading ...
test-histedit-bookmark-motion.t Loading ...
test-histedit-commute.t Loading ...
test-histedit-drop.t Loading ...
test-histedit-edit.t Loading ...
test-histedit-fold-non-commute.t Loading ...
test-histedit-fold.t Loading ...
test-histedit-no-change.t Loading ...
test-histedit-non-commute-abort.t Loading ...
test-histedit-non-commute.t Loading ...
test-histedit-obsolete.t Loading ...
test-histedit-outgoing.t Loading ...
test-hook.t Loading ...
test-http-branchmap.t Loading ...
test-http-bundle1.t Loading ...
test-http-clone-r.t Loading ...
test-http-proxy.t Loading ...
test-http.t Loading ...
test-https.t Loading ...
test-hybridencode.py Loading ...
test-hybridencode.py.out Loading ...
test-i18n.t Loading ...
test-identify.t Loading ...
test-impexp-branch.t Loading ...
test-import-bypass.t Loading ...
test-import-context.t Loading ...
test-import-eol.t Loading ...
test-import-git.t Loading ...
test-import-merge.t Loading ...
test-import-unknown.t Loading ...
test-import.t Loading ...
test-incoming-outgoing.t Loading ...
test-inherit-mode.t Loading ...
test-init.t Loading ...
test-install.t Loading ...
test-issue1089.t Loading ...
test-issue1175.t Loading ...
test-issue1306.t Loading ...
test-issue1438.t Loading ...
test-issue1502.t Loading ...
test-issue1802.t Loading ...
test-issue1877.t Loading ...
test-issue2137.t Loading ...
test-issue3084.t Loading ...
test-issue522.t Loading ...
test-issue612.t Loading ...
test-issue619.t Loading ...
test-issue660.t Loading ...
test-issue672.t Loading ...
test-issue842.t Loading ...
test-journal-exists.t Loading ...
test-keyword.t Loading ...
test-known.t Loading ...
test-largefiles-cache.t Loading ...
test-largefiles-misc.t Loading ...
test-largefiles-small-disk.t Loading ...
test-largefiles-update.t Loading ...
test-largefiles-wireproto.t Loading ...
test-largefiles.t Loading ...
test-lfconvert.t Loading ...
test-locate.t Loading ...
test-lock-badness.t Loading ...
test-lock.py Loading ...
test-log.t Loading ...
test-lrucachedict.py Loading ...
test-lrucachedict.py.out Loading ...
test-mactext.t Loading ...
test-manifest-merging.t Loading ...
test-manifest.py Loading ...
test-manifest.t Loading ...
test-manifestv2.t Loading ...
test-merge-changedelete.t Loading ...
test-merge-closedheads.t Loading ...
test-merge-commit.t Loading ...
test-merge-criss-cross.t Loading ...
test-merge-default.t Loading ...
test-merge-force.t Loading ...
test-merge-internal-tools-pattern.t Loading ...
test-merge-local.t Loading ...
test-merge-remove.t Loading ...
test-merge-revert.t Loading ...
test-merge-revert2.t Loading ...
test-merge-subrepos.t Loading ...
test-merge-symlinks.t Loading ...
test-merge-tools.t Loading ...
test-merge-types.t Loading ...
test-merge1.t Loading ...
test-merge10.t Loading ...
test-merge2.t Loading ...
test-merge4.t Loading ...
test-merge5.t Loading ...
test-merge6.t Loading ...
test-merge7.t Loading ...
test-merge8.t Loading ...
test-merge9.t Loading ...
test-minirst.py Loading ...
test-minirst.py.out Loading ...
test-module-imports.t Loading ...
test-mq-eol.t Loading ...
test-mq-git.t Loading ...
test-mq-guards.t Loading ...
test-mq-header-date.t Loading ...
test-mq-header-from.t Loading ...
test-mq-merge.t Loading ...
test-mq-missingfiles.t Loading ...
test-mq-pull-from-bundle.t Loading ...
test-mq-qclone-http.t Loading ...
test-mq-qdelete.t Loading ...
test-mq-qdiff.t Loading ...
test-mq-qfold.t Loading ...
test-mq-qgoto.t Loading ...
test-mq-qimport-fail-cleanup.t Loading ...
test-mq-qimport.t Loading ...
test-mq-qnew.t Loading ...
test-mq-qpush-exact.t Loading ...
test-mq-qpush-fail.t Loading ...
test-mq-qqueue.t Loading ...
test-mq-qrefresh-interactive.t Loading ...
test-mq-qrefresh-replace-log-message.t Loading ...
test-mq-qrefresh.t Loading ...
test-mq-qrename.t Loading ...
test-mq-qsave.t Loading ...
test-mq-safety.t Loading ...
test-mq-subrepo-svn.t Loading ...
test-mq-subrepo.t Loading ...
test-mq-symlinks.t Loading ...
test-mq.t Loading ...
test-mv-cp-st-diff.t Loading ...
test-nested-repo.t Loading ...
test-newbranch.t Loading ...
test-newcgi.t Loading ...
test-newercgi.t Loading ...
test-no-symlinks.t Loading ...
test-notify-changegroup.t Loading ...
test-notify.t Loading ...
test-obsolete-changeset-exchange.t Loading ...
test-obsolete-checkheads.t Loading ...
test-obsolete-divergent.t Loading ...
test-obsolete-tag-cache.t Loading ...
test-obsolete.t Loading ...
test-oldcgi.t Loading ...
test-parents.t Loading ...
test-parse-date.t Loading ...
test-parseindex.t Loading ...
test-parseindex2.py Loading ...
test-parseindex2.py.out Loading ...
test-patch-offset.t Loading ...
test-patch.t Loading ...
test-patchbomb.t Loading ...
test-pathencode.py Loading ...
test-paths.t Loading ...
test-pending.t Loading ...
test-permissions.t Loading ...
test-phases-exchange.t Loading ...
test-phases.t Loading ...
test-profile.t Loading ...
test-progress.t Loading ...
test-propertycache.py Loading ...
test-propertycache.py.out Loading ...
test-pull-branch.t Loading ...
test-pull-http.t Loading ...
test-pull-permission.t Loading ...
test-pull-pull-corruption.t Loading ...
test-pull-r.t Loading ...
test-pull-update.t Loading ...
test-pull.t Loading ...
test-purge.t Loading ...
test-push-cgi.t Loading ...
test-push-hook-lock.t Loading ...
test-push-http-bundle1.t Loading ...
test-push-http.t Loading ...
test-push-r.t Loading ...
test-push-validation.t Loading ...
test-push-warn.t Loading ...
test-qrecord.t Loading ...
test-rebase-abort.t Loading ...
test-rebase-bookmarks.t Loading ...
test-rebase-cache.t Loading ...
test-rebase-check-restore.t Loading ...
test-rebase-collapse.t Loading ...
test-rebase-conflicts.t Loading ...
test-rebase-detach.t Loading ...
test-rebase-interruptions.t Loading ...
test-rebase-issue-noparam-single-rev.t Loading ...
test-rebase-mq-skip.t Loading ...
test-rebase-mq.t Loading ...
test-rebase-named-branches.t Loading ...
test-rebase-newancestor.t Loading ...
test-rebase-obsolete.t Loading ...
test-rebase-parameters.t Loading ...
test-rebase-pull.t Loading ...
test-rebase-rename.t Loading ...
test-rebase-scenario-global.t Loading ...
test-rebuildstate.t Loading ...
test-record.t Loading ...
test-relink.t Loading ...
test-remove.t Loading ...
test-rename-after-merge.t Loading ...
test-rename-dir-merge.t Loading ...
test-rename-merge1.t Loading ...
test-rename-merge2.t Loading ...
test-rename.t Loading ...
test-repair-strip.t Loading ...
test-requires.t Loading ...
test-resolve.t Loading ...
test-revert-flags.t Loading ...
test-revert-interactive.t Loading ...
test-revert-unknown.t Loading ...
test-revert.t Loading ...
test-revlog-ancestry.py Loading ...
test-revlog-ancestry.py.out Loading ...
test-revlog-group-emptyiter.t Loading ...
test-revlog-packentry.t Loading ...
test-revset-dirstate-parents.t Loading ...
test-revset-outgoing.t Loading ...
test-revset.t Loading ...
test-rollback.t Loading ...
test-run-tests.py Loading ...
test-run-tests.t Loading ...
test-schemes.t Loading ...
test-serve.t Loading ...
test-setdiscovery.t Loading ...
test-share.t Loading ...
test-shelve.t Loading ...
test-simple-update.t Loading ...
test-simplemerge.py Loading ...
test-simplemerge.py.out Loading ...
test-ssh-bundle1.t Loading ...
test-ssh-clone-r.t Loading ...
test-ssh.t Loading ...
test-static-http.t Loading ...
test-status-color.t Loading ...
test-status-inprocess.py Loading ...
test-status-inprocess.py.out Loading ...
test-status-rev.t Loading ...
test-status.t Loading ...
test-strict.t Loading ...
test-strip-cross.t Loading ...
test-strip.t Loading ...
test-subrepo-deep-nested-change.t Loading ...
test-subrepo-git.t Loading ...
test-subrepo-missing.t Loading ...
test-subrepo-paths.t Loading ...
test-subrepo-recursion.t Loading ...
test-subrepo-relative-path.t Loading ...
test-subrepo-svn.t Loading ...
test-subrepo.t Loading ...
test-symlink-os-yes-fs-no.py Loading ...
test-symlink-os-yes-fs-no.py.out Loading ...
test-symlink-placeholder.t Loading ...
test-symlinks.t Loading ...
test-tag.t Loading ...
test-tags.t Loading ...
test-template-engine.t Loading ...
test-tools.t Loading ...
test-transplant.t Loading ...
test-treediscovery-legacy.t Loading ...
test-treediscovery.t Loading ...
test-treemanifest.t Loading ...
test-trusted.py Loading ...
test-trusted.py.out Loading ...
test-ui-color.py Loading ...
test-ui-color.py.out Loading ...
test-ui-config.py Loading ...
test-ui-config.py.out Loading ...
test-ui-verbosity.py Loading ...
test-ui-verbosity.py.out Loading ...
test-unbundlehash.t Loading ...
test-unified-test.t Loading ...
test-unionrepo.t Loading ...
test-unrelated-pull.t Loading ...
test-up-local-change.t Loading ...
test-update-branches.t Loading ...
test-update-issue1456.t Loading ...
test-update-renames.t Loading ...
test-update-reverse.t Loading ...
test-url-rev.t Loading ...
test-url.py Loading ...
test-username-newline.t Loading ...
test-verify.t Loading ...
test-walk.t Loading ...
test-walkrepo.py Loading ...
test-websub.t Loading ...
test-win32text.t Loading ...
test-wireproto.py Loading ...
test-wireproto.py.out Loading ...
test-wireproto.t Loading ...
tinyproxy.py Loading ...

To run the tests, do:

cd tests/
python run-tests.py

See https://mercurial-scm.org/wiki/WritingTests for
more information on writing tests.