4

我编写了一个 git pre-commit 钩子,如果我的 xcode 项目无法编译,它会中止提交。

它通过为我的项目运行具有适当设置的 xcodebuild 来做到这一点。如果 xcodebuild 返回非零状态,则您无法提交更改。

这是我正在运行的 xcodebuild 命令:

xcodebuild -project MYPROJ/MYPROJ.xcodeproj -target MYPROJ -configuration Debug clean build CODE_SIGN_IDENTITY='iPhone Developer' >/dev/null 2>&1

我想知道的是,如果我从构建命令中删除“干净”,我会遇到什么问题?我对“干净”的作用有一个模糊的理解:删除以前编译的对象,这将导致以下构建命令从头开始构建整个项目。

但是,完整的构建在我们的项目上需要很长时间,而如果我们不进行清理并且没有进行大量修改,则只需几秒钟。我想保持我们的 pre-commit-hooks 快速和轻量级,但我担心构建会进入一些奇怪的状态并阻止开发人员即使他们的代码很好也无法提交。

如果我在每次构建我的预提交钩子之前不清理,我会遇到问题吗?在某些情况下,它是否会错误地报告构建错误,或者如果我不清理,它会不会出错?

4

1 回答 1

2

如果你想确定你的提交可以编译,你应该在构建之前清理。有时库和资源会变得混乱,这就是存在 clean 命令的原因。您想确保检查该修订的人可以毫无问题地编译项目。您不能保证您是否可能有一些以前构建的剩余物,例如旧资源。

想象一下为您的 GUI 使用图像。你编译你的应用程序,它就可以工作了。然后你稍微重组你的资源,最终以某种方式从项目中删除图像。如果您再次运行该应用程序,如果您不清理项目,它仍然可以加载旧图像。所以它适用于你,但不适用于构建干净的人。

于 2013-06-15T17:53:48.493 回答