Define mirror targets one way: remote.<name>.<field>
There were two spellings for the same thing -- a flat remoteurl/remotekey/remotetype/remotevisibility set for a single server, and remote.<name>.* blocks for several. The flat one is gone; every target, including a lone one, is now a named block with the fields url, key, type and visibility. An existing ~/.mgshrc is converted on the next start. Only the key is rewritten, so values, comments, alignment, commented-out lines and the file's 0600 mode survive untouched, and mgsh prints each rename rather than doing it quietly. The target is named "public", which is what the old settings called the git remote they created, so a converted setup keeps pushing to the same place under the same remote name. A file that carries both spellings keeps what the new one says. The environment follows the same shape: MGSH_REMOTEURL and friends are replaced by MGSH_REMOTE_<NAME>_<FIELD>, so MGSH_REMOTE_GITLAB_KEY sets remote.gitlab.key. The field is read from the end of the variable name, which leaves target names free to contain underscores. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+17
-16
@@ -23,24 +23,25 @@ gitpath = /home/git
|
||||
# editor = code
|
||||
|
||||
# --- pushremote: mirror to public servers (gitea/github/gitlab) via their API ---
|
||||
# A single server, the flat form (this target is named "public"):
|
||||
# remoteurl = https://git.example.com
|
||||
# remotekey = <personal-access-token>
|
||||
# remotetype = gitea # optional; auto-detected from remoteurl
|
||||
# remotevisibility = private # visibility of created repos (default private)
|
||||
# One "remote.<name>.<field>" block per server, with the fields url, key, type
|
||||
# and visibility. <name> is yours to pick and becomes the git remote created in
|
||||
# the repository, so `git push gitlab` keeps working outside mgsh.
|
||||
#
|
||||
# Or any number of named servers. `pushremote` pushes to all of them in the
|
||||
# order given, `pushremote @hub` to a single one. Each target gets a git remote
|
||||
# of the same name in the repository.
|
||||
# remote.gitea.url = https://git.example.com
|
||||
# remote.gitea.key = <personal-access-token>
|
||||
# remote.hub.url = https://github.com
|
||||
# remote.hub.key = <personal-access-token>
|
||||
# remote.hub.type = github # optional; auto-detected from the url
|
||||
# remote.hub.visibility = public # default private
|
||||
# remotes = gitea, hub # optional: restrict and order the set
|
||||
# `pushremote` pushes to every configured server in the order given,
|
||||
# `pushremote @gitlab` to a single one.
|
||||
#
|
||||
# mirror = true # `push` also mirrors via pushremote
|
||||
# remote.gitea.url = https://git.example.com
|
||||
# remote.gitea.key = <personal-access-token>
|
||||
# remote.gitea.type = gitea # optional; auto-detected from the url
|
||||
# remote.gitea.visibility = private # or public (default private)
|
||||
#
|
||||
# remote.gitlab.url = https://gitlab.example.com
|
||||
# remote.gitlab.key = <personal-access-token>
|
||||
# remote.gitlab.type = gitlab
|
||||
# remote.gitlab.visibility = public
|
||||
#
|
||||
# remotes = gitea, gitlab # optional: restrict and order the set
|
||||
# mirror = true # `push` also mirrors via pushremote
|
||||
|
||||
# --- safety ---
|
||||
# `push` checks the staged diff for private keys and API tokens before it
|
||||
|
||||
Reference in New Issue
Block a user