我不希望存档构建成功,除非我的工作目录是干净的。因此,我想在我的 Xcode 项目中添加一个“运行脚本”构建阶段(或类似的东西):
如果 我正在执行存档构建...
并且我的源目录中有未提交的更改
然后构建失败并出现错误。
我正在使用 Xcode 4 和 git 1.7。
什么是能够胜任这项工作的优秀、简洁、可重用的脚本?
最佳答案
这是我想出的脚本:
#!/bin/sh
if [ -z "$(git status --porcelain)" ]; then
TAG=`date +xcarchive-%Y%m%d-%H%M%S`
echo "Working directory clean, creating tag ${TAG}"
git tag -a -m "Xcode Archive created" ${TAG}
exit 0
else
echo "error: Working directory dirty, stopping build"
exit 1
fi
作为奖励,如果工作副本是干净的,它会创建一个标签。
clean/dirty 检查基于 this question (我忘了我已经提出了一个答案)。
如果您不想创建标签,请删除 git tag
行。
如果您不想停止构建,请删除 exit 1
行。
在项目中安装它:
- 将其放入项目目录中的一个文件中(我将其命名为
ArchiveHousekeeper.sh
)并确保设置了可执行位 (chmod +x
) - 在您的 Xcode 项目中,添加一个新的“外部构建系统”目标
- 姓名:“文件管家”(或任何您喜欢的名字)
- 构建工具:
./ArchiveHousekeeper.sh
- 在 Xcode 菜单上,选择 Product -> Edit Scheme...
- 在“构建”部分中,添加新目标,然后取消选中“存档”列中除外的所有框。这确保脚本只会在存档上运行。 (请参阅 this question 以获取解释和漂亮的屏幕截图。)
- 现在尝试创建一个存档,但由于您尚未 checkin 这些更改,所以它失败了!
如果 Xcode 4 Pre- and Post- actions 可以用于此,那就太好了(这样你就不需要创建一个“假”目标),但它们似乎不会影响构建,并且我也不知道它们在哪个目录中执行,有哪些环境变量可用,或者它们的输出去向。
关于xcode - 如果我的 git 工作副本脏了,我该如何停止 Xcode 存档构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085187/