使用 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 并将该工具配置为最接近的设置恢复我的风格。这可能是我需要前进的方向。

两个问题:

  1. 有人知道可以向前或向后格式化的工具吗?
  2. 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.

问题是显示您的样式不更改内容。
你可以试试 .