#git #configuration #profiles #identities #cli

app gitconf

为Git提供更方便、更灵活的配置覆盖工具

1 个不稳定版本

0.1.0 2022年4月23日

8#identities

CC0 许可证

31KB
654

Gitconf

为Git提供更方便、更灵活的配置覆盖工具

描述

Git允许您设置本地和全局设置,但这些设置的管理还有很多需要改进的地方。
Gitconf工具作为覆盖程序,向git添加了配置配置文件机制。有了gitconf,您可以在系统中创建多个git设置配置文件,并在每个特定存储库中通过一条命令在这些配置文件之间切换。

由于gitconf是覆盖程序,您可以通过它执行所有经典的git命令。例如,使用gitconf clone而不是git clone。在这种情况下,gitconf将确保在执行命令之前git设置与所选配置文件匹配。您还可以设置一个交互式配置文件选择对话框,当您开始与新的存储库一起工作时显示。

用法

Gitconfig继承了所有现有的git命令,但也增加了一些自己的命令。

gitconf show-profiles

显示当前目录中可见的所有设置配置文件列表。

gitconf show-profile

显示所选配置文件中包含的设置。接受配置文件名称作为单个参数。

gitconf set-profile

在当前目录中设置所选配置文件。接受配置文件名称作为单个参数。

gitconf set-profile-path

在当前目录中安装位于指定路径的配置文件。
接受配置文件路径作为单个参数。

配置机制

Gitconf将配置数据存储在名为.gitconf的目录中。Gitconf将按照启动时的路径和每个父路径搜索名为.gitconf的目录。配置文件存储在.gitconf/profiles中,作为toml文件。当前所选配置文件的副本存储在.gitconf/current中。较近路径上的配置优先于较远路径上的配置。类似于git的做法,首先读取全局设置文件,然后依次读取所有较低级别的设置文件。每个配置覆盖或扩展较高级别的参数。此外,位于/etc/.gitconf中的配置被认为是最全局的。

通常,在安装giconf时,默认配置在"/etc/.gitconf/current/DEFAULT"中创建。
您可以用它作为示例。

配置选项

配置文件可以包含以下参数

Strict

一个布尔选项,告诉gitconf忽略所有高级配置。默认为false

StrictGit

一个布尔选项,指示gitconf覆盖通过gitconf本身之外做出的任何git设置。默认为true

SelectProfileOnFirstUse

在新的仓库中开始工作时,显示带有配置选择的配置对话框。默认为

ShowCurrentProfile

在调用git命令时,将当前配置名称打印到标准输出。默认为

Interactive

启用显示交互式对话框。默认为

Config

键值字典。gle键是git参数,值是它的值。

安装

从源代码

需求

  • rust工具链
  • make
  • gzip
# Clone project
git clone https://github.com/DomesticMoth/gitconf.git
cd gitconf
# Build native
make build
# Install
sudo make install

下载deb包

您可以从发布页面下载预构建的deb包
v0.1.0 sha1校验和

gitconf-arm7.gz      f597a8d3ae7416713364b5be9221f0cef5608c02
gitconf-x64.gz       1c917fad94e14c5672f0f8272ff1b7bba7803a1a
gitconf-deb-arm7.deb b2b4bc614a88466c44012bf0ee5f700f93c4e146
gitconf-deb-x64.deb  6d61db782b4ac1a74aca1f80ea6c91547f7c7642

构建deb包

您也可以从源代码自行构建deb包
需求

  • rust工具链
  • make
  • gzip
  • dpkg
# Clone project
git clone https://github.com/DomesticMoth/gitconf.git
cd gitconf
# Build for x86-64
make build-deb-x64
# or for arm7
make build-deb-arm7
# Builded packages are saved in the ./out directory

crates.io

cargo install gitconf

依赖关系

~6–16MB
~208K SLoC