【发布时间】:2018-05-06 07:46:37
【问题描述】:
我有一个 PROMPT_COMMAND,它使用 git status 显示 git 分支信息,不幸的是,当调用 'git status' 时,它似乎正在修改 .git/index 文件。
这不好,因为如果您使用对目标目录具有权限的用户运行(例如在共享文件系统上或如果您作为特权帐户运行) - 最终会更改该文件的所有权给您的用户,因为 git 似乎正在重新创建 .git/index 文件。
有什么方法可以运行 'git status' 来防止它修改 .git/index 文件?
【问题讨论】:
-
稍微回避这个问题,为什么不直接克隆存储库而不是让多个用户共享同一个存储库?
-
问题在于启用了 git 感知提示的管理用户。通常这不是问题 - 但只是注意到仅 cd'ing 进入其他用户目录(应用程序帐户)会导致文件权限/所有权更改。跟踪到“git status”命令的问题。 ref-parse 不显示症状。其他人也有与 Dropbox 相关的类似问题,并且索引文件不断被修改 - 触发同步 - 对于这种情况没有有用的答案。
-
很好的理由:) 现在的问题是确定在什么情况下,
.git/index被修改了。 -
在 builtin/commit.c cmd_status() 中看起来是这样的:`refresh_index(&the_index, REFRESH_QUIET|REFRESH_UNMERGED, &s.pathspec, NULL, NULL);` 不幸的是没有以任何方式包装.
-
或调用:update_index_if_able(&the_index, &index_lock);
标签: git bash command-prompt file-permissions