gpt4 book ai didi

在 Ubuntu : "Unlink of file" 上使用 Samba 的 Git

转载 作者:行者123 更新时间:2023-12-04 18:31:24 24 4
gpt4 key购买 nike

我的配置:

  • Gitlab 上的远程存储库。
  • Windows 10 机器
    使用 git (v. 2.25.1.windows.1)
  • 用于本地存储库的 Linux 机器 (Ubuntu) (S:)
    使用 Samba (v. 4.11.6-Ubuntu)

  • 问题

    从 Windows 10 计算机 CLI:
    git clone -v --recurse-submodules --progress --verbose "https://gitlab.com/my-org/my-project.git" "S:/workspace/my-project/code"

    我收到此错误:
    POST git-upload-pack (175 bytes)
    remote: Enumerating objects: 1591, done.
    remote: Counting objects: 100% (1591/1591), done.
    remote: Compressing objects: 100% (1259/1259), done.
    remote: Total 1591 (delta 318), reused 1543 (delta 270), pack-reused 0
    Receiving objects: 100% (1591/1591), 6.60 MiB | 5.46 MiB/s, done.
    Resolving deltas: 100% (318/318), done.

    Unlink of file 'assets/main/packs/fancybox' failed. Should I try again? (y/n)

    故障排除

    问题并不总是与同一个目录有关(在本例中:“fancybox”)。
    但它 总是 下载完成后发生 (100%)

    在我的 Windows 机器上,使用 ProcessExplorer,我看不到任何进程阻止该文件夹。
    同样,在装有 Samba 的 Linux 机器上也是如此。

    这是我的 smbstatus -L:
    28971  65534  DENY_NONE  0x120089    RDONLY  LEASE(RWH)  /home/htdocs   workspace/my-project/code/.git/objects/pack/pack-3f0aa70acd802c42ee978f95bc62f61f24dc07d6.idx
    28971 65534 DENY_NONE 0x12019f RDWR LEASE(RWH) /home/htdocs workspace/my-project/code/.git/index.lock
    28971 65534 DENY_NONE 0x120089 RDONLY LEASE(RWH) /home/htdocs workspace/my-project/code/.git/objects/pack/pack-3f0aa70acd802c42ee978f95bc62f61f24dc07d6.pack

    上:
    Unlink of file 'assets/main/packs/fancybox' failed. Should I try again? (y/n)

    我试图解锁这个锁定的文件夹:
  • 将权限 777 分配给所有存储库
  • 杀死关于我的文件夹的 Samba 进程 28971

  • 但是git一直问我是否想再试一次:-(

    我还尝试设置有多个调试消息:
    GIT_CURL_VERBOSE = 2

    但我没有得到我需要的信息。

    这个问题发生在我和另一个用户身上。
    而对另一个同事(相同的配置),从来没有。

    在我的办公室,对于其他一切,网络运行良好:我们在网络上将文件从 Win 复制、移动到 Linux 机器上没有问题。

    有什么想法?

    最佳答案

    有点晚了,但我也遇到了这个问题,经过一些横向研究,我发现了这种奇怪行为的(至少一个)原因。
    SMB 有一个缓存,其默认设置对于 GIT 来说过于激进,在 check out 或克隆期间需要创建大量连续文件。请看下面的链接:
    https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/ff686200(v=ws.10)#details
    尽管本文引用的是旧版本的 Windows,但对于最新的 Windows 10 内部版本,一切仍然有效。
    因此,以本地机器和 samba 共享所在机器之间的一些流量增加为代价,GIT 可以以一种稳固而稳定的方式工作。
    您可以通过直接创建注册表项来禁用此类缓存:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
    [DWORD] FileInfoCacheLifetime = 0
    [DWORD] DirectoryCacheLifetime = 0
    或者通过使用 Powershell Admin
    Set-SmbClientConfiguration -DirectoryCacheLifetime 0
    Set-SmbClientConfiguration -FileInfoCacheLifetime 0

    关于在 Ubuntu : "Unlink of file" 上使用 Samba 的 Git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62450100/

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