mirror of
https://github.com/x-motemen/ghq.git
synced 2026-09-10 07:26:27 -04:00
## [v0.17.2](https://github.com/motemen/ghq/compare/v0.17.1...v0.17.2) (2019-12-26) * adjust ghq.root detection [#238](https://github.com/motemen/ghq/pull/238) ([Songmu](https://github.com/Songmu)) * adjust document [#236](https://github.com/motemen/ghq/pull/236) ([Songmu](https://github.com/Songmu)) * stop providing 32bit binary [#235](https://github.com/motemen/ghq/pull/235) ([Songmu](https://github.com/Songmu)) * The parallel option is now an official feature [#234](https://github.com/motemen/ghq/pull/234) ([Songmu](https://github.com/Songmu)) * Update urfave/cli to v2 [#233](https://github.com/motemen/ghq/pull/233) ([Songmu](https://github.com/Songmu)) |
||
|---|---|---|
| .github/workflows | ||
| cmdutil | ||
| logger | ||
| misc | ||
| .gitignore | ||
| CHANGELOG.md | ||
| cmd_create.go | ||
| cmd_create_test.go | ||
| cmd_get.go | ||
| cmd_get_test.go | ||
| cmd_import.go | ||
| cmd_import_test.go | ||
| cmd_list.go | ||
| cmd_list_test.go | ||
| cmd_look.go | ||
| cmd_look_test.go | ||
| cmd_root.go | ||
| cmd_root_test.go | ||
| commands.go | ||
| commands_test.go | ||
| CREDITS | ||
| getter.go | ||
| getter_test.go | ||
| go.mod | ||
| go.sum | ||
| go_import.go | ||
| go_import_test.go | ||
| helpers_test.go | ||
| helpers_unix.go | ||
| helpers_windows.go | ||
| LICENSE | ||
| local_repository.go | ||
| local_repository_test.go | ||
| main.go | ||
| Makefile | ||
| README.adoc | ||
| remote_repository.go | ||
| remote_repository_test.go | ||
| url.go | ||
| url_test.go | ||
| vcs.go | ||
| vcs_test.go | ||
= ghq(1) image:https://github.com/motemen/ghq/workflows/test/badge.svg?branch=master["Build Status", link="https://github.com/motemen/ghq/actions?workflow=test"] image:https://coveralls.io/repos/motemen/ghq/badge.svg?branch=master["Coverage", link="https://coveralls.io/r/motemen/ghq?branch=master"]
== 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/motemen/ghq
# Runs `git clone https://github.com/motemen/ghq ~/.ghq/github.com/motemen/ghq`
You can also list local repositories (+ghq list+), jump into local repositories (+ghq look+), and bulk get repositories by list of URLs (+ghq import+).
== SYNOPSIS
[verse]
ghq get [-u] [-p] [--shallow] [--vcs] [--look] [--silent] [--branch] [--no-recursive] (<repository URL> | <host>/<user>/<project> | <user>/<project> | <project>)
ghq list [-p] [-e] [<query>]
ghq look (<project> | <path/to/project> | <host>/<user>/<project> | <repository URL>)
ghq import [-u] [-p] [--shalow] [--vcs] [--silent] [--no-recursive] [--parallel] < FILE
ghq root [--all]
== COMMANDS
get::
Clone a remote repository under ghq root directory (see
<<directory-structures,DIRECTORY STRUCTURES>> below). 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
repository. 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.
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.
look::
Look into a locally cloned repository with the shell.
import::
If no extra arguments given, reads repository URLs from stdin line by line
and performs 'get' for each of them.
root::
Prints repositories' root (i.e. `ghq.root`). Without '--all' option, the
primary one is shown.
create::
Creates new repository.
== 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 first 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.<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. +
For example in .gitconfig:
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'.
....
[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
=== homebrew
----
brew install ghq
----
=== go get
----
go get github.com/motemen/ghq
----
=== build
----
git clone https://github.com/motemen/ghq .
make install
----
Built binaries are available from GitHub Releases.
https://github.com/motemen/ghq/releases
== AUTHOR
motemen <motemen@gmail.com>