Mercurial 和从 Windows 客户端修改 UNIX 文件权限

标签 mercurial file-permissions

我在使用 Mercurial 时处于一种特别独特的情况。我的团队正在开发一些运行嵌入式 Linux 的不同硬件架构;因此,我们在桌面 Linux 和 PC 上进行大部分代码开发,并在运行各种硬件架构的服务器上进行构建。

在这种情况下,使用 Windows 的人需要将所有更改推送到 mercurial 服务器。但是,服务器和我们所有的构建机器都运行 Linux,并期望对某些类型的文件具有某些 (UNIX) 文件权限。

我的问题是:是否有可能,是否有从 PC 修改 UNIX 文件权限的工具,或者 Mercurial 中是否有办法在添加文件和推送更改时设置某种文件权限规则?

请注意,大多数 PC 用户使用的是 TortoiseHG GUI 或 hg 命令行界面。

谢谢!

最佳答案

Mercurial 只能跟踪文件的两件事:可执行状态和符号链接(symbolic link)状态。这意味着您不能存储更复杂的权限(例如,组权限)。

在 Windows 上,Mercurial 不会尝试读取或写入可执行文件和符号链接(symbolic link)位。因此,新添加的文件将在 Unix(模式 644)上显示为不可执行文件,并显示为常规文件。使用hg manifest -v查看权限转换回 Unix 约定,但请记住,Mercurial 实际上每个文件只存储两位。

在 Windows 上无法操作存储的位。没有用于设置位的规则系统——但可以编写扩展来实现这样的系统。

如果您需要比这更专业的文件权限,则需要在 hg update 之后设置它们。在您的构建机器上。可以为此使用 Hook ,或者您可以编写扩展程序。我认为没有 existing extension这样做,但保存和恢复 checkout 文件的修改时间的扩展应该是一个很好的起点。

关于Mercurial 和从 Windows 客户端修改 UNIX 文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18922718/

相关文章:

c# - 我使用什么命令通过 ftps 连接更改文件权限?

ubuntu - 使用 yii 框架创建应用程序时在 ubuntu 中访问权限

c - 在c中使用所有者的文件权限打开文件

android - 无法更改文件/文件夹权限(尝试过 Root Explorer Pro、ES 文件资源管理器)

c# - 文件系统权限 : List-only folders

mercurial - 更改 Mercurial 历史记录中的作者

mercurial - hg revert 和 hg backout 之间有什么区别?

python - 字符串 '@LIBDIR@' 是不是有点神奇?

git - 作为一个有经验的 git 用户,我怎样才能学会理解 Mercurial 的工作原理?

mercurial - 在Mercurial中使用项目的两个版本的工作流程