SVN: subversion. Is a version control system, open source, and free.
通常有两种使用使用模式:
Lock-modify-Unlock 独占式,代表VSS
Copy-modify-Merge 并行式,CVS/SVN
方式1简单易行 ,但是不能支持多人协同工作,其它人在文件被签出后必须要等
待它被提交确认后才能进行更改。
方式2效率更高一些,但是多人同时进行修改操作时有可能会引发冲突。
SVN常用的命令:
checkout, authentication, update, add, delete, commit, rename, import, export...
关于命令的一点说明:
commit: 不要把垃圾文件提到到服务器,垃圾文件包括中间文件,与具体机器环境相关的文件,可以由其它文件生成的文件等。
rename: Windows系统对于文件名不区别大小写而SVN区分,所以在改名时请注意。SVN的rename功能实际是delete再add。
import: 用于将本地文件导入SVN,导入内容不包含当前目录。
export: 用于导出SVN目录结构,导出的结果不会带有隐藏的.svn目录。
resloved: 用于解决完冲突之后确认新的文件。当两个人先后修改了同一部分的内容后,再提交就会产生conflicts,小模型的冲突可以手动使用differ工具修改再resloved确认,大规模的冲突就需要放弃修改结果重新编辑了。
Log Message:
每次提交的时候都应该写上log,来说明所做的改动,可自己定义某种log格式。
属性:
SVN中可给目录增加property,比较重要的属性是external,这用来表示一个外部引用,使用方法为:FloderName URL,结果是在目录下创建一个以URL地址为内容的文件夹。external link始终保持最新,只要修改原始内容,所有的引用都会更新。这很适合来管理系统的公共部分的内容。
tag:一个非常有用的命令,用来创建一个系统的快照,把所有的文件锁定到某一个指定的版本号。需要注意的是在tagging的时候external link仍然会保持到最新的版本,所以在tagging之前需要手动指定一个external的版本号,在URL前面加上-r xxx来指定是哪个版本的external。并在tagging完成之后还原这些external,否则它们就不始终保持到最新的版本。