dotbare
介绍
dotbare是一个命令行实用程序,可帮助管理DotFiles和或作为通用模糊Git客户端。作为一种互补的管理工具,它围绕着git裸存储库,从中查询git信息,并通过FZF显示它们以获得交互式体验。它最初是受使用FZF的git包装器Lengit的启发。 dotbare使用了不同的实现方法,并专注于管理和与系统互动式互动。由于dotbare的灵活实现,它可以轻松地与Symlink/GNU Stow设置集成,甚至可以用作任何GIT存储库中使用的通用模糊git客户端。
作为通用的模糊git客户端(使用--git标志), dotbare动态确定最高级别.git文件夹和处理git信息,并在当前工作树中执行git操作。
您可以在此处找到如何使用Git Bare存储库来管理Dotfiles。或视频说明,帮助我开始。如果您当前正在使用Symlink/GNU Stow设置,请在此处查看如何与它们集成dotbare 。
选择并编辑杂物。舞台和脱离杂物。交互式日志查看器。有关更多功能和命令,请查看Wiki。
为什么
对于我来说,开始使用版本控制来管理Dotfiles一直是一项艰难,因为“ GNU Stow”这样的工具确实使我吓到了所有的符号链接,直到我发现使用Git Bare存储库来管理DotFiles,零symlinks,零symlinks,最小的设置,在将点files保持在该位置的同时,它们应该是。
但是,它始终缺乏一些交互式体验,因为默认情况下,它没有在git命令或文件路径上提供任何自动完成。将设置迁移到另一个系统时,这也是一种痛苦,因为您必须手动解决所有GIT结帐问题。
dotbare通过提供一系列脚本以前缀F(例如dotbare fadd , dotbare flog等)来解决上述问题,该脚本将通过处理所有GIT信息并通过FZF显示它来实现交互体验。此外, dotbare还带有命令行完成,您可以选择完成git命令或dotbare命令。只要您使用git, dotbare还具有与GNU stow或任何Symlink设置的能力。易于迁移到所需设置最小的任何系统。此外,使用一个简单的标志--git ,您现在还可以将dotbare用作通用模糊git客户端来管理任何git存储库。
安装
ZSH
dotbare应该与任何ZSH插件管理器一起使用,以下只是演示。请查看Wiki有关如何启用ZSH完成的Wiki。
Zinit
zinit light kazhala/ dotbare
如图
无花果添加了您现有终端的应用程序,快捷方式和自动完成。
只需单击即可安装dotbare 。
哦,我 – Zsh
-
将存储库克隆到OH-MY-ZSH插件目录中。
git clone https://g*i*th*ub.com/kazhala/dotbare.git $HOME /.oh-my-zsh/custom/plugins/ dotbare -
激活
~/.zshrc中的插件。plugins=( [plugins...] dotbare [plugins...] )
抗原
antigen bundle kazhala/ dotbare
手动的
-
克隆存储库(更改〜/ dotbare到您的喜好位置)。
git clone https://g*i*th*ub.com/kazhala/dotbare.git ~ /. dotbare -
将下面放入
.zshrc。dotbare .plugin.zsh\”>
source ~ /. dotbare / dotbare .plugin.zsh
bash
dotbare带有一个dotbare .plugin.bash ,其中包含git和dotbare的命令行完成函数,请查看有关如何启用它的Wiki。
-
克隆存储库(更改〜/ dotbare到您的喜好位置)。
git clone https://g*i*th*ub.com/kazhala/dotbare.git ~ /. dotbare -
将下面放入
.bashrc或.bash_profile。dotbare .plugin.bash\”>
source ~ /. dotbare / dotbare .plugin.bash
其他的
-
克隆存储库(更改〜/ dotbare到您的喜好位置)。
git clone https://g*i*th*ub.com/kazhala/dotbare.git ~ /. dotbare -
将
dotbare添加到您的道路上。dotbare to your path
export PATH=$PATH:$HOME/. dotbare \”># This is only an example command for posix shell # If you are on fish, use the fish way to add dotbare to your path export PATH= $PATH : $HOME /. dotbare
或者,您可以创建一个指向dotbare可执行文件的别名。
dotbare / dotbare \”\”>
alias dotbare = \" $HOME /. dotbare / dotbare \"
入门
依赖性
出于明显的原因,您将需要系统上的git。而且由于dotbare用bash编写,因此需要您在系统中持bash(您不需要运行bash,只需要在系统中)即可。
所需的依赖性
可选的依赖性
-
树(找到目录时提供目录树视图)
# if you are on macos brew install tree -
蝙蝠或突出显示或coderay或rougify(语法突出显示在预览文件时,否则将使用CAT)
-
Delta或diff-so cass或您选择的任何差异工具(屏幕截图中的奇特git diff预览)
设置
-
Init Git Bare存储库。
注意:默认情况下,
dotbare finit将在$ home/.cfg中设置一个裸露的存储库,以自定义位置和其他各种设置,结帐自定义dotbare finit -
添加您要跟踪的互联网。
将
dotbare视为普通的git命令。dotbare fadd -f
# or
dotbare add [FILENAME]# add entire repository like .config directory
dotbare fadd -d
# or
dotbare add [DIRECTORY]\”>dotbare fadd -f # or dotbare add [FILENAME] # add entire repository like .config directory dotbare fadd -d # or dotbare add [DIRECTORY]
-
提交更改并将其推向遥控器。
dotbare commit -m \”First commit\”
dotbare remote add origin [URL]
dotbare push -u origin master\”>dotbare commit -m \" First commit \" dotbare remote add origin [URL] dotbare push -u origin master
迁移
从普通的git裸仓库迁移
-
请按照安装步骤安装
dotbare。 -
检查您当前的git裸参考别名。
# Below is an example alias, check yours for reference alias config=/usr/bin/git --git-dir= $HOME /.cfg --work-tree= $HOME
-
设置env变量用于
dotbare。dotbare_DIR=\”$HOME/.cfg\”
export dotbare _TREE=\”$HOME\”\”>export dotbare _DIR= \" $HOME /.cfg \" export dotbare _TREE= \" $HOME \"
-
删除原始别名并使用
dotbare。 -
您可以选择将
config与dotbare相提并论,以便保持肌肉记忆。alias config= dotbare
从通用的符号设置或GNU Stow迁移
保持当前的设置,但整合了dotbare
-
请按照安装步骤安装
dotbare。 -
设置环境变量,以便
dotbare知道在哪里寻找git信息。dotbare_DIR=\”$HOME/.myworld/.git\”
# export dotbare _TREE=\”$HOME/.myworld\”
export dotbare _DIR=<Path to your .git location>
export dotbare _TREE=<Path to directory which contains all your dotfiles>\”># e.g. I have all my dotfiles stored in folder $HOME/.myworld and symlinks all of them to appropriate location. # export dotbare _DIR=\"$HOME/.myworld/.git\" # export dotbare _TREE=\"$HOME/.myworld\" export dotbare _DIR= < Path to your .git location > export dotbare _TREE= < Path to directory which contains all your dotfiles >
-
在系统中的任何地方运行
dotbare。
注意:使用此方法,您在迁移到新系统时不会运行dotbare finit -u [URL] ,您将执行正常的迁移步骤,然后执行上述步骤。
完全迁移
虽然Bare方法很棒且容易,但我建议您将当前的Symlink/GNU存储设置保持与dotbare而不是迁移。如果您对dotbare感到非常满意,只要您的遥控存储库类似于您的家庭持有人的结构(参考我在存储库中的意思),只需在下面运行命令即可。
免责声明:我对此没有进行足够的测试,因为我个人不使用Symlink/GNU Stow设置,而是谨慎迁移。我建议您在Docker中测试此迁移,请参阅test-It-In-In-In-Docker。
dotbare _DIR
dotbare finit -u [URL]\”>
# dotbare will replace all symlinks with the original file and a bare repository will be created at $ dotbare _DIR
dotbare finit -u [URL]
将dotbare迁移到新系统
-
请按照安装步骤安装
dotbare。 -
可选设置ENV变量以自定义
dotbare位置(Checkout自定义)。dotbare_DIR=\”$HOME/.cfg\”
export dotbare _TREE=\”$HOME\”\”>export dotbare _DIR= \" $HOME /.cfg \" export dotbare _TREE= \" $HOME \"
-
给
dotbare您的远程URL,让其处理其余的URL。dotbare finit -u https://git*hub.c**om/kazhala/dotfiles.git
在Docker中进行测试
当您要进行迁移时,我强烈建议您首先尝试迁移。 dotbare图像基于Alpine Linux。
dotbare:latest
docker container run -it –rm –name dotbare kazhala/ dotbare :latest\”>
docker pull kazhala/ dotbare :latest docker container run -it --rm --name dotbare kazhala/ dotbare :latest
定制
可以通过修改ENV变量来定制dotbare 。
注意:此处未介绍FZF的自定义,请查看其Wiki。
dotbare _dir
这是Bare存储库的位置, dotbare将寻找此目录并查询git信息,或者在初始化dotbare时会创建此目录。将其更改为位置或将目录重命名为您的喜好。
如果您使用的是SYMLINK/GNU Stow设置,请将此变量点设置为dotfile目录中的.git文件夹。
# Default value
export dotbare _DIR= \" $HOME /.cfg \"
dotbare _tree
这是用于Git Bare存储库的工作树,这意味着这是版本控件将进行的地方。除非您的所有配置文件都在$ XDG_CONFIG_HOME之类的内容中,否则我不建议更改此版本。如果您使用的是SYMLINK/GNU Stow设置,请将此变量设置为指向包含所有互联网的文件夹。
# Default value
export dotbare _TREE= \" $HOME \"
dotbare _backup
该变量用于确定在何处存储文件的备份。它主要由dotbare fbackup使用,该Fbackup将把所有跟踪的杂物备份到此位置。 dotbare finit -u [URL]也使用了它,当存在结帐冲突时, dotbare将自动备份冲突文件到此位置。
dotbare \”\”>
# Default value export dotbare _BACKUP= \" ${XDG_DATA_HOME :- $HOME / .local / share} / dotbare \"
编辑
这可能已经在您的env中设置了。 dotbare使用此变量来确定运行dotbare fedit时要使用的编辑器。
# Default value export EDITOR= \" vim \"
dotbare _key
此变量设置dotbare中FZF的默认键。您可以在此处查看要设置的键键列表。
dotbare_KEY=\”
–bind=alt-a:toggle-all # toggle all selection
–bind=alt-j:jump # label jump mode, sort of like vim-easymotion
–bind=alt-0:top # set cursor back to top
–bind=alt-s:toggle-sort # toggle sorting
–bind=alt-t:toggle-preview # toggle preview
\”\”>
# Default value export dotbare _KEY= \" --bind=alt-a:toggle-all # toggle all selection --bind=alt-j:jump # label jump mode, sort of like vim-easymotion --bind=alt-0:top # set cursor back to top --bind=alt-s:toggle-sort # toggle sorting --bind=alt-t:toggle-preview # toggle preview \"
dotbare _fzf_default_opts
自定义dotbare的FZF设置。当您希望与普通系统FZF设置不同的FZF行为时,这很有用。
dotbare to be bigger
export dotbare _FZF_DEFAULT_OPTS=\”–preview-window=right:65%\”\”>
# By default this variable is not set # More settings checkout fzf man page and their wiki # Example: if you want your preview window for dotbare to be bigger export dotbare _FZF_DEFAULT_OPTS= \" --preview-window=right:65% \"
dotbare _preview
此变量确定文件预览的预览命令。默认情况下,预览会自动确定倒下(BAT – >突出显示 – > coderay-> rougify-> cat)。设置此变量以控制预览命令,如果您有特定的喜好或需要额外的标志/设置。参考。
dotbare uses a fall back method to determine which command to use.
# Make sure to have \”{}\” included when customizing it, the preview script substitute \”{}\” for actual filename.
# Example: enable line number for cat command
export dotbare _PREVIEW=\”cat -n {}\”\”>
# By default this value is not set, dotbare uses a fall back method to determine which command to use. # Make sure to have \"{}\" included when customizing it, the preview script substitute \"{}\" for actual filename. # Example: enable line number for cat command export dotbare _PREVIEW= \" cat -n {} \"
dotbare _diff_pager
该变量控制dotbare flog , dotbare fadd等预览中的DIFF输出Pager等。它将读取git config core.pager的值以确定要使用的Pager。如果您对dotbare有特定的偏好或未在git配置中设置全局寻呼机,则可以使用此变量来自定义DIFF预览。
# By default this value uses fall back (git config core.pager -> cat)
export dotbare _DIFF_PAGER= \" delta --diff-so-fancy --line-numbers \"
用法
所有用法和命令均记录在Wiki中。
- 命令
- 完成
- 自定义脚本和API
- 技巧和窍门
更改
最新更改记录在ChangElog中。
测试
dotbare是使用蝙蝠测试的单位。使用路径覆盖方法实现模拟测试。此处记录了这一点,以提高可读性和可扩展性。
并非所有功能都有100%的覆盖范围,并且无法有效测试大量用户互动,如果出现问题,请解散问题。
我已将AWScodeBuild添加到CI/CD中以构建Docker映像。这主要是为了我个人实践。如果您对AWScodeBuild中发生的事情感兴趣,则可以查看我的云形式模板。
贡献
结帐贡献.md,以了解如何为dotbare做出贡献。欢迎PR,我很高兴改善/扩展dotbare的功能。
别忘了离开星星:)
背景
dotbare最初是我个人脚本的一部分,我很难共享这些脚本,并且随着脚本的数量的增加,我觉得更适合为其制作专门的项目。希望您发现它有用并享受它,谢谢!
信用
- 值得称赞的灵感。
- 归功于FZF的FZF和FZF.vim的预览脚本。
- 感谢OMZ升级方法。
- 归功于这篇文章,以逐步指南,以设置Git Bare Repo。
- 归功于此视频,以介绍Git Bare Repo。
演示
您可以在这里找到更多演示
