Ruby on rails 在OS X和Windows之间更改了文件权限

Ruby on rails 在OS X和Windows之间更改了文件权限,ruby-on-rails,file-permissions,Ruby On Rails,File Permissions,我从OSX压缩了一个rails项目,并将其发送给一位在Windows上工作的同事。他更新了源代码,压缩了整个项目文件夹,并将压缩文件发送回我 解压缩项目后,我发现文件权限信息有点丢失。例如,脚本/服务器从-rwxr-xr-x更改为-rw-r--r--。在mac和windows之间传输文件时,有没有办法保留文件权限标志 谢谢ZIP文件格式不保留权限。*.tar(以及*.tar.bz2和*.tar.gz)格式确实保留了权限;但是,大多数Windows计算机都不理解它们,并且无法保证当它们被解除保护然

我从OSX压缩了一个rails项目,并将其发送给一位在Windows上工作的同事。他更新了源代码,压缩了整个项目文件夹,并将压缩文件发送回我

解压缩项目后,我发现文件权限信息有点丢失。例如,
脚本/服务器
-rwxr-xr-x
更改为
-rw-r--r--
。在mac和windows之间传输文件时,有没有办法保留文件权限标志


谢谢

ZIP文件格式不保留权限。*.tar(以及*.tar.bz2和*.tar.gz)格式确实保留了权限;但是,大多数Windows计算机都不理解它们,并且无法保证当它们被解除保护然后重新保护时,权限将被保留(但是如果在任何其他UNIX计算机上解除保护存档,则它们将具有与最初保护时相同的权限)。但是,由于您正在源代码文件上进行协作,因此您确实应该使用某种版本控制系统(VCS),也称为源代码管理(SCM)。根据您是喜欢集中式版本控制系统(CVCS)还是分布式版本控制系统(DVCS),有几种可能的选择。对于CVCS而言,(SVN)版本控制系统是一个明显的选择。对于DVC,和都值得考虑。据我所知,这些版本控制系统将保留权限(或允许通过属性显式设置权限,例如“svn:可执行”)。

ZIP确实包含文件权限,但我遇到的所有程序都只保存压缩时的文件权限,在操作系统和文件系统上,它们被压缩。因此,在Windows上没有r/w/x标志,只有目录(目录并不总是保存为单独的条目,而Windows中的“压缩文件夹”则不)

我制作了一个命令行实用程序,可以将文件设置为ZIP中的可执行文件,因为我想从Windows创建在MacOS和Linux上有效的发布文件。创建的文件将在所有3个操作系统上正常工作

该实用程序可从下载。 C++源可从同一站点获得。

希望它能帮助别人


/Ronnie

我不明白
hg
如何保存权限标志。
.hg
不是项目树中的另一个文件夹吗?那么,这是否意味着我应该只压缩并发送
.hg
文件夹,而不是整个项目树?Thanks@Horace,否。您可以在存储库之间推/拉更改。所有这些版本控制系统都存储元数据,除元数据外的推/拉操作应保留权限。