Права доступа к файлам изменены между OS X и Windows - PullRequest
1 голос
/ 17 мая 2010

Я заархивировал проект rails из OS X и отправил его коллеге, который работает в Windows. Он обновил исходный код, сжал всю папку проекта и отправил мне zip-файл.

После распаковки проекта я обнаружил, что информация о правах доступа к файлам утеряна. Например, script/server изменяется с -rwxr-xr-x на -rw-r--r--. Есть ли способ сохранить флаги разрешений файлов при передаче файлов между Mac и Windows?

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

Формат файла ZIP не сохраняет разрешения. Форматы * .tar (и * .tar.bz2 и * .tar.gz) сохраняют разрешения; однако большинство компьютеров Windows не понимают их «из коробки», и нет никакой гарантии, что когда они не будут обработаны, а затем замедлены, что разрешения будут сохранены (но если вы распакуете архив на любой другой машине UNIX, они те же разрешения, что и при первоначальном копировании). Но, поскольку вы работаете над файлами исходного кода, вам действительно следует использовать какую-то систему контроля версий (VCS), также известную как управление исходным кодом (SCM). Существует несколько возможных вариантов в зависимости от того, предпочитаете ли вы централизованную систему контроля версий (CVCS) или распределенную систему контроля версий (DVCS). Для CVCS система контроля версий Subversion (SVN) является очевидным выбором. Для DVCS стоит рассмотреть и Git и Mercurial . Насколько я понимаю, эти системы контроля версий будут сохранять разрешения (или они позволяют явно устанавливать разрешения через свойства - например, "svn: исполняемый файл").

0 голосов
/ 17 февраля 2012

ZIP содержит разрешения на доступ к файлам, но все программы, с которыми я сталкивался, сохраняют только те права доступа к файлам, которые у них есть при архивации, в ОС и файловой системе, из которых они были заархивированы. Таким образом, в Windows не будет флагов r / w / x, только каталоги (каталоги не всегда сохраняются как отдельные записи, «сжатая папка» в окнах - нет).

Я создал утилиту командной строки, чтобы можно было устанавливать файлы как исполняемые внутри ZIP, потому что я хотел создавать файлы релизов, действительные на MacOS и Linux из Windows. Созданные файлы будут работать корректно на всех 3 ОС.

Утилиту можно загрузить с http://www.galaxy -forces.com / zip_exec.zip . Исходный код c ++ доступен с того же сайта.

Надеюсь, это кому-нибудь поможет.

/ Ronnie

...