gpt4 book ai didi

git - 处理单个存储库的并发 git 进程

转载 作者:行者123 更新时间:2023-12-04 01:47:53 26 4
gpt4 key购买 nike

我正在为 git 编写一些工具(可以说它是另一个 GUI),并且我计划并行运行多个 git 命令(使用命令行客户端),因此多个进程可能随时访问 repo。

  • 并行运行多个只读(例如 git log、git show、git status)命令是否可以?
  • 它们真的会并发执行吗(即是否有内部锁序列化访问)?
  • 如果执行了修改命令怎么办?它会被正确序列化吗?
  • 最佳答案

    1. Is it fine to have several read-only ... commands run in parallel?


    是的。不幸的是,哪些命令实际上是只读的列表令人惊讶:特别是 git status不是其中之一。更准确地说, git status仅当您运行 git --no-optional-locks status 时才为只读. (所有命令都可以这样运行,尽管 --no-optional-locks 无论如何只会影响可选锁,所以它对其他命令没有任何作用。)

    1. Will they really execute concurrently (i.e. is there internal lock serializing the accesses)?


    大多数情况下,但请参阅 (1)。

    1. What if there is a modifying command executed? Will it be serialized properly?


    定义“适当”。

    进行更改的命令会相互锁定,但遇到锁定问题的命令往往会失败。因此,如果两个 Git 命令试图获取 index.lock两者都更新索引,一个获胜并继续,另一个失败并完全退出。那是“正确的”吗?存储库保持不变,但其中一个命令从未真正运行过。

    真正的只读操作通常会看到“之前”状态或“之后”状态,但它们有可能看到混合状态。例如, git log可能会连续读出六个引用名称,而其他一些命令会更新其中的一些。在这种情况下 git log可能会为每个引用名称获取一个或多个“旧”值和一个或多个"new"值。

    关于git - 处理单个存储库的并发 git 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549374/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com