ChinaUnix.net 首页 | 博客 | Linux | 论坛 | 人才 | 培训 | 知识库 | 资料 | 读书 | 手册 | 精华 | 下载 | 沙龙 | 搜索
Linux首页 | Linux论坛 | 论坛精华 | 开源新闻 | 技术文章 | 专题专栏 | 新手指南 | 迁移方案 | 产品方案 | 开源项目 | 开源图书 | 软件下载 | 人才招聘 | Linux博客
  搜索

  产品与方案
·中科红旗全面打造现代化邮政体系
·红旗助力“网上审批服务” 推动电子政务
·红旗正版化开创呼和浩特网吧建设新起点
·红旗Linux助信息产业部邮件服务器“快跑”
·中标普华Linux 为电子政务信息化保驾护航
·中标普华Linux助力基金产业
·中标普华Office率先支持UOF标准
·中标普华邮件系统助力西藏政府信息化建设
·红旗Linux助力国库集中支付系统改革
·红旗助中信卫星 掀起GIS通信应用风暴
·红旗软件助力烟草总局 全面建设“数字烟草”
·红旗助力“信访阳光工程”打造畅通信访渠道
·红帽联合FIS发布下一代实时核心银行平台
·红旗助力金盾 打造全无忧出入境信息系统
·红旗Linux全力打造中国邮政总局名址信息库
·爱尔兰证交所从Unix迁移到红帽企业Linux
·一流的意大利银行选择使用红帽企业Linux
·PLUS Finanzservice选择使用红帽企业Linux
·红帽助力TransACT Communications 公司
·法国零售业巨头Lapeyre采用Redhat Linux
·旅游预订网站选择使用红帽企业Linux
·马哈拉施特拉邦政府的红帽解决之道
·美国联邦政府案例
·红帽为慕尼黑展览会提供现代化集群系统
·Yuba郡用开源软件和红帽产品提高了效率
·红帽企业Linux助印度理工建立高性能计算中心
·采用红帽Linux 将系统维护时间缩短了65%
·从UNIX迁移到Linux使Peñoles公司获益非浅
·Hikal公司用红帽企业Linux开展任务关键的ERP项目
·KDE3.5.4新版本发布
·芝加哥商业交易所从Unix向Linux迁移
·南方基金管理有限公司成功案例 Red Hat Linux
·广东北电通讯设备有限公司成功案例
·挪威国家石油公司从UNIX迁移到红帽Linux,成本减半
·中央电视台CCTV动画部案例 Red Hat Linux

  图书

鸟哥的Linux私房菜基础学..


Linux程序设计.第3版


Linux设备驱动开发详解


  下载
·Endian Firewall
·linux kernel(Linux 内核)
·CentOS
·Fedora Core 6
·Scientific Linux
·Slackware 11.0
·Gentoo Linux
·ubuntu-6.10-i386服务器版本
·ubuntu-6.10-amd64服务器版
·ubuntu-6.10-i386桌面版
·ubuntu-6.10-amd64桌面版
·Engarde Linux
您的位置: Linux时代 > 技术文档 > 程序开发 >

用开源软件Subversion进行个人文档管理

日期:2007-03-21 作者:Chad Perrin 来自:linux.chinaunix.net


  有一个开源版的控制系统,或者说是修订版的控制系统,名为Subversion (简称为svn),正在快速受到开发者的喜爱。它口碑极佳,可在线下载,完全免费,有大量文字称赞它的高效和实用。它稳定,灵活,能干,安全,免费,开源,并且能够用于任何规模的项目。

  以前的控制系统明星软件是CVS, 全称为并行版本系统(Concurrent Versioning System)。 Subversion出现之初只是为了给尊敬的CVS打造一个坚实可敬的基础,并根据多年以来CVS用户总结的经验来加以改进。它在很多方面如此成功,它的普及就是证据。

  Subversion 几近通明的使用方法,跨多操作系统平台上大量可用的客户应用,以及Subversion的低成本,和易于管理等因素,使得它不再仅仅被用来管理源代码。对于内容可以被描述为“项目”或者“项目集”的目录结构来说,Subversion提供了一个近乎实时的备份系统。越来越多的BSD, Linux, 和 OpenSolaris用户在传统用途之外,还用Subversion的版本控制功能来保存文件目录。

  安装

  当Windows提供了一步安装方式时,Subversion在开源社区的迅速走红绝对与它在BSD和Linux软件档案中的易于使用不无关系。例如,在Debian GNU/Linux中安装Subversion,只需用到管理界面和命令语句和命令行客户端就能完成,只要以根用户身份登录,输入apt就可完成 subversion的安装。

  类似情况下,在标准的Fedora Core Linux的YUM软件包管理器中安装Subversion,也只需要命令yum。对于FreeBSD, 无论使用pkg还是-C /usr/ports/devel/subversion进行安装都可以,使用哪种方法取决于您想从二元软件安装还是从源代码进行安装。即使MacOS X 也提供了能够安装Subversion的软件档案。

  在某些情况下,subversion的版本控制功能要比很多普通备份工具出色很多。最突出的当然是软件开发项目中的源代码控制。另外一个就是文档管理。由于用户的活动,文档和目录的内容会经常发生变化,迫使开发者采用一种方法撤消一些删改,看看过去的版本。一般是通过changelog来实现,在版本控制系统中专业的称呼为 “修订记录”。

  一种自动修订记录管理机制对于非专业编程人员来说可能非常熟悉,因为最著名的wiki软件就采用这样的技术来跟踪内容的变化过程,并能够通过返回去掉不好的修改。

  做为修订记录机制的一部分,Subversion这样的版本控制系统不仅仅维护复制当前版本文件的中央数据库,还要一路维护从文件进入版本控制以后直到当前所进行的修订日志。任何从事软件开发工作时间够长的人都能告诉你能够返回到已知良好状态的功能有多么重要。这正是任何版本控制软件的中心任务:也是它们得以存在的最主要原因。

  Subversion还有更多的功能。例如,当两个人同时编辑同一文件时,它能解决版本冲突的问题。在真实世界里,那些实践经验丰富,经常在版本控制文件中提交工作,在提交变化前先更新本地文件的用户,很少与他人的工作发生冲突。这种少见的情况Subversion也能通过内置的冲突解决方案进行解决。它还支持将主开发线上经过修改的分支与其他开发分支的接合,对不同程度用户的不同程度的校验和升级许可,以及一些其他一些项目经理们会觉得非常有用的性能。

  个人文件管理

  版本控制系统的另外一个用处就是他们允许您在不同地点,使用多台计算机共同开发同一项目,而无需使用任何USB存储设备或者CD-RW介质。只要你在工作用电脑上安装了版本控制代理软件,并登录版本控制魔法发挥作用的服务器,您就可以找到项目的最新版本并开始工作。

  由于同一数据的不同副本在校验副本更新到不同的客户端计算机时自动同步,因此Subversion 这样的控制系统也可用做一套收集在一起的文档的备份系统。这包括您每天的个人文档,以及源代码等;也就是说,如果您将任何小到不需要占用带宽来进行每周的备份的相关数据集合看做是“项目”,就可以利用Subversion来节省复制数据的时间。个人文档目录一般都非常符合这一特点,特别是当您所保存的文件大部分都是几兆大的音乐、视频及高清晰度图片等文件时,绝对适用。

  如果你是那种了解日常备份在预防硬件及文件系统故障中的重要意义的用户,你会发现您所进行的不过是日常备份,因为操作Sebversion所要进行也就传统的备份系统配置和向CD-R中复制数据。Subversion所进行的如此简单的个人文件备份能够节省大量时间,或者至少能将你从延迟备份的负担中解放出来,你所需要的只是另外一台运行着Subversion服务器软件的计算机。

  由于Subversion并不象Visual SourceSafe和ClearCase这样专属软件的图形化界面那样,指定单一用途,因此它能够很容易的被用于一些非标准的使用场合,如标准文档控制等。你依然有自己的GUI环境,但是由于有很多专为Subversion使用的GUI客户端软件,而Subversion也被集成进了很多其他的GUI工具,如Eclipse,甚至通过TortoiseSVN客户端进入了微软公司的资源管理器。

  配置和安装

  使用Subversion进行文档管理最可能的情况是在微软的 Windows系统中使用TortoiseSVN 或者在免费的类UNIX操作系统的软件管理工具中使用Subversion客户端软件。如果要安装基本Subversion,你可以在BSD或者 Linux软件的档案库中找到服务器软件,命令行客户端以及管理工具,因此如果你不需要图形化用户界面的话,你根本无需另外安装任何软件。

  在微软的Windows服务器中安装Subversion,你可能会用到Subversion项目的维护者Tigris.org网站上提供的SVN 1-Click Setup 安装程序。许多使用Subversion的微软Windows用户选用BSD服务器代替Windows服务器,而且这样还不用分别安装。

  在服务器上安装了服务器软件以后,您需要创建一个版本控制知识库。下面的例子假设了一个类UNIX的shell command 环境。括弧中的语句可根据您的需求进行更改。不要在操作中输入括弧。“#”标志表示您以根用户身份登录,或者使用sudo进行了管理员访问。在 [nnnn]中填入你要访问的subversion知识库的userid 值。

  列 A

  # addgroup [svn-users]

  # usermod -u [nnnn] -G [svn-users]

  # mkdir -m 770 [/home/svn-repos]

  # chgrp [svn-users] [/home/svn-repos]

  # svnadmin create --fs-type fsfs [/home/svn-repos]

  请注意一定要在fs-type选项中明确“fsfs”。因为默认情况下,Subversion知识库文件系统的数据库的最初名称为“bdb”,已被证实有些不稳定。新版本中默认名称已经更改为fsfs,但是有些老版本及非标准版的Subversion依然使用bdb。出于安全起见,还是要在创建新知识库时明确一下fsfs数据库格式,保证系统能够更稳定。

  在服务器上建完知识库目录以后,就可以在这个目录下创建实际的项目知识库。也许是出于直觉,你不应该直接在知识库内进行。列B告诉你如何通过单独目录在知识库目录中创建包含有被丢弃的文件的知识库,然后再通过“check in”登记来创建项目知识库。

  最后以前面命令中指明的用户帐号登录。从所用用户帐号的根目录开始按步骤进行。使用非根用户身份登录,前面显示“$”符号。同样的,[ ]括弧中的内容可根据你的需要进行修改。记得在输入时不要输入括弧。

  列B

  $ mkdir [project]

  $ cd [project]

  $ touch [file.txt]

  $ svn import -m "[importing file to create project]" . file:///[home/username/svn-repos/project]

  在服务器上创建项目知识库以后,就完成了。 在将项目知识库导入知识库之前需要删除刚才创建的项目目录,因为目录中的数据现在已经安全的保存在了服务器上。既然知识库是通过一个空文件使用touch command创建完成饿,所以删除也不会造成任何损失。

  在客户端电脑上你可能需要编写项目或者访问文档,所以你还需要查看知识库中的内容并创建一个本地副本。范例如下。同样的也是假设您使用免费的类UNIX操作系统,如BSD,或者OpenSolaris这样的Linux版本。.

  列 C

  $ cd [/home/username]

  $ mkdir [svn-local]

  $ cd [svn-local]

  $ svn co svn+ssh://[hostname/home/username/svn-repos/project project]

  这时,一般都需要三次输入保存知识库的系统的密码。在本例中,除了你选择的操作系统,您还需要在客户端系统上安装功能完全的SSH客户端和SSH服务器。 Svn命令知道如何通过SSH传达网络需求,为客户端和服务器系统之间提供安全的加密连接,保护您的用户名、密码和数据不受可能注意您的网络的恶意安全破坏者侵害。

  Svn-local目录不是必需的。如果你愿意的话,你可以就把最新校验过的项目或者文档目录直接保存到您的用户帐号主目录下。一般最好将由 Subversion知识库维护的目录与备份方式不同的目录分别保存,以免弄混。在以前的例子中,你都无需为重要数据“项目”的目录命名,所以也不需要为最初的空文件“file.txt”命名。

  对项目的本地副本核完毕,就可以删除客户设备上的项目目录。然后就需要在目录内添加其他在Subversion中保存的文件,并在服务器上的Subversion知识库中进行核对。列D就为操作范例。

  列 D

  $ cd [/home/username/svn-local/project]

  $ svn rm file.txt

  $ cp -R [/home/username/project/*] .

  $ svn add `ls -R`

  $ svn ci -m "[added all base files to the project directory]"

  cp –R命令能将目录中重要数据目录中的全部内容(在这里为/home/username/project) 复制到当前目录中 (由单独的句子指定)。svn add `ls -R` 命令将这个目录下全部内容以及所有的子目录添加到本地项目目录副本中的版本控制中。svn ci 命令将当前副本提交到服务器上的主目录中。在添加命令以后,svn客户端工具会显示添加文件列表。Ci命令会要求密码以确保你有权限进行提交。

  Subversion的使用

  不同的图形化用户界面的使用方法也不同,各个用户的使用方式也不同。对于使用命令行的客户,最重要也是最基本的升级、管理和提交项目文件的命令是以下这些:

  svn up – 通过主知识库更新本地副本。在开始对任何文件的工作前都要进行更新。如果别人访问过知识库,也要在提交之前进行再次更新,是个好习惯。

  svn status – 告诉你哪些文件被修改过,哪些经过增改但还未被提交,哪些创建以后还未添加到版本控制,哪些文件神秘消失而没有从版本控制中删除(最大的可能是因为你忘记使用svn rm 替代 simply rm),以及哪些文件已经从版本控制中完全删除。

  svn add – 我们刚才演示过,用来在版本控制中添加文件。

  svn rm – 从版本控制中删除文件。这样也会从本地文件系统中将相关文件删除。

  svn mv – 将知识库中本地副本中的某个文件移动到另一个地方,而不会造成Subversion数据库的混乱。它的工作原理有些类似标准的mv 命令,但是它只用于版本控制下的本地项目副本。

  svn mkdir – 创建目录,与普通的mkdir 命令很类似,但是它同时能够将目录自动加入版本控制。

  svn ci – 能将知识库中本地副本当前目录下以及其内部所有子目录内发生的全部变化提交给主知识库。在这一命令生效之前,必须首先解决svn状态命令报告的标有问号的部分(未知的文件状态)。在没有疑问以后,svn ci 会打开默认文本编辑器输入提交信息。如果你需要查找项目中较早版本中的文件就会用到这些文本。-m 选项能够被用来明确命令行中的提交信息,如上面创建和使用Subversion知识库中所演示的那样。这样做的目的在于给已提交的变化做出标记,以防以后什么时候可能会对之前做的修改进行分类。

  svn help – 为你提供大量关于Subversion命令行客户端的使用信息,例如对每个svn命令深入的解释和举例,以及除这些以外更多命令的使用方法。您可以通过输入svn help add(这里假设你需要获得关于“add”命令的信息)获得更多关于特定svn命令的信息。

  本文并非神化Subversion,只是对Subversion版本控制软件进行了有益的介绍,版本控制软件的使用是任何敬业的程序员都要使用的技巧。本文中的这些例子能够为您提供真切的帮助,即使您不是程序员也会感觉有益。

本文被浏览



 相关新闻

Apache和Subversion 搭建安全CVS2006-09-13 14:31:08
SUBVERSION系统学习笔记2005-01-10 16:35:49


 相关评论
关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 免费注册

Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们

京ICP证041476号