5 releases
Uses old Rust 2015
0.1.4 | Nov 22, 2018 |
---|---|
0.1.3 | Sep 20, 2018 |
0.1.2 | Sep 18, 2018 |
0.1.1 | Sep 13, 2018 |
0.1.0 | Sep 9, 2018 |
#245 in #repository
32KB
687 lines
repos
A simple command line tool to manage local repositories.
Notes
-
Metadata file is managed by user self manually
The metadata of local repository should be managed by user self manually. The
repos
command line tool only reads the metadata for operations and never modifies it.Please take a look at https://github.com/toml-lang/toml to get a quick introduction of toml format.
-
Vcs support is done by spawning vcs process
Currently, the
repos
command line tool calls vcs process for synchronizing repositories.Please make sure to put vcs command line programs in the path environment before using
repos
command line to synchronizing repositories.
Building
First, install Rust https://www.rust-lang.org/install.html .
Then,
cargo build --release
Copy the built
target/release/repos
(target\release\repos.exe
in Windows)
command line executable program to any place for use.
Tutorials
Prepare your metadata file
See Repos.sample.toml
for sample.
To use the sample metadata file, just copy it to the root directory of your repositories and rename it to Repos.toml
.
Add a new repository
- Put new repository metadata to
Repos.toml
- Run
repos sync {repo_url}
Update an existed repository
Run repos sync {repo_url}
.
Remove an existed repository
- Run
repos remove {repo_url}
- Delete repository metadata from
Repos.toml
manually
Update all repositories
Run repos sync
.
List repositories of a topic
Run repos topic {topic}
.
List all topics with count of their repositories
Run repos topics
.
Output stats of all repositories
Run repos stats
.
Clean up unused resources
Run repos cleanup
.
Search repositories
Run repos search {keyword}
.
Output proxy configuration
Run repos proxy
.
Change proxy configuration
Edit proxy
section in metadata file.
Metadata
See Repos.template.toml
for an overview.
repository
url
: follow usage of vcsvcs
: version control system. choices: git, hgallow_sync
: whether synchronized to local, or just marked in metadatabare
: whether bareuse_proxy
: whether using proxy for synctopics
: topics belong to
proxy
scheme
: choices: http, socks5host
port
Local files and directories
These files and directories are all in current/working directory (pwd
).
Metadata file
Repos.toml
repository directory
{host}/{path_to_repo}
e.g. repository directory of url https://example.com/org/repo.git
is example.com/org/repo
.
Subcommands
sync
: update or clone if a repository url provided, else synchronize all repositoriesremove
: remove local directory of a repositorytopics
: list all topics with count of their repositoriestopic
: list repositories of a topicstats
: output stats of all repositoriescleanup
: clean up unused resourcessearch
: search repositories by keywordproxy
: output proxy configuration
Examples:
repos sync https://github.com/org/repo.git
repos sync
repos remove https://github.com/org/repo.git
repos topics
repos topic rust
repos stats
repos cleanup
repos search keyword
repos proxy
Limitations
There are some limitations now.
-
Relative URLs without base (scp-like syntax) are not supported.
e.g.
[user@]host.xz:path/to/repo.git
or[user@]host.xz:~/path/to/repo.git
-
The
bare
attribute of a repository is only used for cloning the repository. -
Proxy configuration is global. This may be changed in the future.
-
Vcs only supports git and hg(Mercurial) now.
Dependencies
~2.3–3MB
~82K SLoC