Posted on 2010-10-14 11:03
幻海蓝梦 阅读(730)
评论(0) 编辑 收藏 所属分类:
版本管理
无论你用什么协议访问你的版本库,都至少需要创建一个版本库,这可以使用Subversion命令行客户端或TortoiseSVN完成。
如果你还没有创建Subversion版本库,是时间开始了。
你可以使用FSFS或较老但更稳定的Berkeley Database(BDB)作为版本库的后端,FSFS格式更快一点,而且可以正常运行在Windows 98,BDB格式更加的稳定,因为其经过了更长时间的验证。《使用Subversion进行版本控制》中的第5章, 版本库数据存储有更多细节。
- 创建一个名为SVN(例如
D:\SVN\
)的空文件夹,作为你的所有版本库的根。
- 在
D:\SVN\
里创建另一个目录MyNewRepository
。
- 打开命令行窗口(或DOS窗口),进入
D:\SVN\
目录,输入
svnadmin create --fs-type bdb MyNewRepository
或
svnadmin create --fs-type fsfs MyNewRepository
现在你在D:\SVN\MyNewRepository
创建了一个新的版本库。
4.1.2. 使用TortoiseSVN创建版本库
图 4.1. 未版本控制文件夹的TortoiseSVN菜单
- 打开资源管理器
- 创建一个新的文件夹,命名为
SVNRepository
- 右键点击新创建的目录,选择 → 。
然后就会在新文件夹创建一个版本库,不要手工编辑这些文件!!!如果你得到什么警告,一定要先确定目录非空并且没有写保护。
为了访问本地版本库,你需要这个文件夹的路径,只要记住Subversion期望所有的版本库路径使用的形式为file:///C:/SVNRepository/
,请注意全部使用的是斜杠。
为了访问网络共享中的版本库,你可以使用驱动器影射或使用UNC路径,对于UNC路径,形式为file://ServerName/path/to/repos/
,请注意这里前面只有两个斜杠。
在SVN 1.2之前,UNC路径曾经是一种非常晦涩的格式file:///\ServerName/path/to/repos
,这种格式依然支持,但不推荐。
|
警告 |
不要创建和访问网络共享上的Berkeley DB版本库,它不能存在于一个远程的文件系统,即使是影射到盘符的共享。如果你希望在网络共享使用Berkeley DB,结果难以预料-你可能会立刻看到奇怪的错误,也有可能几个月之后才发现数据库已经损坏了。 |
|
提示 |
如果你需要访问网络共享中的版本库,请使用fsfs格式创建版本库,如果也希望提供服务器访问,你需要1.1或更高版本的Subversion服务器。 |
无论你使用何种版本库,定期维护和验证版本库备份非常重要,或许你可以访问最近版本的文件,但是如果没有版本库,所有的历史将会丢失。
最简单(但不推荐)的方法是拷贝整个版本库目录到备份介质,然而你必须绝对确定没有访问数据的进程,在这里“访问”的意思是任何访问,一个BDB版本库即使在访问看起来只需要读时也会有写操作,如果在拷贝时版本库被访问了(web浏览器,WebSVN等等),备份将毫无价值。
推荐的方法是运行
svnadmin hotcopy path/to/repository path/to/backup --clean-logs
,用一种安全的方式创建版本库的拷贝,备份是一个拷贝,--clean-logs
选项并不必须,但是通过删除BDB版本库中多余的日志文件可以节省一些空间。
svnadmin
在安装Subversion命令行客户端时会自动安装,如果你在Windows PC上安装这个命令行工具,最好的方式是下载Windows安装版本,它比.zip
版本的压缩效率更好,所以更小,并且小心的为你设定路径。你可以从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91下载最新版本的命令行客户端。
钩子脚本是被版本库事件触发的程序,例如新修订版本的创建或未版本化属性的修改。每一种钩子都会被告知事件的足够信息,操作的目标,触发事件的用户名。依赖于钩子的输出或返回状态,钩子程序可以继续执行,停止或以某种方式挂起。请参阅《使用Subversion进行版本控制》的Hook Scripts部分来查看关于钩子实现的细节。
版本库的hooks
目录中有一些钩子的例子脚本,这些例子脚本适合于Unix/Linux服务器,在Windows下需要修改。钩子可以是批处理文件或可执行文件,下面是用来实现pre-revprop-change钩子的例子。
rem Only allow log messages to be changed. if "%4" == "svn:log" exit 0 echo Property '%4' cannot be changed >&2 exit 1
请注意所有发送到标准输出的东西都会被忽略,如果你希望信息出现在拒绝提交对话框中,你需要将这些信息发送到标准错误,在一个批处理文件中使用>&2
实现。
如果你希望你的Subversion版本库对于别人可用,你可以在你的站点包含一个链接。为了让这些更加容易访问,你可以为其他TSVN用户包含一个检出链接。
当你安装了TortoiseSVN,它会注册一个tsvn:
协议,当TSVN用户点击这样一个链接,检出窗口会自动弹出,且版本库URL已经填入。
为了在你自己的网页上包含这样一个链接,你需要添加类似下面的代码:
<a href="tsvn:https://tortoisesvn.tigris.org/svn/tortoisesvn/trunk"></a>
当然,如果你提供一个合适的图片会更好,你可以使用TortoiseSVN logo,也可以使用自己的图片。
<a href="tsvn:https://tortoisesvn.tigris.org/svn/tortoisesvn/trunk"> <img src=TortoiseCheckout.png></a>