代码之家  ›  专栏  ›  技术社区  ›  Krzysiek Karbowiak

在单个存储库上工作的并发git进程

  •  1
  • Krzysiek Karbowiak  · 技术社区  · 7 年前

    我正在为git编写一些工具(假设它是另一个GUI),我计划并行运行几个git命令(使用命令行客户机),因此可能会有几个进程随时访问repo。

    1. 让几个只读(例如git log、git show、git status)命令并行运行可以吗?
    2. 它们真的会并发执行吗(即是否存在内部锁序列化访问)?
    3. 如果执行了修改命令怎么办?它会被正确序列化吗?
    1 回复  |  直到 7 年前
        1
  •  4
  •   torek    7 年前
    1. 有几个只读的。。。命令并行运行?

    git status 不是其中之一。更准确地说,, git状态 如果运行,则为只读 git --no-optional-locks status --no-optional-locks 可选择的 无论如何都会锁定,因此它不会对其他命令执行任何操作。)

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

    进行更改的命令会相互锁定,但遇到锁定问题的命令往往只是 失败 . 所以如果两个Git命令试图 index.lock

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