使用 git,当 pull/clone/fetching 来自 github 时如何自动格式化
Using git, how to auto-format when pull/clone/fetching from github
好的,我们的团队是新的,我们正在努力为我们的代码确定一个风格指南。我们是一家 GoLang 商店,所以格式化很简单。
Shell 脚本代码(在许多脚本代码中)没有单一的规范样式指南可供参考。
我们将在提交挂钩中使用 shfmt
(因为它看起来不错),这至少可以使我们的代码风格在 repo 中保持一致。但是,如何通过 shfmt
将代码从同质样式 "bend" 返回到我们各自的样式呢?有这样的东西吗?
我想我可以只使用 shfmt
或其他 10 多个工具之一 "beautify" shell-code 并将该工具配置为最接近的设置恢复我的风格。这可能是我需要前进的方向。
两个问题:
- 有人知道可以向前或向后格式化的工具吗?
- auto-clone/pull/fetch 挂钩或自动执行此操作的方法怎么样?
显然,我可以编写一个包装脚本,在拉取后执行,但只是想知道以前是否有人做过这样的事情。
这不是一个实用的方法 ("forward or backward in formatting"),因为它涉及重写提交(更改它们的内容,因此更改它们的 SHA1)
通常的方法是简单地拒绝任何推送的提交,如果它的 shfmt 输出与推送的提交内容不同(意味着代码在 推送之前格式不正确。
不过,如果您想确保过去的提交被格式化,您可以使用 git filter-branch
, as described in "Reformatting Your Codebase with git filter-branch" by Elliot Chance.
git filter-branch --tree-filter 'shfmt $(\
git show $GIT_COMMIT --name-status | egrep ^[AM] |\
grep .sh| cut -f2)' -- --all
但是,所有开发人员都需要将 his/her 本地克隆重置为新的重写存储库。
I'm simply seeking a way to display my style in my local repo.
问题是显示您的样式而不更改内容。
你可以试试 .
好的,我们的团队是新的,我们正在努力为我们的代码确定一个风格指南。我们是一家 GoLang 商店,所以格式化很简单。
Shell 脚本代码(在许多脚本代码中)没有单一的规范样式指南可供参考。
我们将在提交挂钩中使用 shfmt
(因为它看起来不错),这至少可以使我们的代码风格在 repo 中保持一致。但是,如何通过 shfmt
将代码从同质样式 "bend" 返回到我们各自的样式呢?有这样的东西吗?
我想我可以只使用 shfmt
或其他 10 多个工具之一 "beautify" shell-code 并将该工具配置为最接近的设置恢复我的风格。这可能是我需要前进的方向。
两个问题:
- 有人知道可以向前或向后格式化的工具吗?
- auto-clone/pull/fetch 挂钩或自动执行此操作的方法怎么样?
显然,我可以编写一个包装脚本,在拉取后执行,但只是想知道以前是否有人做过这样的事情。
这不是一个实用的方法 ("forward or backward in formatting"),因为它涉及重写提交(更改它们的内容,因此更改它们的 SHA1)
通常的方法是简单地拒绝任何推送的提交,如果它的 shfmt 输出与推送的提交内容不同(意味着代码在 推送之前格式不正确。
不过,如果您想确保过去的提交被格式化,您可以使用 git filter-branch
, as described in "Reformatting Your Codebase with git filter-branch" by Elliot Chance.
git filter-branch --tree-filter 'shfmt $(\
git show $GIT_COMMIT --name-status | egrep ^[AM] |\
grep .sh| cut -f2)' -- --all
但是,所有开发人员都需要将 his/her 本地克隆重置为新的重写存储库。
I'm simply seeking a way to display my style in my local repo.
问题是显示您的样式而不更改内容。
你可以试试