#git #projects #cd

bin+lib gcd-cli

gcd-cli 工具用于管理和使用 GCD。GCD 代表 GitChangeDirectory,因为其主要目标是快速在 git 项目文件夹之间切换。

3 个版本 (1 个稳定版本)

1.2.0 2021 年 9 月 14 日
0.2.1 2020 年 11 月 27 日
0.0.1 2020 年 4 月 29 日

#2813 in 命令行工具

Download history 1/week @ 2024-02-14 14/week @ 2024-02-21 12/week @ 2024-02-28 19/week @ 2024-03-27 36/week @ 2024-04-03

每月 55 次下载

Apache-2.0

52KB
1.5K SLoC

GCD - 一个不同的 cd

主要用于快速在 git 项目之间导航。

支持

  • git 项目,gcd 数据库通过 gcd-init/gcd-update 命令填充。
  • 非项目文件夹,可以使用 gcd-add 命令将这些文件夹添加到 gcd 数据库。
  • 可以使用 gcd-alias 命令设置 git 项目和非 git 项目文件夹的别名。

注意:git 项目文件夹是指包含 '.git' 子文件夹的文件夹,不会进行其他检查。

安装

目前您需要自行构建二进制文件。

先决条件

一个有效的 Rust 构建系统 https://rust-lang.net.cn/tools/install

代码

从以下位置获取代码。

git clone https://gitlab.com/pnmtjonahen/pepercoin.git

构建并安装它。

cargo install --path .

一旦控制台依赖项更新,这将在常规 cargo install

安装

二进制文件

按照上述说明安装二进制文件。

脚本 (Unix)

要么将 gcd 脚本从 scripts 文件夹复制到您的 ${HOME}/bin 文件夹。 (或等效的,如 ${HOME}/.cargo/bin)

要么创建一个 gcd.sh 脚本,如下所示

#!/bin/bash

SCRIPT_FILE="${HOME}/.gcd/gcd-cd.sh"

gcd-select $@

if [[ -f "${SCRIPT_FILE}" ]]; then
  source ${SCRIPT_FILE}
  rm ${SCRIPT_FILE}
fi

bash 别名

最后,在您的 .bash_aliases 文件中添加条目

alias gcd='source /home/user/.cargo/bin/gcd.sh'

注意:需要源 shell 脚本,否则内部 'cd' 命令将无法按预期工作。

脚本 (Windows)

要么将 gcd.bat 脚本从 scripts 文件夹复制到您的路径文件夹。例如 ${APPDATA}/.cargo/bin

要么创建一个 gcd 脚本,如下所示

@echo off
call gcd-select
if exist %APPDATA%\.gcd\gcd-cd.bat (
    %APPDATA%\.gcd\gcd-cd.bat
    del /s %APPDATA%\.gcd\gcd-cd.bat
)

首次使用

安装后,调用 gcd init 以初始化数据库并执行对 projects_dir 的初始搜索

gcd-init

基本使用

gcd 由多个不同的应用程序组成。gcd-select 是主要的,但它不是直接调用,而是通过 shell 脚本调用。

  • gcd-select,从 gcd 脚本调用,用于选择项目。
  • gcd-init,初始化数据库。它将覆盖整个数据库。将丢失所有使用数据和别名。
  • gcd-alias,为当前文件夹设置别名,如果当前文件夹不是已知项目,则不会发生任何事情。
  • gcd-add,将当前文件夹添加到数据库。
  • gcd-purge,清除(移除)数据库中所有不再可用的项目。
  • gcd-delete,从数据库中移除当前文件夹。
  • gcd-update,更新数据库,与gcd-init相反,此操作仅添加尚未在数据库中的项目
  • gcd-mv,将项目移动到新文件夹。当在磁盘上移动git项目时,请使用此操作来更新gcd数据库中的新位置。

代码覆盖率

先决条件

sudo snap install jq
rustup component add llvm-tools-preview
cargo install cargo-binutils
cargo install rustfilt

rustup default nightly

生成覆盖率数据

cargo clean
LLVM_PROFILE_FILE="./target/coverage/gcd-%p-%m.profraw" RUSTFLAGS="-Z instrument-coverage" cargo test
cargo profdata -- merge -sparse ./target/coverage/gcd-*.profraw -o ./target/coverage/gcd.profdata

生成覆盖率报告

cargo cov -- report \
    $( \
      for file in \
        $( \
          RUSTFLAGS="-Z instrument-coverage" \
            cargo test --tests --no-run --message-format=json \
              | jq -r "select(.profile.test == true) | .filenames[]" \
              | grep -v dSYM - \
        ); \
      do \
        printf "%s %s " -object $file; \
      done \
    ) \
    -object ./target/debug/gcd-add \
    -object ./target/debug/gcd-alias \
    -object ./target/debug/gcd-delete \
    -object ./target/debug/gcd-init \
    -object ./target/debug/gcd-mv \
    -object ./target/debug/gcd-purge \
    -object ./target/debug/gcd-select \
    -object ./target/debug/gcd-update \
  --instr-profile=./target/coverage/gcd.profdata --summary-only --ignore-filename-regex='/.cargo/registry|/rustc'
cargo cov -- show \
    $( \
      for file in \
        $( \
          RUSTFLAGS="-Z instrument-coverage" \
            cargo test --tests --no-run --message-format=json \
              | jq -r "select(.profile.test == true) | .filenames[]" \
              | grep -v dSYM - \
        ); \
      do \
        printf "%s %s " -object $file; \
      done \
    ) \
    -object ./target/debug/gcd-add \
    -object ./target/debug/gcd-alias \
    -object ./target/debug/gcd-delete \
    -object ./target/debug/gcd-init \
    -object ./target/debug/gcd-mv \
    -object ./target/debug/gcd-purge \
    -object ./target/debug/gcd-select \
    -object ./target/debug/gcd-update \
  --instr-profile=./target/coverage/gcd.profdata --format=html --output-dir=./target/coverage/report --ignore-filename-regex='/.cargo/registry|/rustc'

依赖关系

~26-35MB
~554K SLoC