#executable #git-config

app shim

从配置文件创建可执行文件的垫片

5个版本

0.1.4 2023年1月1日
0.1.3 2023年1月1日
0.1.2 2023年1月1日
0.1.1 2023年1月1日
0.1.0 2022年10月25日

452配置

每月 23次下载

自定义许可

18KB
345 代码行

垫片

从配置文件创建可执行文件的垫片。

稳定性警告

API可能会在主版本号为0时大幅变化。一旦这个crate的版本达到1.0.0,api的更改将仅在主要版本升级时发生。

安装

使用Cargo

cargo install shim

用法

命令行界面

shim --help

垫片配置文件

动机

压缩配置

我的git配置分散在太多地方

  • Git允许使用前缀git-命名任意命令,git会

  • 我的git配置文件定义了别名

[alias]
url = remote get-url origin
root = rev-parse --show-toplevel
commit = !cz commit
cz = !cz commit
  • 我的bashrc有一个函数,
    • 为所有git命令添加全局的预/后钩子
    • 覆盖一些git子命令
function git() {
  # Run pre-commit first for immediate feedback
  pre-commit # TODO: only run on some git commands

  # Override functionality based on the first argument, the subcommmand
  case "$1" in
    'commit')
      cz commit
      ;;
    'init'|clone)
      # Run command before creating a new repo on filesystem
      git-track-repos --quiet "$@"
      # Unlike other commands, make sure to run the git operation still
      git "$@"
      ;;
    *)
      # Fall back to actual git for everything else
      git "${@}"
      ;;
  esac

  # Run these after any git operation completes
  git-track-repos # This is a program I wrote to keep track of all repos I've cloned
}
  • Git钩子

调用git时少做分叉

我已经创建了很多钩子。我已经为一些钩子编写了一个工具(TODO:发布该工具并在此处链接)在rust中。我计划让shim能够从动态库中加载垫片,而不是分叉大量进程

依赖

~14–27MB
~396K SLoC