xcode - 如果我的 git 工作副本脏了,我该如何停止 Xcode 存档构建?

标签 xcode git build xcode4

我不希望存档构建成功,除非我的工作目录是干净的。因此,我想在我的 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 行。

在项目中安装它:

  1. 将其放入项目目录中的一个文件中(我将其命名为 ArchiveHousekeeper.sh)并确保设置了可执行位 (chmod +x)
  2. 在您的 Xcode 项目中,添加一个新的“外部构建系统”目标
    • 姓名:“文件管家”(或任何您喜欢的名字)
    • 构建工具:./ArchiveHousekeeper.sh
  3. 在 Xcode 菜单上,选择 Product -> Edit Scheme...
  4. 在“构建”部分中,添加新目标,然后取消选中“存档”列中除外的所有框。这确保脚本只会在存档上运行。 (请参阅 this question 以获取解释和漂亮的屏幕截图。)
  5. 现在尝试创建一个存档,但由于您尚未 checkin 这些更改,所以它失败了!

如果 Xcode 4 Pre- and Post- actions 可以用于此,那就太好了(这样你就不需要创建一个“假”目标),但它们似乎不会影响构建,并且我也不知道它们在哪个目录中执行,有哪些环境变量可用,或者它们的输出去向。

关于xcode - 如果我的 git 工作副本脏了,我该如何停止 Xcode 存档构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085187/

上一篇:Git 清除远程仓库

下一篇:Github .pdf 差异

相关文章:

build - 配置 Tensorflow 时,我应该在 "compute capability list"字段中输入什么?

iphone - 为什么XCode输出窗口有时有时会以纯文本格式以粗体显示?

c - getchar() 函数不起作用

git - 如何在不知道 "exact"名称的情况下恢复 Azure DevOps git 中已删除的分支

docker - 如何释放 docker 使用的浪费空间?

ios - 如何修复 ibtool 因 Main.storyboard 错误 : shouldBeArchived unrecognized 而失败

ios - 使用 xcode 8 解散 vs 呈现

ios - 线程 1 : SIGABRT Error when testing FB Login in XCODE

Github pull 请求 : There isn't anything to compare

windows - 获取 git 中最后 2 个标签之间的提交列表 - 在 Windows 上 - 不知道标签