3 个版本

使用旧的 Rust 2015

0.1.2 2019年12月2日
0.1.1 2018年3月24日
0.1.0 2017年7月1日

命令行工具 中排名第 2940

MIT 许可证

33KB
597

ghcl: GitHub 克隆

自动分支、克隆并设置 GitHub 仓库的上游远程仓库。默认情况下,master 分支将跟踪上游远程仓库。

作为向 GitHub 仓库贡献的“快速入门”工具。GitLab 和 BitBucket 等更多服务即将推出™。代码已准备好支持多个服务,但它们的 API 尚未实现。

本项目遵循 MIT 许可证。有关详细信息,请参阅 LICENSE.txt

安装

此项目需要 libgit2cmake 进行构建。

目前,所有安装方法都需要从源代码构建,并且需要安装可工作的 Rust。要快速设置 Rust(和 Cargo),请使用 rustup

  • 通过 crates.io:cargo install ghcl
  • 通过 GitHub
    git clone https://github.com/PlasmaPower/ghcl.git
    cd ghcl
    cargo build --release
    sudo cp target/release/ghcl /usr/bin # or just cargo install, to install for just your user
    

参数

ghcl 0.1.0
Lee Bousfield <email redacted here to prevent spam>
Automatically forks and clones a GitHub repository

USAGE:
    ghcl [FLAGS] [OPTIONS] <REPOSITORY> [CLONE_PATH]

FLAGS:
    -h, --help                 Prints help information
        --no-quiet             Don't be quiet (output status messages)
        --no-track-upstream    Don't setup master to track upstream
        --no-upstream          Don't setup an upstream remote (implies no_track_upstream)
    -q, --quiet                Don't output status messages
        --setup-upstream       Setup an upstream remote (default)
        --track-upstream       Setup master to track upstream (default, imples setup-upstream)
    -V, --version              Prints version information

OPTIONS:
    -c, --config <FILE>                       Sets a custom config file
    -s, --default-service <SERVICE>           The service to be used if the repository is in the form user/repo [values: github, GitHub, Github]
        --fork-timeout <TIMEOUT>              The maximum timeout for the fork creation (default: 30)
    -o, --organization <ORGANIZATION>         Fork into an organization
        --origin-protocol <GIT_PROTOCOL>      The git protocol to use for the origin (default: SSH) [values: ssh, https, SSH, HTTPS]
    -p, --password <PASSWORD>                 Your password (insecure - use a personal access token and put it in your config, or input your password when prompted)
        --remote-name <REMOTE_NAME>           The name of the upstream remote to create (default: "upstream")
        --upstream-protocol <GIT_PROTOCOL>    The git protocol to use for the upstream (default: HTTPS) [values: ssh, https, SSH, HTTPS]
    -u, --username <USERNAME>                 Your username

ARGS:
    <REPOSITORY>    Repository to fork and clone
    <CLONE_PATH>    Where to clone the repository (defaults to the name of the repo)

配置

配置文件位于

  • Linux: ~/.config/ghcl/config.yml(或 $XDG_CONFIG_HOME/ghcl/config.yml
  • MacOS: ~/Library/Application Support/ghcl/config.yml
  • Windows: %APPDATA%\PlasmaPower\ghcl

内容(所有内容都是可选的,并且可以被参数覆盖)

类型/有效值 描述
organization 字符串 克隆仓库的组织
track_upstream 布尔值 是否将 master 分支设置为跟踪上游?(如果为真,则 setup_upstream 不能为假)
setup_upstream 布尔值 是否创建上游远程仓库?
remote_name 字符串 创建的上游远程仓库的名称(如果 setup_upstream 为真则使用)
origin_protocol HTTPS 或 SSH 用于源远程的协议
upstream_protocol HTTPS 或 SSH 用于上游远程的协议(仅在 setup_upstream 为 true 时使用)
default_service 目前仅支持 github 如果仓库形式为 "用户/仓库",则使用的服务
quiet 布尔值 是否输出状态消息?
fork_timeout 整数 在 fork 后尝试克隆的最大总超时时间
authentication 映射 - 见下文 每个服务的认证(通常是用户名 + 密码)

认证是一个服务(目前仅 "github")到用户名和密码的映射。对于 GitHub,您可以使用具有 "repo" 权限的个人访问令牌(推荐这样做),而不是实际密码。这样,它只有有限的权限,并且可以轻松撤销。

示例配置

organization: myOrg
track_upstream: false
setup_upstream: true
remote_name: my-upstream
origin_protocol: SSH
upstream_protocol: HTTPS
default_service: github
quiet: true
fork_timeout: 30
authentication:
  github:
    username: ExampleUser
    password: efbfd4e43d8e77c1dc24... # personal access token

常见问题解答

当我使用 ghcl 时,在 "克隆仓库..." 后会冻结

这很可能意味着您的 SSH 代理配置错误。我不确定为什么会导致冻结,但为了修复它,请运行 ssh-add ~/.ssh/id_rsa,或您的 GitHub SSH 密钥是什么。您还应该将其放入您的 .profile 或您启动 ssh-agent 的任何地方。

这个程序不适合我的工作流程!

这个程序有偏见,并不是为了适应每个工作流程。然而,如果您只是缺少一个小选项,请随时创建一个问题或拉取请求。

依赖项

~31–45MB
~822K SLoC