执行 vim 命令作为 git 预提交挂钩
Execute vim command as git pre-commit hook
我在 vim 中使用以下命令来批量自动格式化特定文件类型:
:args ~/someDirectory/**/*.filetype | argdo execute "normal gg=G" | update
我想弄清楚如何 运行 此命令作为预提交挂钩,以确保我关心的所有文件类型在提交前自动格式化。
我该如何完成?
提前致谢。
一个解决方案是 as in this answer,调用 vim
:
files=`find /path/to/repo -name "*.filetype" -type f`
for file in $files
do
vim -e -s -n "+normal gg=GZZ" $file
done
但是,您可以定义一个 clean
脚本来执行脚本(如上调用 vim),而不是使用 pre-commit
挂钩。
脚本通过 content filter driver, using a .gitattributes
declaration 调用(在您的情况下:*.filetype
)。
(图片来自"Customizing Git - Git Attributes" from "Pro Git book"))
一旦您在本地 git 配置中声明内容文件管理器驱动程序,它将自动在 git commit
上应用该脚本。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。
我在 vim 中使用以下命令来批量自动格式化特定文件类型:
:args ~/someDirectory/**/*.filetype | argdo execute "normal gg=G" | update
我想弄清楚如何 运行 此命令作为预提交挂钩,以确保我关心的所有文件类型在提交前自动格式化。
我该如何完成?
提前致谢。
一个解决方案是 as in this answer,调用 vim
:
files=`find /path/to/repo -name "*.filetype" -type f`
for file in $files
do
vim -e -s -n "+normal gg=GZZ" $file
done
但是,您可以定义一个 clean
脚本来执行脚本(如上调用 vim),而不是使用 pre-commit
挂钩。
脚本通过 content filter driver, using a .gitattributes
declaration 调用(在您的情况下:*.filetype
)。
(图片来自"Customizing Git - Git Attributes" from "Pro Git book"))
一旦您在本地 git 配置中声明内容文件管理器驱动程序,它将自动在 git commit
上应用该脚本。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。