Subject: CVS commit: pkgsrc/net/gh
From: Benny Siegert
Date: 2023-01-22 19:48:26
Message id: 20230122184826.2AC74FA90@cvs.NetBSD.org

Log Message:
gh: update to 2.21.2

What's New

Selecting a default repository
When running a gh command for the first time in a local git repository that has
multiple git remotes, gh used to interactively ask Which should be the base
repository? so that the user may choose the git remote to default to when
making queries to GitHub repositories. This had several problems:

- Some users did not fully understand what they are being asked to choose;
- The term “base repository” isn't an established GitHub term, except in the
  context of Pull Requests;
- Once chosen, the only way to undo or change the choice made was to manually
  edit .git/config in the local repository.

The new behavior is as follows:

- gh commands in a repository with multiple remotes will now error out until a
  default has been chosen.
- The new gh repo set-default command can be used to select a default, view the
  selected value, or undo the selection altogether.

Internal git operations are now always authenticated
Previously, it could be confusing that a properly authenticated gh repo clone
<repo> command could fail with a prompt for GitHub password. The underlying
reason was that gh repo clone would shell out to git clone <url>, and from then
on the authentication was entirely up to git's own credential management. If
git wasn't set up to authenticate to GitHub, this could result in a generic
password prompt, which appeared as if it was coming from gh.

The best general solution for setting up git to use credentials from GitHub CLI
is to run gh auth setup-git. However, in this release, gh ensures that all
underlying git operations are authenticated by gh, even if git on its own
wasn't configured with a credential helper.

The way this works is by injecting extra configuration arguments when shelling \ 
out to git:

git -c credential.helper='!gh auth git-credential' clone <url>

The gh api command now accepts nested JSON parameters
The gh api command is similar to the popular curl tool, but with JSON encoding
& parsing support and with built-in GitHub authentication. Sending JSON POST
parameters was as easy as:

gh api <endpoint> -f 'param1=value1' -f 'param2=value2'

Now there is also a way to send nested JSON objects and arrays via a special
brackets syntax when specifying field names:

gh api <endpoint> -f 'head[branch][name]=main'

gh api <endpoint> -f 'labels[]=bug' -f 'labels[]=priority-1'

Files:
RevisionActionfile
1.54modifypkgsrc/net/gh/Makefile
1.29modifypkgsrc/net/gh/distinfo
1.23modifypkgsrc/net/gh/go-modules.mk