GIT如何在有权限的情况下跟踪空文件夹

GIT如何在有权限的情况下跟踪空文件夹,git,gitignore,Git,Gitignore,我需要跟踪包含空文件夹的文件夹(我将其命名为“root”)。 所以我为每个空文件夹创建了一个空的.gitignore,我添加了它们,但现在我想跟踪它的权限(chmod 777 root-R)。 但是,git状态没有任何变化,git不跟踪权限。它只跟踪可执行性。因此,也没有其他通用版本控制工具跟踪权限。因此,您需要在这些工具之上构建一些东西来跟踪权限。例如 这是通过在存储库中添加钩子来实现的: 提交时,在特殊文件中记录权限并将其添加到提交中 签出时,根据特殊文件的内容修改权限 你甚至可以自己做一些

我需要跟踪包含空文件夹的文件夹(我将其命名为“root”)。 所以我为每个空文件夹创建了一个空的.gitignore,我添加了它们,但现在我想跟踪它的权限(
chmod 777 root-R
)。
但是,git状态没有任何变化,git不跟踪权限。它只跟踪可执行性。因此,也没有其他通用版本控制工具跟踪权限。因此,您需要在这些工具之上构建一些东西来跟踪权限。例如

这是通过在存储库中添加钩子来实现的:

  • 提交时,在特殊文件中记录权限并将其添加到提交中
  • 签出时,根据特殊文件的内容修改权限
  • 你甚至可以自己做一些简单的单一用途的东西;这相当简单(这就是holygeek在下面讨论的内容)


    请注意,挂钩在工作树中运行。其他只存储数据的存储库不需要任何东西,您甚至可以不使用该工具在其他地方检出数据。但是,这些文件将不具有此处定义的权限。

    Git不跟踪权限。它只跟踪可执行性。因此,也没有其他通用版本控制工具跟踪权限。因此,您需要在这些工具之上构建一些东西来跟踪权限。例如

    这是通过在存储库中添加钩子来实现的:

  • 提交时,在特殊文件中记录权限并将其添加到提交中
  • 签出时,根据特殊文件的内容修改权限
  • 你甚至可以自己做一些简单的单一用途的东西;这相当简单(这就是holygeek在下面讨论的内容)


    请注意,挂钩在工作树中运行。其他只存储数据的存储库不需要任何东西,您甚至可以不使用该工具在其他地方检出数据。但是,这些文件将没有定义的权限。

    您可以添加一个引导脚本,在运行时确保文件夹具有正确的权限。@Jan Hudec:我是否需要将其安装在服务器(生产)上,在那里我将
    git pull
    ?@Math:它与pull和push无关。绝对没有。它只与工作树有关。如果需要具有托管权限的工作树,则需要该工具来管理权限。该工具可以是现有的(如etckeeper)或您自己创建的脚本(如holygeek所建议)。@Math:将一个shell脚本提交到您的存储库中,该脚本将为您对文件夹执行chmod。@Math:不拉。我不是说过这和拉和推无关吗?它是提交和签出(ok,ok,pull在它的末尾进行签出)。是的,在用户手册中查找“hooks”。您可以添加一个引导脚本,该脚本在运行时确保文件夹具有正确的权限。@Jan Hudec:我是否需要将其安装在服务器(生产)上,在那里我将
    git pull
    ?@Math:它与pull和push无关。绝对没有。它只与工作树有关。如果需要具有托管权限的工作树,则需要该工具来管理权限。该工具可以是现有的(如etckeeper)或您自己创建的脚本(如holygeek所建议)。@Math:将一个shell脚本提交到您的存储库中,该脚本将为您对文件夹执行chmod。@Math:不拉。我不是说过这和拉和推无关吗?它是提交和签出(ok,ok,pull在它的末尾进行签出)。是的,在用户手册中查找“hooks”。我无法在我的产品服务器上更改某些内容,因此我需要一个可以在git push上执行的解决方案。不要对自己的问题发表评论,而是编辑它!无论如何,您需要在要管理权限的框中执行一些操作。既可以是现有的,也可以是您自己的脚本,但您需要在那里运行某些内容。我无法在我的产品服务器上更改某些内容,因此我需要一个解决方案,可以在
    git push
    或类似的工具上执行。不要对您自己的问题发表评论,而是编辑它!无论如何,您需要在要管理权限的框中执行一些操作。既可以是现有的,也可以是您自己的脚本,但是您需要在那里运行一些东西。