我的问题是 git repos 与任何其他目录不同,不会被删除rm -r- 您需要指定rm -rf. 这是因为目录中的所有文件.git/objects都具有只读权限。我的问题是:
我必须设置什么设置,或者我必须对什么源文件进行手术,才能使 git
.git/objects/...使用权限/umask 644 而不是 444 权限存储其文件,也就是用户的读写权限,组和其他人的只读权限?它不需要更改现有的目标文件,只要从此以后的所有目标文件都是可写的。
(这一行下面的两个部分不是问题的一部分:只是我调查过的死胡同,以及对“你不应该想要那样”的本能的先发制人的回应。随意跳过。)
git help config-- 设置tar.umask = user看起来很有希望,但问题仍然存在。我意识到像“你不应该想要那个”/“那是故意的”/“然后不要那样做”/“只记得rm -rf用于 git 存储库”之类的答案很诱人,在这里,但它们不是我想要的寻找。一些抢先反应:
.git/objects/; 它们具有基于哈希的名称;他们有二进制内容。.hg/store/是是可写的。我从来没有听说过有人(包括我自己)不小心编辑了它;平淡无奇rm -r my_hg_repo。我在下面的回答并不是您问题的解决方案,只是关于 git 维护者做出此选择的原因和地点的更明确信息。
请参阅:为什么 git 创建只读 (444) 文件?堆栈溢出问题参考了相关的源代码和文档。
我找不到任何相关设置。
这种 git 行为给我带来了个人、本地、离线、裸 git 存储库的问题。我需要 .git 目录中的所有内容都是用户可写的,因为我使用自定义 bitrot 检测器,并且该 bitrot 检测器通过将校验和写入扩展文件属性以供以后验证来工作。如果有一个 git 配置选项,当然会很好,但我猜可写索引文件是一种边缘情况,git 维护者甚至可能不接受添加一个补丁。或者他们可能。
我确定您已经完成了下面的所有其他内容,但为了完整性以及希望这些 git 内部文件具有更多打开权限的任何其他人,我会将其包括在内。
我想象 git 维护者对这些文件使用 0444 perms,我基本上同意他们的决定,所以我使用了一种相当暴力的解决方法。在运行我的 bitrot 检测器之前,我给自己写权限:
find .git/objects/ -perm /u+w | xargs -r chmod u+w
Run Code Online (Sandbox Code Playgroud)
之后我将其删除:
find .git/objects/ -perm /u+w | xargs -r chmod u-w
Run Code Online (Sandbox Code Playgroud)
由于 git 是“特殊的”,它的只读文件可能是别名gitnuke(或使其成为函数)rm -rf或find像我上面那样做一个变通方法。旁注:rm -rf无论如何,我通常使用递归删除任何目录树,所以我从未遇到过您面临的问题。
| 归档时间: |
|
| 查看次数: |
662 次 |
| 最近记录: |