svn对文档管理(xls/doc/pdf/docx/xlsx)如何合理的应用?

svn对文档管理(xls/doc/pdf/docx/xlsx)如何应用?
是否加“锁”,如何设置“锁”权限?

[color=red]svn不能设定锁的权限,那A加锁,B可以解锁,是这样的吗? [/color]

是的

[code="java"]SVN服务器与客户端配置与应用
简介:
什么是Subversion?
Subversion 是一个自由/开源的版本控制系统。也就是说,在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。于是我们就可以籍此将数据回复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。
Subversion 的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。
某些版本控制系统本身也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性—比如,对编程语言的支持,或者提供程序构建工具。不过Subversion并不是这样的系统。它是一个通用系统,可以管理任何类型的文件集。对你来说,这些文件这可能是源程序—而对别人,则可能是一个货物清单或者是数字电影。

下载
官方下载:
服务器和程序下载 : http://subversion.tigris.org/getting.html#binary-packages
Windows常用客户端TortoiseSVN:http://tortoisesvn.net/downloads
AnkhSVN(Visual Studio插件):http://ankhsvn.open.collab.net/
Subclipse(Eclipse插件):http://subclipse.tigris.org/
SCPlugin(Mac OS x客户端):http://scplugin.tigris.org/
更多客户端和工具可以看下表或者到官方网站察看:
http://subversion.tigris.org/links.zh.html#clients

服务器端配置:
配置为以下几个部分,本次配置是在windows下使用的方式,以方便资源有限的项目使用。在UNIX环境下,只是安装方式不同,命令执行并无太大区别。
注:服务器端配置前,最好先将此机器的IP地址手动填写为固定IP地址!
 软件下载
 服务器和客户端安装
 建立版本库(Repository)
 配置用户和权限
 运行独立服务器
 初始化导入
 基本客户端操作

1,软件下载
下载Subversion服务器程序。
这里不过多赘述,注: 服务器端程序为Setup-Subversion-*.msi 。*号部分为版本号.
下载Subversion的Windows客户端TortoiseSVN。
TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。
,注:客户端程序为TortoiseSVN-*-win32-svn-*.msi。(64位系统请选择下载对应版本)

2,服务器和客户端安装
服务器安装,直接运行Setup-Subversion-*.msi ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。 (注:在安装过程中请务必不要在安装目录中包含空格,例: C:\Program Files\Subversion 是错误的路径,”Program Files”中包含了空格,这样可能会引起Subversion无法正常启动!)
安装TortoiseSVN,同样直接运行TortoiseSVN-*-win32-svn-*.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关! 这里是否需要看到效果,请自行选择是否需要重启.(注:服务器端可选择性安装客户端程序,如无必要,可以选择不安装)

3,建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如: svnadmin create E:\svndemo\repository就会在目录E:\svndemo\repository下创建一个版本库。
我们也可以使用TortoiseSVN图形化的完成这一步: 在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。

4,配置用户和权限
来到E:\svndemo\repository\conf目录,修改svnserve.conf:该处为权限配置部分,可根据需求修改.

[general]

password-db = passwd

改为:
[general]
password-db = passwd
然后修改同目录的passwd文件,去掉下面三行的注释:

[users]

harry = harryssecret

sally = sallyssecret

最后变成:
[users]
harry = harryssecret
sally = sallyssecret
在passwd文件中,“=”前的字符就是用户名,后面的就是密码。还要注意“[users]”前面的注释“#”一定要删除掉。

5,运行独立服务器
方法一: 在任意目录下运行: svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。
方法二: 在windows下使用svnService安装svn服务,
1. 将 svnService.exe拷贝到 svn的安装目录\bin下.
2. 执行 svnService -install 即可.
比如,你的所有项目都在c:\svnrepo下,你可以如下
安装时用 SVNService -install -d -r c:\svnrepo
更改时用 SVNService -setup -d -r c:\otherplace\svnrepo
如果访问其中的一个项目c:\svnrepo\project1,可以指定路径svn://localhost/svnrepo/project1 (注:作为url时用/)
第一次安装完后要到服务中手动启动它,或者到服务中将它设为自动启动,让每次机器启动时自动启动这个服务。
注意:

svn的安装目录不能有空格,否则会使创建服务失败,例 安装在 c:\program files\subversion 目录下,在创建windows服务时都会出错.
SVNService 相关的命令:
可直接输入 SVNService 看到可使用的参数信息.
备注:
SVNService的主要功能就是安装/移除服务(通过API CreateService / DeleteService 来实现的)

6,初始化导入
来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件: 右键->TortoiseSVN->Import...
在URL of repository输入“svn://localhost/trunk” 在Import Message中输入你的日志信息,完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。
需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是192.168.0.1,则URL部分输入的内容就是“svn:// 192.168.0.1/trunk”。
(注:导入与添加是两个不同的操作)

7,基本客户端操作
取出版本库到一个工作拷贝: 来到任意空目录下,在本例中E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/trunk,这样我们就得到了一份工作拷贝。
URL of repository:是你需要导出的文件路径
Checkout directory:是你将要把文件导出的具体本地路径.
其他选项默认即可..
(注:在另一台机器上同理,只不过需要填写URL地址)
添加操作:
该样式为在工作目录下新建的文件样式,显示为一个问号.
添加该文件需要点击TortoiseSVN>>Add…

然后提交即可

该文件就在工作目录上添加并且提交.

获取最新版本文件:
选择需要获得文件,选择SVN Update即可获取最新版本文件

修改操作:
该样式为文件被修改后的样式.
选择 SVN Commit…提交即可

(注:在提交过程中,可能会报错,或者禁止提交,该原因可能是人员A与人员B同时操作了该文件,造成了文件并发,或者是当人员A修改了该文件并提交后,人员B修改了该文件也需要提交时,该文件在人员B的版本低于服务器端得版本,所以禁止提交!
可以尝试如下处理方法:将该文件获取为最新版本(SVN Update),然后打开该文件,文件中内容SVN已经帮助我们把本地版本与服务器端的版本不同处标注出来,做相应的修改后选择TortoiseSVN>>Revision graph 然后在提交即可)

删除操作:
选择TorotiseSVN>>Delete 删除该文件.

然后点击该文件空白处 选择 SVN Commit…提交
注:点击空白处提交时是将整个文件夹内容全部提交,所以提交过程中需要选择需要提交的内容进行提交.且勿需要确证需要提交的内容后在提交,以免造成文件的提交给其他人员造成版本错误的结果! 如下图,选择需要提交的内容后再OK
同理该方法也适用于多文件提交,或者选择好需要提交的文件,选择SVN Commit…一起提交也可以.

该样式为该文件为本地的完整文件! 但并不代表这个文件是与服务器同步的最新版本.

察看所作的修改:
选择文件上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。

SVN库的目录结构详解
SVN库
┠tags(发布)
┃├1.1rc1
┃├1.2
┃├1.5
┃└1.9
┠trunk(主版本)
┃└project
┃├src
┃├classes
┃└WEB-INF
┖branches(分支)
└分支

主要的开发工作放在trunk,分支放在branches,发布版本放在tags。
存储库
trunk:主版本
project : 项目文件,文档ER图 用例图 实体关系图等文档
src : 开发项目文件,程序文件
classes : 类文件,通用帮助类, 例: 字符串处理通用类,通讯的通用类等,在多个项目中,可以重复利用的类文件或者解决方案
web-inf : 在WEB项目中,站点的配置信息等

branches:分支版本(独立版本)例如历史版本v1.0/v2.0 测试版本,分支A功能版本,分支B功能版本等!

tags:标记版本,比如发行版v1.0/v2.0 目前为止稳定的最可靠的版本,正在运行及适用的版本

注意事项:
开发人员每次修改,或者新增、删除、拷贝工作区对象后,应该立刻提交到版本库,有效保持工作区与资源库的高度一致.
开发人员在每次修改工作区中代码或者文档时,首先更新该对象,可以尽量减少冲突、合并.
保证提交到的版本库的代码没有BUG以免影响开发组,可以适当利用加锁机制,减少冲突.
切忌尽量不要提交整个工作文件夹,还有一些*.csproj的项目解决方案文件夹等会影响到整个项目的文件.
?[/code]

1.如何应用?
看一下svn的帮助文档。
2.是否加“锁”,如何设置“锁”权限?
svn提供锁的功能,通过菜单Get lock对文件进行锁定,通过Release Lock 释放锁定。
svn不能设定锁的权限,可以设定用户对文件的访问权限。

[code="java"]api来的快[/code]