如果存在git index.lock,我可以安全地删除它,还是需要更多动作来验证完整性?

 jgfioirejmf 发布于 2023-02-07 16:54

在过去的几周里,我得到了一条关于index.lock存在几次的消息.

删除该文件在git index.lock中作为解决方案提到 我尝试提交时存在文件,但无法删除该文件

是否正在删除该文件,或者是否需要执行其他操作(有没有办法验证完整性等等?).

这是在安装了git命令行工具,TortoiseGIT和SourceTree的Windows x64系统(完全修补)上.

1 个回答
  • 没有其他 答案提到那index.lock是什么.
    然而,它在文件" Documentation/technical/api-lockfile.txt" 下的Git发行版中有记录.

    删除该文件足够吗?

    在该文档之后,似乎删除就足够了.

    lockfile API

    lockfile API有两个目的:

    相互排斥.
    当我们写出一个新的索引文件时,首先我们创建一个新文件$GIT_DIR/index.lock,将新内容写入其中,然后将其重命名为最终目标$GIT_DIR/index.我们尝试$GIT_DIR/index.lock使用O_EXCL 创建文件,以便在其他人已经尝试更新索引文件时我们可以注意到并失败.

    自动拆卸.
    在我们创建"锁定"文件之后,我们可以决定die(),并且我们希望确保删除尚未提交到其最终目标的文件.
    这是通过记住我们在链表中创建的锁定文件并从atexit(3)处理程序中清除它们来完成的.当程序在信号上死亡时,也会删除优秀的锁定文件.

    在Windows上,不应存在权限问题(例如将该文件创建为' root'的Git工具).
    唯一的问题是您的一个Windows工具:

    要么在系统帐户下运行,要么在用户帐户下运行,

    或者开始暂存文件(意味着创建索引并创建index.lock文件),并使用另一个工具来启动同一个仓库中的暂存文件.

    考虑到该文件是在O_EXCL锁定方案下创建的,很可能无法创建它,因为它被另一个PID锁定.
    正如这里提到:

    唯一的办法O_EXCL是如果文件存在并被O_CREAT指定,则导致调用失败.


    2015年8月更新,适用于git 2.6+(2015年第3季度)

    "lockfile"API已在新的"tempfile"API之上重建.

    请参阅提交9e90331,提交18a3de4,提交ebebeae,提交00539ce,...(巨大的列表),提交2db69de(2015年8月10日)作者:Michael Haggerty(mhagger).
    (由Junio C gitsterHamano合并- -在提交db86e61,2015年8月25日)

    临时文件API允许创建,删除和原子重命名临时文件.
    程序结束时仍处于活动状态的临时文件会自动清除.
    Lockfiles构建在此API之上.

    2023-02-07 16:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有