吉特·胡克斯

当git在2005年推出时,它不仅改变了Linux社区,而且改变了许多开发过程。 突然之间,您不必再在一个分支机构工作了。 相反,您将为每个功能创建一堆分支,甚至更改一个分支并在以后合并它们。 它是如此的简单和快捷,没有理由不再这样做。 即使在创建新项目时,Xcode也会为您设置一个git存储库。

我记得与Perforce一起工作,与git相比,这是一个很大的麻烦。 检出文件,使它们不再受到写保护,检查哪些文件已更改,忽略本地用户相关文件(尤其是有关.xcodeproj文件的文件),并尝试在创建后合并几个月。 拥有两个不同的开发分支并没有真正帮助。 由于git是一个很好的工具和事实上的标准,我不会详细介绍如何使用它,但是有一个很好的功能,并不是每个人都知道。

钩子

Git可以选择向每个提交添加钩子。 根据您添加的钩子,将执行不同的用户定义脚本。 一些可用的挂钩是:

  • Applypatch-msg
  • 预先贴布
  • 申请后
  • 预先提交
  • 准备提交消息
  • 提交消息

准备提交消息

prepare-commit-msg挂钩将执行一个脚本,该脚本获取作为第一个参数$ 1传递的提交消息。 有了这个,我们现在可以根据需要任意更改消息。 在讨论有关提交消息的约定时,让我们检查容易忘记的内容以及可以自动化的部分:

   :以现在时的描述 

由于我们为分支机构指定了票证名称,因此很容易提取:

$(git branch | grep '*' | sed 's/* //') 

此外,我们可以通过提取消息的第一部分并将其与我们拥有的不同类型进行比较来检查提交的类型:

 value=`cat $1` type="$( cut -d ':' -f 1 <<< "$value" )" contains=$(echo ${typeList[@]} | grep -o type | wc -w) if [ contains -eq 0 ] then return 1
科幻 

不幸的是,据我所知,并不能100%保证描述的正确时态。 您可以尝试此处描述的方法,但这并不是一件容易的事,因为自然语言很难。

有了这些信息,我们可以创建pre-commit-msg钩子:

交付前挂钩

提交前挂钩能够充当网守。 在将代码添加到存储库之前,它将检查是否一切都令我们满意。 有多个选项可供检查,但我们将使其保持简单并检查我们的代码是否符合我们的编码约定。

  swiftlint皮棉-安静 

当然,我们将不得不添加更多样板代码,以检查是否安装了swiftlint。 因此,最终的预提交钩子如下所示:

设定

始终存在确保开发人员实际设置这些挂钩的问题,但是有一个简单的解决方案。 我们已经在较早的文章中创建了一个安装脚本。 只需创建一个指向.git / hooks目录的符号链接,使脚本可执行,即可完成设置。

下一页:测试驱动开发

上一篇:约定