Tra*_*mes 12 git teamcity gitlab
使用 Team City 从 Git 存储库中签出。(如果重要的话,Gitlabs)
从空构建目录开始。得到这个错误:
致命:无法将“core.filemode”设置为“false”
(如果重要的话,在 Windows 机器上运行)
运行 Team City 的用户已更改为管理员以防万一。
当此命令退出时,.Git 目录不是有效的 Repo。
擦除整个“工作”目录无济于事。
它随机来来去去......
还有这个: git config --global --replace-all core.fileMode false
没有任何用处 - 使用或不使用 --replace-all,并以管理员或其他用户身份运行(如果将“false”更改为“true”,则会出现相同的错误,如果将其更改为“falseCD”,则会更改错误为无效值 - 很明显,它正在改变它。
有人有任何想法吗?
Bla*_*g23 48
我讨厌成为那样的人,但我通过重新启动 Windows 解决了这个问题。
lin*_*ack 34
在我的情况下,使用“sudo”对我有用。例如:
asif@asif-vm:/mnt/prog/protobuf_tut$ git clone https://github.com/protocolbuffers/protobuf.git
Cloning into 'protobuf'...
error: chmod on /mnt/prog/protobuf_tut/protobuf/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'
Run Code Online (Sandbox Code Playgroud)
做了一个“sudo”后,我可以让它工作:
asif@asif-vm:/mnt/prog/protobuf_tut$ sudo git clone https://github.com/protocolbuffers/protobuf.git
Cloning into 'protobuf'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 66782 (delta 0), reused 0 (delta 0), pack-reused 66777
Receiving objects: 100% (66782/66782), 55.83 MiB | 2.04 MiB/s, done.
Resolving deltas: 100% (45472/45472), done.
Checking out files: 100% (2221/2221), done.
Run Code Online (Sandbox Code Playgroud)
Traderhunt Games 将此追溯到某些防病毒软件,这是有道理的。原因与 Git 用于更新配置条目的过程有关。
\n\n当git config运行并被告知更改一个或多个配置key = value字段(例如更改core.filemode为)时false,它实现这一点的方式是使用三步过程:
使用创建文件的操作系统服务调用创建一个新的空文件 ( .git/config.lock),如果文件已存在,则失败。如果此步骤失败,则表明另一个git config(或等效)命令已经在运行,我们必须等待它完成才能执行我们自己的命令git config。
读取现有的配置文件,key = value一次一项。如果键是我们关心的键,则写入新 key = value值,否则复制现有的key = value。
这里有一些奇特之处,即允许重复的键与只能出现一次的键;有关详细信息,请参阅--replace-all和--unset-all选项git config。请注意,git config它本身对大多数键和值对知之甚少甚至一无所知,只要您选择 Git 目前不使用且将来也不会使用的键,您就可以发明自己的键/值对。(你如何确定 Git 在 2043 年将使用和不会使用什么,我不知道。:-) )主要的例外是一些值core.*,这git config 确实理解,并且其他几个 Git 命令可能会自己设置。
(请注意,--unset处理方式与替换非常相似。与非all替换一样,它仅取消设置第一个匹配key = value对。取消设置是通过简单地不写入给定键而不是写入替换来实现的key = value。因为git config只是通过文件行进行操作逐行,这很容易做到。另外,如果你key = value是全新的,Git 会通过读取所有行来处理这个问题,注意到它没有替换任何现有的key,因此添加一个新key = value行。这很复杂事实上,按键是逐节列出的,但逻辑本身很简单。)
最后,读完整个现有配置并完全写出新配置(根据需要使用fflush和fsync等等),调用操作系统服务来重命名文件,以便重命名为. 在这种特殊情况下,这就是该过程失败的地方。fclosegit config.git/config.lock.git/config
如果重命名成功,则具有使新配置生效并删除锁定文件的效果,所有这些都是一个原子操作:任何其他 Git 命令都会看到原始文件中的完整旧配置.git/config或完整的新配置,来自.git/config构建期间已知的新文件.git/config.lock文件。
StackOverflow 的另一个问题是:我们是否能够删除 Windows 中打开的文件?接受的答案 包括以下声明:不打开启用完全共享(包括删除)的文件的防病毒产品是有缺陷的。 如果是这种情况\xe2\x80\x94,也就是说,如果这个特定的 AV 软件无法使用“允许删除”标志打开,并且如果此类软件有错误,那么这个特定的 AV 软件就是问题所在并且有错误。
\n| 归档时间: |
|
| 查看次数: |
35636 次 |
| 最近记录: |