我正在编写一个使用版本化核心数据模型的 iOS 应用程序。
我刚刚发布了一个在升级时崩溃的应用程序版本,因为我不小心编辑了旧版本并创建了一个新版本。
为了阻止这种情况再次发生,我想以某种方式标记旧版本,以防止在不首先删除标记的情况下修改这些文件的任何签入。
为了让事情变得更复杂,我使用的是 git-svn,所以将只读 repo 作为子模块是行不通的。
基本上你不能。如果您没有关闭标志,
Git 将跟踪所做的更改。chmod
您可以使用一些解决方法来做到这一点。
在您的本地和服务器挂钩中验证所需文件不是其中的一部分,diff
这意味着它没有被修改。
由于可以删除用户的本地挂钩,因此您希望在服务器中对其进行验证。可以在pre-receive or update
钩子中完成。
git update-index --assume-unchanged
这将“忽略”对此文件所做的任何本地更改。
您是否考虑过标记您的版本?标签就像只读分支。您可以将标记指针移动到不同的分支,但您必须使用强制 (-f) 选项,因此您至少必须考虑您在做什么,您不会意外地这样做。这是关于 git 标记的一个很好的参考:https ://git-scm.com/book/en/v2/Git-Basics-Tagging
初始化具有只读访问权限的新存储库并将其添加为子模块
怎么样chmod 400 /path/to/file
?