[PATCH 1 of 2] push: hide description about "-f" in the hint to prevent from using it easily

Angel Ezquerra angel.ezquerra at gmail.com
Thu Aug 29 07:47:51 CDT 2013


On Thu, Aug 29, 2013 at 2:31 PM, FUJIWARA Katsunori
<foozy at lares.dti.ne.jp> wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1377777067 -32400
> #      Thu Aug 29 20:51:07 2013 +0900
> # Node ID 7cee001f451b6a097ed754db1a988d1035362eaf
> # Parent  d4a0055af149cdea20b3136b66cae8a24b2e2a98
> push: hide description about "-f" in the hint to prevent from using it easily
>
> "use push -f to force" in the hint at abortion of "hg push" may cause
> novice users to execute "push -f" easily without understanding about
> problems of multiple branch heads in the repository.
>
> This patch hides description about "-f" in the hint, and leads into
> seeing "hg help push" for detail about pushing.
>
> This patch also recommends to ask the management policy of the
> destination repository before using "-f".
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -4648,7 +4648,9 @@
>      only create a new branch without forcing other changes.
>
>      Use -f/--force to override the default behavior and push all
> -    changesets on all branches.
> +    changesets on all branches. Before using --force, it is
> +    recommended to ask the administrator of the destination repository
> +    for the management policy of it.
>
>      If -r/--rev is used, the specified revision and all its ancestors
>      will be pushed to the remote repository.
> diff --git a/mercurial/discovery.py b/mercurial/discovery.py
> --- a/mercurial/discovery.py
> +++ b/mercurial/discovery.py
> @@ -323,10 +323,10 @@
>                                ) % short(dhs[0])
>                  if heads[2]: # unsynced
>                      hint = _("you should pull and merge or "
> -                             "use push -f to force")
> +                             "see \"hg help push\" for detail about pushing")
>                  else:
>                      hint = _("did you forget to merge? "
> -                             "use push -f to force")
> +                             "see \"hg help push\" for detail about pushing")
>              if branch is not None:
>                  repo.ui.note(_("new remote heads on branch '%s'\n") % branch)
>              for h in dhs:
> diff --git a/tests/test-bookmarks-pushpull.t b/tests/test-bookmarks-pushpull.t
> --- a/tests/test-bookmarks-pushpull.t
> +++ b/tests/test-bookmarks-pushpull.t
> @@ -275,7 +275,7 @@
>    pushing to http://localhost:$HGPORT2/
>    searching for changes
>    abort: push creates new remote head c922c0139ca0!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>    $ hg -R ../a book
>       @                         1:0d2164f0ce0d
> @@ -291,7 +291,7 @@
>    pushing to http://localhost:$HGPORT2/
>    searching for changes
>    abort: push creates new remote head c922c0139ca0!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>    $ hg -R ../a book
>       @                         1:0d2164f0ce0d
> diff --git a/tests/test-obsolete-checkheads.t b/tests/test-obsolete-checkheads.t
> --- a/tests/test-obsolete-checkheads.t
> +++ b/tests/test-obsolete-checkheads.t
> @@ -98,7 +98,7 @@
>    pushing to $TESTTMP/remote (glob)
>    searching for changes
>    abort: push creates new remote head 71e3228bffe1!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>  old head is now public (public remote version)
> @@ -127,7 +127,7 @@
>  #   pushing to $TESTTMP/remote
>  #   searching for changes
>  #   abort: push creates new remote head 71e3228bffe1!
> -#   (did you forget to merge? use push -f to force)
> +#   (did you forget to merge? see "hg help push" for detail about pushing)
>  #   [255]
>
>  old head is obsolete but replacement is not pushed
> @@ -158,7 +158,7 @@
>    pushing to $TESTTMP/remote (glob)
>    searching for changes
>    abort: push creates new remote head d7d41ccbd4de!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>
> diff --git a/tests/test-phases-exchange.t b/tests/test-phases-exchange.t
> --- a/tests/test-phases-exchange.t
> +++ b/tests/test-phases-exchange.t
> @@ -844,7 +844,7 @@
>    pushing to ../mu
>    searching for changes
>    abort: push creates new remote head 435b5d83910c!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>    $ hg push -fr 435b5d83910c ../mu # because the push will create new visible head
>    pushing to ../mu
> diff --git a/tests/test-push-warn.t b/tests/test-push-warn.t
> --- a/tests/test-push-warn.t
> +++ b/tests/test-push-warn.t
> @@ -26,7 +26,7 @@
>    pushing to ../a
>    searching for changes
>    abort: push creates new remote head 1e108cc5548c!
> -  (you should pull and merge or use push -f to force)
> +  (you should pull and merge or see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg push --debug ../a
> @@ -41,7 +41,7 @@
>    new remote heads on branch 'default'
>    new remote head 1e108cc5548c
>    abort: push creates new remote head 1e108cc5548c!
> -  (you should pull and merge or use push -f to force)
> +  (you should pull and merge or see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg pull ../a
> @@ -57,7 +57,7 @@
>    pushing to ../a
>    searching for changes
>    abort: push creates new remote head 1e108cc5548c!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg merge
> @@ -110,7 +110,7 @@
>    pushing to ../c
>    searching for changes
>    abort: push creates new remote head 6346d66eb9f5!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg push -r 2 ../c
> @@ -123,7 +123,7 @@
>    pushing to ../c
>    searching for changes
>    abort: push creates new remote head a5dda829a167!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg push -v -r 3 -r 4 ../c
> @@ -133,7 +133,7 @@
>    new remote head a5dda829a167
>    new remote head ee8fbc7a0295
>    abort: push creates new remote head a5dda829a167!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg push -v -f -r 3 -r 4 ../c
> @@ -263,7 +263,7 @@
>    pushing to ../f
>    searching for changes
>    abort: push creates new remote head 0b715ef6ff8f on branch 'a'!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>  Push replacement head on existing branches:
> @@ -386,7 +386,7 @@
>    pushing to h
>    searching for changes
>    abort: push creates new remote head 97bd0c84d346!
> -  (you should pull and merge or use push -f to force)
> +  (you should pull and merge or see "hg help push" for detail about pushing)
>    [255]
>
>
> @@ -458,7 +458,7 @@
>    pushing to ../l
>    searching for changes
>    abort: push creates new remote head 451211cc22b0 on branch 'a'!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ cd ..
> @@ -713,14 +713,14 @@
>    pushing to inner
>    searching for changes
>    abort: push creates new remote head 7d0f4fb6cf04 on branch 'A'!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg push inner -r4 -r5
>    pushing to inner
>    searching for changes
>    abort: push creates new remote head 7d0f4fb6cf04 on branch 'A'!
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>
>    $ hg in inner
> diff --git a/tests/test-subrepo.t b/tests/test-subrepo.t
> --- a/tests/test-subrepo.t
> +++ b/tests/test-subrepo.t
> @@ -314,7 +314,7 @@
>    pushing subrepo s to $TESTTMP/t/s
>    searching for changes
>    abort: push creates new remote head 12a213df6fa9! (in subrepo s)
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>    $ hg push -f
>    pushing to $TESTTMP/t (glob)
> @@ -711,7 +711,7 @@
>    $ hg -R repo2 ci -m3
>    $ hg -q -R repo2 push
>    abort: push creates new remote head cc505f09a8b2! (in subrepo s)
> -  (did you forget to merge? use push -f to force)
> +  (did you forget to merge? see "hg help push" for detail about pushing)
>    [255]
>    $ hg -R repo update
>    0 files updated, 0 files merged, 0 files removed, 0 files unresolved


I would change:

"see "hg help push" for detail about pushing"

into:

"see "hg help push" for detail about pushing multiple heads"

On the hg push --help text I would also explicitly say that pushing
multiple heads is usually a mistake and should not be done unless
extrictly necessary. That is, I would change:

      Use -f/--force to override the default behavior and push all
-    changesets on all branches.
+    changesets on all branches. Before using --force, it is
+    recommended to ask the administrator of the destination repository
+    for the management policy of it.

into:

      Use -f/--force to override the default behavior and push all
-    changesets on all branches.
+    changesets on all branches. Before using --force, it is
+    recommended to ask the administrator of the destination repository
+    for the management policy of it. Pushing multiple heads in particular
+    is usually a mistake.

Or something of the sort.

Cheers,

Angel


More information about the Mercurial-devel mailing list