gpt4 book ai didi

linux - 防止 git 在 Linux 中没有 chmod 权限的文件系统上失败

转载 作者:行者123 更新时间:2023-12-03 09:58:52 29 4
gpt4 key购买 nike

我正在尝试在权限非常有限的 samba 挂载上初始化 git repro。

尝试初始化我会收到:

$ git init .
error: chmod on /mnt/server/subfolder/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'

这令人惊讶,因为文件模式已经全局设置为 false
$ git config --get core.filemode
false

一般的问题是/mnt/server 是一个 samba 挂载到我访问权限非常有限的文件夹。
此外,我无法更改/mnt/server 挂载的任何权限,因为我正在使用共享服务器,在该服务器上多个用户需要访问/mnt/server 挂载。
所以像建议的那样更改安装权限 here不是一种选择。

还创建一个符号链接(symbolic link),如建议的 here不起作用,因为 samba 驱动器上未启用符号链接(symbolic link)。

所以问题是如何防止 git 出现 chmod 错误或根本不做 chmod?
这可能吗?
或者我如何在环境中初始化一个 git?

最佳答案

有点hacky的解决方案是:

在具有足够权限的情况下在destiantion 处初始化一个空的repro,即mktemp -d。

$ tempdir = $(mktemp -d)
$ git init $tempdir
Initialized empty Git repository in /tmp/tmp.pREa198fnx/.git/

将创建的 .git 文件夹移动到目标位置。
$ mv $tempdir/.git /srv/server/sub/
mv: preserving times for './.git/branches': Operation not permitted
mv: preserving permissions for ‘./.git/branches’: Operation not permitted
mv: preserving times for './.git/hooks/applypatch-msg.sample': Operation not permitted
mv: preserving permissions for ‘./.git/hooks/applypatch-msg.sample’: Operation not permitted
mv: preserving times for './.git/hooks/commit-msg.sample': Operation not permitted
...

移动过程中会出现一些错误但不会停止 mv从移动文件。

最后,git按预期工作:
$ echo "Foo" > bar.txt
$ git add bar.txt
$ git commit -m "Added Foobar"
[master (root-commit) e232039] bar.txt
1 file changed, 1 insertion(+)
create mode 100755 bar.txt
$ git status
On branch master
nothing to commit, working tree clean

分支和 checkout 似乎工作,没有测试推/pull 。

仍然会欣赏更清洁的解决方案。

关于linux - 防止 git 在 Linux 中没有 chmod 权限的文件系统上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59198321/

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