想问一下各位是怎么让 SVN 或者 GIT 保留 Linux 文件权限的。
背景: 十一期间帮朋友解决一个问题,他们的知识库是用 WordPress 搭建的(which is a stupid choice),历史原因没有用 Wiki ,中间还间断自己根据需求开发了一些插件,自己重新修改过主题,总之各种更改。现在他们想把这个知识库开放给合作伙伴使用,而且对其进行更进一步的开发,部分合作伙伴会参见进来协同开发。
以前他们对这个 WP 系统预想的比较简单,就是一个纯粹的知识存档和检索的系统,一直是单人开发,当初也没怎么重视,都是怎么简单怎么来,没有进行过版本控制和配置管理,最多也就简单进行备份。开发的流程也很简单:开发者自己在虚拟机的 Ubunutu 8.04 里面修改 -> tar 包 + .SQL 文件 -> Ubuntu 8.04 服务器部署,这个过程由于 tar 包能够完整的权限,基本上没有问题。
现在他们想把开发人员增加到 3 人。十一期间他们尝试了用 SVN 进行版本管理,将当前 Ubuntu 8.04 服务器上运行的版本用 tar 打包并导出了.SQL 文件作为后续开发的基线,个人负责开发各自功能模块,然后提交到 SVN 服务器,最后从 SVN export 出来放回到 Ubuntu 8.04 服务器上部署。
现在的问题是:在用 SVN 管理的过程中,发现 SVN 不能够保留 Ubuntu 下文件和文件夹权限。我做了个简单的实验,从基线中恢复到本地虚拟机里面的某个文件夹原来的权限是 744 ,将权限变更为 766 ,然后导出再 Commit 到 SVN 服务器的时候, SVN 提示没有任何 update 。
在 StackOverflow 里面找了半天,发现 SVN 和 Git 都默认不保留文件权限,也有介绍使用 asvn 等第三方模块的:
http://stackoverflow.com/questions/56149/storing-file-permissions-in-subversion-repository
http://stackoverflow.com/questions/3207728/retaining-file-permissions-with-git
我想问一下各位是如何处理这个问题的?特别是各位 CM 们,最好是使用 SVN 原生的方法。
PS:他们的系统可能比较特殊,内部封闭使用,不能连外网,系统也是多样的,有的时候是 Win XP ,有的时候是 Win 7 ,有的时候是 Ubuntu 8.04 ,这个是历史原因。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.