我编写了一个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
我想知道的是,如果我从构建命令中删除“clean”,我会遇到什么问题?我对“干净”的作用有一个模糊的理解:删除以前编译的对象,这将导致以下构建命令从头开始构建整个项目。
然而,完整的构建需要很长时间才能完成我们的项目,而如果我们不做一个干净而且没有经过多次修改,那么它只需要几秒钟。我想保持我们的预提交挂钩快速轻量级但我担心构建会进入一些奇怪的状态并阻止开发人员能够提交,即使他们的代码很好。
如果我在每次构建之前没有清理我的预提交挂钩,是否会遇到问题?在某些情况下是否可能会错误地报告构建错误,或者如果我不清理则会出现问题?
答案 0 :(得分:2)
如果您想确定您的提交是否已编译,则应在构建之前进行清理。有时候库和资源会混乱,这就是clean命令存在的原因。您希望确保检查该修订版的人可以编译项目而不会出现任何问题。如果您可能有以前版本中的剩余部分,例如旧资源,则无法保证。
想象一下,为GUI使用图像。你编译你的应用程序,它的工作原理然后,您重新调整您的资源,并以某种方式最终从项目中删除图像。如果再次运行应用程序,如果不清理项目,它仍然可以加载旧图像。所以它对你有用,但不适合干净的人。