[Bug 264751] Committer's Guide: `git config push.default freebsd` causes error

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 18 Jun 2022 12:03:48 UTC

            Bug ID: 264751
           Summary: Committer's Guide: `git config push.default freebsd`
                    causes error
           Product: Documentation
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Books & Articles
          Assignee: doc@FreeBSD.org
          Reporter: yasu@freebsd.org

In the section of Committer's Guide, There is following description.

For pushing, either specify the full refspec:

git push freebsd HEAD:refs/internal/admin

Or set push.default to freebsd which will make git push to push the
current branch back to its upstream by default, which is more suitable
for our workflow:

git config push.default freebsd

However, in the git-config(1) man page of Git 2.36.1 `push.default` is
explained as following.

           Defines the action git push should take if no refspec is given
           (whether from the command-line, config, or elsewhere). Different
           values are well-suited for specific workflows; for instance, in a
           purely central workflow (i.e. the fetch source is equal to the push
           destination), upstream is probably what you want. Possible values

           •   nothing - do not push anything (error out) unless a refspec is
               given. This is primarily meant for people who want to avoid
               mistakes by always being explicit.

           •   current - push the current branch to update a branch with the
               same name on the receiving end. Works in both central and
               non-central workflows.

           •   upstream - push the current branch back to the branch whose
               changes are usually integrated into the current branch (which
               is called @{upstream}). This mode only makes sense if you are
               pushing to the same repository you would normally pull from
               (i.e. central workflow).

           •   tracking - This is a deprecated synonym for upstream.

           •   simple - pushes the current branch with the same name on the

               If you are working on a centralized workflow (pushing to the
               same repository you pull from, which is typically origin), then
               you need to configure an upstream branch with the same name.

               This mode is the default since Git 2.0, and is the safest
               option suited for beginners.
               option suited for beginners.

           •   matching - push all branches having the same name on both ends.
               This makes the repository you are pushing to remember the set
               of branches that will be pushed out (e.g. if you always push
               maint and master there and no other branches, the repository
               you push to will have these two branches, and your local maint
               and master will be pushed there).

               To use this mode effectively, you have to make sure all the
               branches you would push out are ready to be pushed out before
               running git push, as the whole point of this mode is to allow
               you to push all of the branches in one go. If you usually
               finish work on only one branch and push out the result, while
               other branches are unfinished, this mode is not for you. Also
               this mode is not suitable for pushing into a shared central
               repository, as other people may add new branches there, or
               update the tip of existing branches outside your control.

               This used to be the default, but not since Git 2.0 (simple is
               the new default).

It means valid values are 'nothing', 'current', 'upstream', 'tracking',
'simple' and 'matching'. So setting it to 'freebsd' results in error.

yasu@rolling-vm-freebsd2[1030]% git remote -v
freebsd https://git.freebsd.org/ports.git (fetch)
freebsd git@gitrepo.freebsd.org:ports.git (push)
yasu@rolling-vm-freebsd2[1031]% git config push.default freebsd
yasu@rolling-vm-freebsd2[1032]% git push
error: malformed value for push.default: freebsd
error: must be one of nothing, matching, simple, upstream or current
fatal: bad config variable 'push.default' in file '.git/config' at line 30

You are receiving this mail because:
You are the assignee for the bug.