4

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

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

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

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

谢谢!

4

1 回答 1

6

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

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

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

如果您需要比这更专业的文件权限,那么您需要hg update在构建机器上设置它们。可以为此使用挂钩,或者您可以编写扩展程序。我不认为有一个现有的扩展可以做到这一点,但是保存和恢复签出文件的修改时间的扩展应该是一个很好的起点。

于 2013-09-20T22:41:22.783 回答