我曾经遇到这样一名求职者,再三声明自己有数年的项目管理经验.我问了这样一个问题:您在项目管理中使用的版本控制工具是什么?还特地问了CVS,SVN。然而让我失望的是,这两样,他一样也不会.我当然认为他的项目管理经验是不可靠的. 不会与人沟通的程序员,一般来说不是一个好的程序员.当然,还是有例外的,所以我在这里说”一般来说”.比如,如果您能独立完成一个Linux kernel,或者您就是互联网之父,Unix之父,我就认为您可以不与人沟通.您就几个通宵不歇息,就整出一个baidu.com,我当然钦之偑之。遗憾的是,这样的天才总是太少了. 在程序员的江湖里,要学会与人沟通,协作,就一定得会至少一样协作开发工具,这里我简要介绍一下SVN. SVN被设计为新一代的版本控制协议,开发者期望它能够取代CVS.事实上,也有大量的工程从CVS转投到了SVN的怀抱.Sourceforge.net就在不久前为所有的项目提供了SVN. SVN的全名是Subversion.在最新的Fedore Core里(就是我用的GNU/Linux操作系统,它的版本是6.0,现在已经出7.0了),已经内置了SVN,您只需要在安装的时候选择它就行了. 在Windows下,也有不少的版本可以选择,比如命令行的Subversion,RapidSVN,乌龟SVN等. 具体安装,可以查询www.subversion.org.cn。 安装完了之后,您需要为svn server建立一个根目录.我的机器上是/var/svnroot,运行svnserve -d -r /var/svnroot,就成功地运行了svn server.注意,服务器文件名称是svnserve,我第一次使用时曾花了10分钟才弄清楚这个愚蠢的错误. 现在您可以把某一个工程导入到svn中了.比如运行:svn import /var/projects/www/ svn://localhost/projects/www -m “First Import”,就将/var/projects/www这个工程导入到svn系统中去了.但是这样还不够,现在对/var/projects/www目录下文件的改动还不能被svn监视的.现在新建一个目录,/var/unfinished/.进入到这个目录,运行svn co svn://localhost/projects/www,就可以检出svn服务器上的文件.检出文件后,目录下除下您的工程文件外,还将多一个.svn目录(每一级目录下都有)这是给svn客户端使用的。现在您每改一个文件,或新增目录,都要svn ci一下。比如您新增了一个newfile.php,就需要运行: svn add newfile.php svn ci newfile.php -m “newfile.php是为了***而加的一个文件” 来导入.改动的文件不需要运行svn add 命令. 如果您不知道当前有哪些文件改动了,可以用: svn status /var/projects/www 来查看当前的状态.