使用Mercurial,我处于一种特别独特的情况。我的小组正在开发运行嵌入式Linux的一些不同的硬件架构;因此,我们在桌面Linux和PC上进行大部分代码开发,并在运行各种硬件架构的服务器上进行构建。
有一种情况是,使用Windows的人需要将所有更改都推送到mercurial服务器。但是,服务器和所有构建计算机都运行Linux,并期望某些类型的文件具有某些(UNIX)文件权限。
我的问题是:它是否可能并且是否有从PC修改UNIX文件权限的工具,或者在Mercurial中有一种方法可以在添加文件和推送更改时设置某种文件权限规则?
请注意,大多数PC用户都在使用TortoiseHG GUI或hg命令行界面。
谢谢!
答案 0 :(得分:5)
Mercurial只能跟踪文件的两个内容:可执行状态和符号链接状态。这意味着您无法存储更复杂的权限(例如,组权限)。
在Windows上,Mercurial不会尝试读取或写入可执行文件和符号链接位。因此,新添加的文件将在Unix(模式644)和常规文件中显示为不可执行。使用hg manifest -v
查看转换回Unix约定的权限,但请记住,Mercurial实际上每个文件只存储两位。
无法在Windows上操作存储的位。没有用于设置位的规则系统 - 但可以编写扩展来实现这样的系统。
如果您的文件需要比此更多的专业权限,则需要在构建计算机上hg update
之后设置它们。可以使用钩子,或者你可以写一个扩展名。我不认为有existing extension这样做,但是在签出文件上保存和恢复修改时间的扩展应该是一个很好的起点。