【问题标题】:How to deal with multiple Linux user files in Git如何在 Git 中处理多个 Linux 用户文件
【发布时间】:2012-02-29 06:33:18
【问题描述】:

我有一个 Git 项目,它有点特别,因为树中的文件是由两个不同的用户生成的。示例:

# ls -la

drwxr-xr-x 13 ivan ivan  4096 2012-02-02 16:52 .
drwxrwxrwx 32 root root  4096 2012-01-28 21:37 ..
drwxr-xr-x  2 ivan ivan  4096 2012-02-07 20:41 system
drwxr-xr-x  2 ivan ivan  4096 2012-02-07 20:41 compatibility
drwxr-xr-x 33 ivan ivan  4096 2011-12-08 18:13 resources
drwxr-xr-x  8 ivan ivan  4096 2012-02-07 20:41 .git
-rw-r--r--  1 ivan ivan   307 2012-02-02 16:52 .gitignore
-rw-r--r--  1 bulk bulk   700 2011-11-01 20:10 base.log
.....

Git 仅由一个用户 (ivan) 控制,但守护程序会生成分配给 bulk 用户的文件。守护进程添加新文件时一切正常,但是当守护进程更改文件时,git 停止工作说:

error: unable to unlink old 'base.log' (Permission denied)

我知道最好的选择是让守护进程以 ivan 用户身份运行,但这在技术上很困难。问题是:有什么办法可以在 Git 中处理这种情况?我的意思是,我只想在没有用户权限问题的情况下执行“git checkout branch”。

【问题讨论】:

  • 你需要在 git 中跟踪 base.log 吗?通常将日志文件添加到 .gitignore (这可能会使您的问题消失)
  • 我需要这个和其他日志。问题与守护进程生成的日志文件有关,但我需要将这些日志 gitted

标签: linux git file-permissions


【解决方案1】:

这并不是一个真正的 Git 问题,而是为了给你一个答案……

您正在存储库中创建文件,然后以没有完全权限的用户身份运行工具。你必须解决一个或另一个问题:以bulk 运行Git,或者创建ivan 可以读写的文件。请注意,这并不一定意味着由 ivan 拥有 - 他们可以拥有 664 权限,并具有适当的组。

当然,另一种解决方案是不跟踪您无权访问的文件。您正在跟踪日志文件是可疑的 - 这不是一个正常的用例,因为在运行时生成的内容会根据您所在的位置而有所不同,因此对于应该签入的内容没有明确的概念 - 但我相信您确实需要这样做。

因此,假设您确实需要跟踪这些文件,那么根据您当前的设置,没有办法让事情正常进行。您无法写入无权写入的文件。

【讨论】:

    【解决方案2】:

    将您的 git 用户 (ivan) 添加到“批量”组。

    Debian:

    sudo adduser ivan bulk   # and relogin
    

    其他(FC、Redhat 等?):

    usermod -a -G bulk ivan
    

    一切都应该没问题。要拥有写访问权限(即,您可以签出、合并等工作树),请更改权限以允许组写访问权限:

    sudo chmod g+rw bulk.log
    

    替代方案:

    【讨论】:

    • 问题是不是只有一个日志文件,有18个,可以创建新的。使用您的解决方案(这是我目前最好的),我将不得不对每个新日志文件进行 chmod。
    • @Ivan:你还有什么期待?我可以建议您以 root 身份运行 :)
    • 这可能是一个解决方案,但不知道以后会不会增加更多问题。
    • @Ivan 重新考虑目标。你用这个干什么?已实现增量日志归档,请参阅 logrotate。只需将旋转的日志移出 /var/log 并更改所有者。如果您需要跟踪原始所有者,请将它们存储在文本文件/脚本中
    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2018-03-16
    • 2021-12-24
    • 2016-02-19
    • 2016-08-25
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多