2010-05-17 54 views
1

我從OS X壓縮了一個rails項目,並將它發送給在Windows上工作的同事。他更新了源代碼,壓縮了整個項目文件夾並將zip文件發回給我。在OS X和Windows之間更改了文件權限

解壓縮項目後,我發現文件權限信息有點丟失。例如,script/server-rwxr-xr-x更改爲-rw-r--r--。在mac和windows之間傳輸文件時,有沒有辦法保護文件許可標誌?

感謝

回答

3

ZIP文件格式不保留權限。 * .tar(和* .tar.bz2和* .tar.gz)格式確實保留了權限;但是,大多數Windows機器並不瞭解它們,並且不能保證當它們解除壓制時,然後重新保留權限將被保留(但是如果您在任何其他UNIX計算機上解壓歸檔文件,它們將擁有與最初塗柏油時相同的權限)。但是,由於您正在協作處理源代碼文件,因此您應該使用某種版本控制系統(VCS),也稱爲源代碼管理(SCM)。根據您更喜歡集中式版本控制系統(CVCS)還是分佈式版本控制系統(DVCS),有幾種可能的選擇。對於CVCS,Subversion(SVN)版本控制系統是一個明顯的選擇。對於DVCS,GitMercurial值得考慮。據我所知,這些版本控制系統將保留權限(或允許權限通過屬性明確設置 - 例如「svn:executable」)。

+0

我不明白'hg'如何保留許可標誌。項目樹內是不是'.hg'只是另一個文件夾?那麼,這是否意味着我應該只壓縮併發送'.hg'文件夾,而不是整個項目樹?謝謝 – ohho 2010-05-17 03:37:22

+1

@霍勒斯,沒有。您在存儲庫之間推/拉變更。所有這些版本控制系統都存儲元數據,除元數據外,推/拉應保留權限。 – 2010-05-17 07:27:16

0

ZIP確實包含文件權限,但是我遇到的所有程序僅保存壓縮文件時的權限,這些文件在壓縮的操作系統和文件系統上。因此,在Windows上將不會有r/w/x標誌,只有目錄(目錄並不總是作爲單獨的條目保存,Windows中的「壓縮文件夾」不會)。

我製作了一個命令行實用程序,可以在ZIP中將文件設置爲可執行文件,因爲我想從Windows創建在MacOS和Linux上有效的發行文件。創建的文件將在所有3個操作系統上正常工作。

該實用程序可從http://www.galaxy-forces.com/zip_exec.zip下載。 C++源可從同一個站點獲得。

希望它能幫助別人。

/Ronnie