mirror of
https://github.com/x-motemen/ghq.git
synced 2026-09-10 07:26:27 -04:00
236 lines
7.7 KiB
Plaintext
236 lines
7.7 KiB
Plaintext
= ghq(1) image:https://github.com/x-motemen/ghq/workflows/test/badge.svg?branch=master["Build Status", link="https://github.com/x-motemen/ghq/actions?workflow=test"] image:https://codecov.io/gh/x-motemen/ghq/branch/master/graph/badge.svg["Coverage", link="https://codecov.io/gh/x-motemen/ghq"]
|
|
|
|
== NAME
|
|
|
|
ghq - Manage remote repository clones
|
|
|
|
== DESCRIPTION
|
|
|
|
'ghq' provides a way to organize remote repository clones, like +go get+ does. When you clone a remote repository by +ghq get+, ghq makes a directory under a specific root directory (by default +~/ghq+) using the remote repository URL's host and path.
|
|
|
|
$ ghq get https://github.com/x-motemen/ghq
|
|
# Runs `git clone https://github.com/x-motemen/ghq ~/ghq/github.com/x-motemen/ghq`
|
|
|
|
You can also list local repositories (+ghq list+).
|
|
|
|
== SYNOPSIS
|
|
|
|
[verse]
|
|
ghq get [-u] [-p] [--shallow] [--vcs <vcs>] [--look] [--silent] [--branch] [--no-recursive] [--bare] [--partial blobless|treeless] <repository URL>|<host>/<user>/<project>|<user>/<project>|<project>
|
|
ghq list [-p] [-e] [<query>]
|
|
ghq create [--vcs <vcs>] <repository URL>|<host>/<user>/<project>|<user>/<project>|<project>
|
|
ghq rm [--dry-run] <repository URL>|<host>/<user>/<project>|<user>/<project>|<project>
|
|
ghq migrate [-y] [--dry-run] <local repository path>
|
|
ghq root [--all]
|
|
|
|
== COMMANDS
|
|
|
|
get::
|
|
Clone a remote repository under ghq root directory (see
|
|
<<directory-structures,DIRECTORY STRUCTURES>> below). `ghq clone` is an alias for this command.
|
|
If the repository is
|
|
already cloned to local, nothing will happen unless '-u' ('--update')
|
|
flag is supplied, in which case the local repository is updated ('git pull --ff-only' eg.).
|
|
When you use '-p' option, the repository is cloned via SSH protocol. +
|
|
If there are multiple +ghq.root+ s, existing local clones are searched
|
|
first. Then a new repository clone is created under the primary root if
|
|
none is found. +
|
|
With '--shallow' option, a "shallow clone" will be performed (for Git
|
|
repositories only, 'git clone --depth 1 ...' eg.). Be careful that a
|
|
shallow-cloned repository cannot be pushed to remote.
|
|
Currently Git and Mercurial repositories are supported. +
|
|
With '--branch' option, you can clone the repository with specified
|
|
branch. This option is currently supported for Git, Mercurial,
|
|
Subversion and git-svn. +
|
|
The 'ghq' gets the git repository recursively by default. +
|
|
We can prevent it with '--no-recursive' option.
|
|
With '--bare' option, a "bare clone" will be performed (for Git
|
|
repositories only, 'git clone --bare ...' eg.). +
|
|
With '--partial' option, a "partial clone" will be performed (for Git
|
|
repositories only, in 'blobless' mode, 'git clone --filter=blob:none ...',
|
|
in 'treeless' mode, 'git clone --filter=tree:0 ...' eg.).
|
|
|
|
list::
|
|
List locally cloned repositories. If a query argument is given, only
|
|
repositories whose names contain that query text are listed. '-e'
|
|
('--exact') forces the match to be an exact one (i.e. the query equals to
|
|
_project_, _user_/_project_ or _host_/_user_/_project_)
|
|
If '-p' ('--full-path') is given, the full paths to the repository root are
|
|
printed instead of relative ones.
|
|
|
|
root::
|
|
Prints repositories' root (i.e. `ghq.root`). Without '--all' option, the
|
|
primary one is shown.
|
|
|
|
rm::
|
|
Remove local repository. If '--dry-run' option is given, the repository is not actually removed but the path to it is printed.
|
|
|
|
create::
|
|
Creates new repository.
|
|
|
|
migrate::
|
|
Migrate an existing repository directory to the ghq-managed directory structure.
|
|
The command detects the VCS backend, retrieves the remote URL, and moves
|
|
the repository to the appropriate location under ghq root.
|
|
|
|
== CONFIGURATION
|
|
|
|
Configuration uses 'git-config' variables.
|
|
|
|
ghq.root::
|
|
The path to directory under which cloned repositories are placed. See
|
|
<<directory-structures,DIRECTORY STRUCTURES>> below. Defaults to +~/ghq+. +
|
|
This variable can have multiple values. If so, the last one becomes
|
|
primary one i.e. new repository clones are always created under it. You may
|
|
want to specify "$GOPATH/src" as a secondary root (environment variables
|
|
should be expanded.)
|
|
|
|
ghq.user::
|
|
In ghq, when specifying only the repository name without slashes as in `ghq get {{Project}}`,
|
|
ghq attempts to auto-complete the repository owner.
|
|
By default, the owner used is the value of the environment variable `USER` (or `USERNAME` on Windows).
|
|
Setting this option allows you to explicitly specify the owner.
|
|
|
|
ghq.completeUser::
|
|
Rather than always using your own username for owner completion,
|
|
you may want to complete the owner with the same name as the repository.
|
|
For example, fetch `ruby` as `github.com/ruby/ruby`,
|
|
`vim` as `github.com/vim/vim`, and `peco` as `github.com/peco/peco`.
|
|
If you prefer this behavior, set this option to `false` to switch the owner completion method.
|
|
|
|
ghq.defaultHost::
|
|
The default host used when the repository specification omits the host.
|
|
For example, `ghq get owner/project` normally resolves to `github.com/owner/project`.
|
|
If this option is set, the specified host will be used instead.
|
|
|
|
ghq.<url>.vcs::
|
|
ghq tries to detect the remote repository's VCS backend for non-"github.com"
|
|
repositories. With this option you can explicitly specify the VCS for the
|
|
remote repository. The URL is matched against '<url>' using 'git config --get-urlmatch'. +
|
|
Accepted values are "git", "github" (an alias for "git"), "subversion",
|
|
"svn" (an alias for "subversion"), "git-svn", "mercurial", "hg" (an alias for "mercurial"),
|
|
"darcs", "fossil", "bazaar", and "bzr" (an alias for "bazaar"). +
|
|
To get this configuration variable effective, you will need Git 1.8.5 or higher.
|
|
|
|
ghq.<url>.root::
|
|
The "ghq" tries to detect the remote repository-specific root directory. With this option,
|
|
you can specify a repository-specific root directory instead of the common ghq root directory. +
|
|
The URL is matched against '<url>' using 'git config --get-urlmatch'.
|
|
|
|
|
|
=== Example configuration (.gitconfig):
|
|
|
|
....
|
|
[ghq "https://git.example.com/repos/"]
|
|
vcs = git
|
|
root = ~/myproj
|
|
....
|
|
|
|
== ENVIRONMENT VARIABLES
|
|
|
|
GHQ_ROOT::
|
|
If set to a path, this value is used as the only root directory regardless
|
|
of other existing ghq.root settings.
|
|
|
|
== [[directory-structures]]DIRECTORY STRUCTURES
|
|
|
|
Local repositories are placed under 'ghq.root' with named github.com/_user_/_repo_.
|
|
|
|
....
|
|
~/ghq
|
|
|-- code.google.com/
|
|
| `-- p/
|
|
| `-- vim/
|
|
`-- github.com/
|
|
|-- google/
|
|
| `-- go-github/
|
|
|-- motemen/
|
|
| `-- ghq/
|
|
`-- urfave/
|
|
`-- cli/
|
|
....
|
|
|
|
|
|
== [[installing]]INSTALLATION
|
|
|
|
=== macOS
|
|
|
|
----
|
|
brew install ghq
|
|
----
|
|
|
|
=== Void Linux
|
|
|
|
----
|
|
xbps-install -S ghq
|
|
----
|
|
|
|
=== GNU Guix
|
|
|
|
----
|
|
guix install ghq
|
|
----
|
|
|
|
=== Windows + scoop
|
|
|
|
----
|
|
scoop install ghq
|
|
----
|
|
|
|
|
|
=== go get
|
|
|
|
----
|
|
go install github.com/x-motemen/ghq@latest
|
|
----
|
|
|
|
=== conda
|
|
|
|
----
|
|
conda install -c conda-forge go-ghq
|
|
----
|
|
|
|
=== https://github.com/asdf-vm/asdf[asdf-vm]
|
|
|
|
----
|
|
asdf plugin add ghq
|
|
asdf install ghq latest
|
|
----
|
|
|
|
=== https://github.com/jdx/mise[mise-en-place]
|
|
|
|
----
|
|
mise install ghq
|
|
mise use ghq
|
|
----
|
|
|
|
=== build
|
|
|
|
----
|
|
git clone https://github.com/x-motemen/ghq .
|
|
make install
|
|
----
|
|
|
|
Built binaries are available from GitHub Releases.
|
|
https://github.com/x-motemen/ghq/releases
|
|
|
|
== HANDBOOK
|
|
|
|
You can buy "ghq-handbook" from Leanpub for more detailed usage.
|
|
|
|
https://leanpub.com/ghq-handbook
|
|
|
|
The source Markdown files of this book are also available for free from the following repository.
|
|
|
|
https://github.com/Songmu/ghq-handbook
|
|
|
|
Currently, only Japanese version available.
|
|
Your translations are welcome!
|
|
|
|
== AUTHOR
|
|
|
|
* motemen <motemen@gmail.com>
|
|
** https://github.com/sponsors/motemen
|
|
* Songmu <y.songmu@gmail.com>
|
|
** https://github.com/sponsors/Songmu
|