我可以用git只读文件吗?

时间:2013-05-28 14:57:27

标签: git git-svn

我正在编写一个使用版本化核心数据模型的iOS应用程序 我刚刚发布了一个在升级时崩溃的应用程序版本,因为我不小心编辑了版本以及创建一个新版本。

为了再次阻止这种情况发生,我想以某种方式标记旧版本,以防止在没有先删除标记的情况下修改这些文件的任何签入。

为了使事情变得更复杂,我正在使用git-svn,所以将只读repo作为子模块是行不通的。

4 个答案:

答案 0 :(得分:2)

基本上你不能 如果您没有关闭旗帜,Git将跟踪chmod所做的更改。

您可以使用一些解决方法来执行此操作。

  • Git hook

    验证您的本地和&服务器挂钩所需文件不属于diff,这意味着它未被修改。

    为什么两者兼而有之?

    由于本地挂钩可以被用户删除,因此您需要在服务器中对其进行验证。可以在pre-receive or update挂钩中完成。

  • 只读子模块

    将文件放在单独的存储库中,并将其用作子模块。除了您允许写入的用户之外,此存储库对所有用户都是只读的 我不知道你的git服务器是什么,但大多数服务器支持只读或锁定任何给定的分支。
  • git update-index --assume-unchanged

    它使Git省略任何检查并假设它没有改变。当您对工作树文件进行更改时,您必须通过在修改它们之前或之后删除“假定未更改”位来明确告诉Git。

这将“忽略”对此文件所做的任何本地更改。

答案 1 :(得分:0)

初始化具有只读访问权限的新回购并将其添加为submodule

答案 2 :(得分:0)

您是否考虑过标记您的版本?标签就像只读分支。您可以将标记指针移动到另一个分支,但是您必须使用强制(-f)选项,这样您至少必须考虑您正在做什么,您赢了&#39这是偶然的。这是关于git标记的一个很好的参考:https://git-scm.com/book/en/v2/Git-Basics-Tagging

答案 3 :(得分:-2)

chmod 400 /path/to/file怎么样?