Windows svn部署.docx
- 文档编号:4997231
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:36
- 大小:1.78MB
Windows svn部署.docx
《Windows svn部署.docx》由会员分享,可在线阅读,更多相关《Windows svn部署.docx(36页珍藏版)》请在冰豆网上搜索。
Windowssvn部署
Windows下SVN服务器的部署与管理
目录
Windows下SVN服务器的部署与管理文件版本说明1
文件版本说明2
1、安装subversion服务器4
1.1、安装subversion4
2、建立项目仓库6
2.1、使用命令行建立项目仓库6
2.2、使用TortoiseSVN客户端建立项目仓库8
3、启用SVN服务12
3.1、手动启动SVN服务12
1.3、将svn服务设置为Windows服务14
3.3、通过局域网访问svn服务器19
4、创建账户、配置使用权限22
5、管理项目仓库23
5.1、签入一个新项目24
5.2、签出24
5.3、查看签出文件的状态25
5.4、提交26
5.5、冲突27
5.6、文件加锁30
5.7、属性31
5.8、拷贝、移动文件和目录32
5.9、备份项目仓库33
6、附录35
6.1Windows下subversion的svn命令行乱码问题35
6.2SVN字符说明36
6.3获得svn的帮助信息36
6.4建议36
1、安装subversion服务器
1.1、安装subversion
安装文件:
svn-1.4.6-setup.exe。
下载:
从http:
//subversion.tigris.org/servlets/ProjectDocumentList?
folderID=91下载合适版本的subversion。
图1:
下载SVN服务器程序
运行安装程序,选择安装地址:
图2:
SVN的安装界面
然后一路next直到安装完毕。
【注意:
如果是直接解压缩的SVN安装包需要将SVN安装目录下的bin路径添加到系统环境变量的path变量中,如果使用安装程序安装则在安装时会自动注册】
在上面的例子中,我们安装在C:
\ProgramFiles\subversion,安装完成后在C:
\ProgramFiles\subversion文件夹下有如下文件结构:
图3:
SVN安装目录视图
其中bin文件夹用于保存各种执行程序。
2、建立项目仓库
项目仓库是储存各种版本项目文件的地方,有时也叫版本库。
有两种方法建立项目仓库,建立方法分别如下。
2.1、使用命令行建立项目仓库
首先在保存资料的位置创建一个文件夹,如f:
\svn-repos\ogre,这个文件夹就是你保存项目仓库的文件夹。
这样,我们就在f盘创建了文件夹ogre做为我们后面要用到的项目仓库,但此时该文件夹还不是项目仓库。
接着打开命令行窗口,使用cd命令,把路径定位到程序安装路径中的bin文件夹,在我们的例子中这个路径为:
C:
\ProgramFiles\subversion\bin,
这时命令行窗口如下:
此时在命令提示符后输入如下命令:
bin>svnadmincreatef:
\svn-repos\ogre
命令窗口如下:
图4:
使用命令行建立项目仓库
我们就成功将ogre创建为我们的项目仓库。
切换到f:
\svn-repos\ogre,这时ogre文件夹中会多出一些文件,如下图所示:
图5:
项目仓库建立后文件夹视图
2.2、使用TortoiseSVN客户端建立项目仓库
安装TortoiseSVN客户端
安装文件:
TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi;
语言包:
LanguagePack-1.4.8.12137-win32-zh_CN.exe;
下载:
从
图1:
下载TortoiseSVN网页截图
你还可以从以上网址找到对应的语言包,我们选择Chinese,simplified(简体中文)。
图2:
语言包下载页面截图
安装:
运行TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi,会出现安装界面:
图3:
TortoiseSVN安装界面
然后一路Next,直到安装完毕,完毕后先不重启,我们还要安装语言包。
接着运行LanguagePack-1.4.8.12137-win32-zh_CN.exe,点击install直到安装完毕后重启机器。
重启后安装过程就完成了。
。
创建项目仓库
如前所示,首先创建一个文件夹,如f:
\svn-repos\ogre,作为保存项目的仓库。
在该文件夹(f:
\svn-repos\ogre)上右击选择TortoiseSVN——CreateaRepository,然后会跳出对话框选择项目仓库的格式,选择FSFS,创建成功后ogre文件夹中会多出几个文件,如上面图5所示。
图6、7、8:
建立项目仓库
BDB和fsfs是svn存储版本数据的两种方式,subversion1.0随同发布的有BerkeleyDB,用它来做存放项目仓库的后端,fsfs是基于文件系统的,在subversion1.2之后fsfs是默认选项,BDB方式在服务器中断时,有可能锁住数据,所以FSFS方式更安全一点,用它创建的项目仓库可以在远程文件系统上正常工作,所以我们选择fsfs。
上面用命令行创建的项目仓库是fsfs的,如果想要使用BDB后端来代替fsfs,创建项目仓库时需要指定—fs-typebdb选项。
使用BDB时,必须把项目仓库存储在本地驱动器上。
测试创建的项目仓库信息
打开命令行窗口,输入命令svninfofile:
///f:
/svn-repos/ogre后,会给出关于项目仓库的信息,命令行窗口如下图所示:
图9:
测试能否访问
info关键字表示要查询本地项目仓库的信息。
file:
///f:
/svn-repos/ogre是本地项目仓库的路径,file表示项目仓库是位于本地的,后面我们会看到当我们使用svnserve联网并将svn作为Windows服务后,就可以使用svn协议访问项目仓库,如果我们使用Apache联网,可以使用http协议访问项目仓库(本文对此不进行详述)。
使用TortoiseSVN客户端同样可以获得项目仓库信息,鼠标右击,在弹出的菜单中选择TortoiseSVN——Repo-browser,出现如下对话框:
在对话框中输入:
File:
///f:
/svn-repos/ogre
其中f:
/svn-repos/ogre为你项目仓库的路径。
回车后弹出如下对话框:
图10:
TortoiseSVN访问项目仓库
开启了svn服务后,改变URL为svn:
//localhost/ogre也能看到同样的显示。
3、启用SVN服务
3.1、手动启动SVN服务
如果不启用SVN服务,就不能通过SVN协议访问项目仓库,例如我们TortoiseSVN客户端访问SVN服务器:
图11:
TortoiseSVN访问项目仓库
会弹出如下错误:
图12:
没启动svn服务时利用svn协议访问项目仓库出错
表示没有启动SVN服务
下面我们来启动SVN服务:
打开命令行窗口,使用cd命令,把路径定位到程序安装路径中的bin文件夹,本例中,该路径为:
C:
\ProgramFiles\subversion\bin,然后再命令提示符下输入如下命令:
bin>start/Bsvnserve--daemon--rootf:
/svn-repos
窗口如下所示:
注意:
须在subversion的安装路径下的bin路径下输入命令。
start参数是可选的,这个参数会打开一个标题为svnserve.exe的新窗口(关闭此窗口就是关闭svn服务),否则会在原窗口中打开svnserve
(若只关闭主窗口,是不会停止svn服务的)
/B是有start时的可选项,他隐藏了svnserve的窗口(此时要关闭svn服务只能通过资源管理器)。
svnserve表示启动svnserve。
--daemon让svnserve以后台进程模式启动,实际上没任何作用。
--root也是可选,后要跟允许访问的路径,一般是项目仓库的路径。
再次利用svn协议重新访问项目仓库,就会发现没有提示出错信息,
但此时项目仓库中什么文件也没有,是个空仓库。
关闭命令行窗口后,svn服务也会自动关闭。
若每次开机都要手动启动svn一件很麻烦的事,因此我们需要让SVN在系统启动时自动运行来作为svn服务器,这是我们就需要将svn添加到windows服务。
1.3、将svn服务设置为Windows服务
1、安装SVNService,SVNService可以使SVN开机时自动运行
安装文件:
svnservice.rar
下载地址:
http:
//www.stanford.edu/~bsuter/subversion-setup-guide/SVNService.zip
解压下载的SVNService后,复制其中的SVNService.exe到subversion的bin目录下(即与svnserve.exe同一目录)。
图13:
SVNService.zip解压缩得到的文件列表
2、在命令行(开始——运行——cmd)中运行命令:
svnservice-install-d-rf:
/svn-repos安装Windows服务(若无法运行,请变换目录到SVN的bin目录下后输入)。
图14:
安装SVNService服务
3、通过Windows服务管理平台启动SVNService服务并使它开机时自动运行
打开控制面板—性能和维护—管理工具—计算机管理或者运行compmgmt.msc或者右击计算机,选择管理,弹出如下计算机管理窗口。
图15:
管理SVNService
双击SVNService,从常规标签选择启动类型为自动,然后单击启动就可以第一次启动SVNService了,如下图所示。
图16:
更改SVNService为自动启动
4、其它命令
(1)改变服务设置:
我们在另一路径下,新创建了一个svn的项目仓库,此时我们想将这个新的路径作为自动运行的svn服务,可以通过如下命令修改。
运行命令:
svnservice-setup-d-r
newsvnroot为新的项目仓库存储路径。
例如我们创建e:
\newsvn\newsvn的新项目仓库作为自动启动svn服务时可访问的项目仓库,实际运行如下所示:
图17:
改变服务设置
此时我们在通过svn协议访问原来的旧仓库会出现如下错误
图18:
更改服务仓库后,通过svn协议访问旧仓库出错
表示该仓库已经不存在了。
通过svn协议访问新的仓库,如下:
图19:
更改设置后,访问新的仓库
可以正确访问。
(2)删除服务:
运行命令:
svnservice–remove,命令行窗口如下:
图20:
删除服务命令窗口
此时,在打开计算机管理窗口,在服务列表中将找不到svnservice的服务。
3.3、通过局域网访问svn服务器
首先获得本地机器的IP地址,在命令行窗口中输入ipconfig即可得到本地的IP地址。
要想从其他电脑上访问本地的SVN需要确保Svnserve用的TCP端口没有被防火墙阻止,如果使用的是windows防火墙可以使用如下设置:
1.打开windows防火墙(控制面板——安全中心——windows防火墙)
图21:
Windows防火墙配置
2.更改设置
打开windows防火墙的更改设置,界面如下:
在例外中选择添加端口,名称为SubversionRemoteAccess,端口号为3690,TCP。
图22:
添加例外
如果限制为某几台远程电脑访问,并且知道他们的ip,则可以选择“改变范围”对他们进行设置。
现在在例外标签中我们可以看到SubversionRemoteAccess位于不被防火墙隔离的程序和服务列表中。
现在我们可以从另一台安装了svn客户端的电脑上测试是否可以远程访问,右击选择TortoiseSVN——Repo-browser在URL中输入svn:
//xxx.yy.xx.yy/ogre即可看到项目仓库。
4、创建账户、配置使用权限
默认设置下,svnserve是只读的项目仓库,为了使远程用户能够对“svn”项目仓库进行写操作,必须编辑位于ogre/conf目录的svnserve.conf文件(其中以#开头的行是注释),创建svn用户帐户。
图23:
conf文件夹视图
下面通过修改svnserve.conf文件和passwd文件将项目仓库设置为对所有的匿名用户是不可访问的,而对授权用户是可读写的。
svnserve.conf文件修改如下:
anon-access=none
auth-access=write
password-db=passwd
即去掉文件中这三行前面的#号,且他们前面一定不能有空格。
而且password-db一定要等于存放用户名和密码的文件的文件名。
在passwd文件中设置用户
[users]
svn=svn
gj=gj
前面为用户名,后面是密码。
保存这两个文件,这时在打开项目仓库就要求输入用户名和密码。
5、管理项目仓库
以下5.1~5.6是可以用TortoiseSVN客户端来实现的,对使用命令行不感兴趣的读者可以略过,客户端的具体操作可以参照客户端的使用说明。
5.1、签入一个新项目
假设要签入项目仓库的文件放在tmpdir文件夹中
tmpdir>svnimport–m“import”.file:
///e:
/trysvn/svn/sesame/trunk
图24:
创建(导入)项目
import表明要将文件导入到项目仓库中
-m表示给这次操作关联一条消息
.(点)表示当前目录(即tmpdir)的内容到项目仓库之中
点后面参数是项目仓库的URL
5.2、签出
在e:
/trysvn目录下新建文件夹work用来存放签出的文件。
work>svncofile:
///e:
/trysvn/svn/sesame
图25:
签出项目
co表示执行签出操作
file:
///URL表示项目仓库的位置
最后一个参数表示把工作拷贝到哪儿
还可以使用-r参数指定签出某一特定版本的文件。
图26:
签出特定版本的项目
5.3、查看签出文件的状态
图27:
查看签出文件状态
M表示svn认出这个文件已经在本地修改过了,并且这个改动没有被存储到项目仓库中。
获得本地拷贝的详细信息
图28:
获得工作拷贝的详细信息
使用svndiff可以显示项目仓库中的文件和本地拷贝之间的区别
图29:
显示项目仓库中的文件和本地拷贝之间的区别
@@-3,3,+3,5@@告诉我们修改过的地方在文件的那个位置-3,3表示从第三行开始,显示三行,+3,5表示从第三行开始,显示五行,跟着的下面几行是实际的改动。
以+号开头的行表示他们是新添加的行,而以—号开头的行表示这些行被移除了。
5.4、提交
签出文件以后,我们会对文件进行一些操作,这时就需要提交我们的改动到项目仓库,提交就是把修改的最新版本存储到项目仓库之中。
图30:
提交工作拷贝
可以是用svnlog日志功能来确认项目仓库确实被更新了。
图31:
查看日志
图32:
查看日志的具体信息
svnlog不加参数产生的是工作拷贝的当前目录以及其所有子目录的日志信息,我们要是在提交改动后想的看到项目仓库最新日志信息的话,要先运行svnupdate命令把工作拷贝更新。
图33:
更新后查看日志
svnupdate从项目仓库里更新工作拷贝当前目录中的所有文件及其子目录。
还可以指定要更新的一个或多个文件及目录。
svnupdatenum.txtsrc/test/
5.5、冲突
冲突的产生
我们将同一个项目签出两份拷贝分别到sesame和se文件夹中。
对sesame中的num.txt文件进行修改,然后把文件签入项目仓库
查看此时位于se目录中的拷贝的状态
参数-u保证找出se目录中的文件是否有更新,因为默认情况下svn只检查文件在本地是否有改动,而不检查项目仓库中是否有更新的版本。
可以看出项目仓库中num.txt文件已经为版本6,而本地拷贝仍然是版本5.
比较本地拷贝与项目仓库中最新版本之间的差异
本地拷贝已经过期,更新se目录
解决冲突
如果我们在本地同时修改了se目录和sesame目录中的num。
txt文件,且让se中的改动先签入(假设他们修改的位置不同)。
se签入后,sesame也要签入
sesame签入失败,对sesame文件更新
但此时本地的改动还没有存储到项目仓库,再次对sesame进行提交
对于这种冲突,svn会自动合并他们的修改。
如果se和sesame改动的是同一行时又会怎样呢?
还是假定se先提交修改。
这时sesame也进行提交
svn提醒提交失败。
Sesame对本地拷贝更新
这是,svn提醒我们产生了冲突,且这种那个冲突是需要我们手工解决的,svn不能简单的合并他们。
出现这种问题一般是团队的开发交流存在问题。
打开本地的num。
txt文件,文件中用<<<<<<<<和>>>>>>>>表明了冲突发生的地方,中间是本地的改动和来自项目仓库的改动。
查看日志,找出改动的作者,以及签入时的注释
和改动者确认正确改动后,移除num.txt文件的冲突标记,并将其修改正确。
告诉svn冲突已经解决,然后提交文件。
svn只能在源代码层面解决冲突,svn也为不可合并的文件提供了严格的加锁支持。
5.6、文件加锁
如前所示,svn能够解决源代码层面的冲突,但对于不可合并的文件,我们需要对其进行加锁来提高工作效率。
任何文件都可以被设置为加锁模式,这样,在编辑之前就需先开锁,设置加锁模式是通过设置它的属性needs-lock属性(与具体值无关,只要这个属性被设置了,svn就会对文件加锁)加了锁的文件签出到工作拷贝时是只读的。
开启文件加锁
Svnlock获得文件的锁。
然后在工作拷贝把文件标记为可读写的。
可以指定加锁注释告诉其他用户为什么要锁住这个文件。
当锁住文件的用户把事情做完了,提交了改动,锁就被解开了。
编辑加锁文件前先把它锁住。
还可在命令行最后加参数-m表明加锁的原因
查看锁的信息
当其他用户尝试去为这个文件加锁时会得到一个错误提示。
锁的拥有者可使用svnunlock打开锁。
不拥有锁的用户可以用svnunlock–force完整URL来强制打开锁。
对不可合并文件加锁是很有用的。
5.7、属性
svn不但能存储文件的内容还能把与文件关联的元数据存储到项目仓库中,svn把这些元数据称作“属性”。
管理属性改动的方式和管理文件内容的方式一样。
属性不但可以被不同的用户修改,在每个工作目录中当用户运行svnupdate时会被更新。
有一些特殊的属性可以改变svn处理文件的行为,且都以svn:
前缀开头。
操作属性
设置属性
若想要其他人看见需要把改动提交到项目仓库。
编辑属性svnprpedit
查看属性
删除属性
自动设置属性
可以指定自动添加到属性,首先找到储存设置的与用户相关的程序数据目录
编辑该目录中Subversion的config文件
去掉注释enable-auto-props=yes
然后对[auto-props]下设置自动属性。
Mime类型
文件的svn:
mime-type属性表明这个文件的确切类型。
Svn存储的所有文件在项目仓库中使用的都是二进制格式。
还可以在工作拷贝中右键观察文件的svn属性。
5.8、拷贝、移动文件和目录
此处的拷贝和移动可以先在工作拷贝中完成并测试通过后提交至项目仓库,也可以直接在项目仓库中进行,只是无法运行测试。
移动文件最好使用subversion的命令而不要自己手工去移。
拷贝文件可以通过windows浏览器手工拷贝,然后把新文件添加到版本控制中,svn提供了svncopy命令来拷贝文件,这种拷贝对于原本和拷贝的历史,subversion会跟踪到同一个来源。
拷贝命令copy后第一个参数是源文件的路径名,第二个参数是目标文件的路径名,若命令行提示符是位于工作拷贝路径下,则不需指明全路径名,如下命令。
拷贝完成后需要提交才可以更新项目仓库。
下面是直接在项目仓库中进行拷贝。
还可以使用svnmove命令来重命名文件。
此处将工作拷贝中的cpp.txt重命名为ab2.txt,重命名后也需要提交才可以更新项目仓库。
也可以直接在项目仓库中,下面将重命名new1为ne
5.9、备份项目仓库
svnadmindump命令把项目仓库的内容抽取到一个可拿走的备份文件中。
该文件可以像普通文件一样备份。
svnadminload命令抽取备份文件的内容并载入到一个项目仓库中。
(可以是原来的项目仓库也可以是新创建的项目仓库)。
完整备份
backup_svn>svnadmindumpe:
/trysvn/svn>dumpfile080303##.日期
将项目仓库的所有内容存储到dumpfile.080303中。
备份文件是高度可压缩的,就可以拿去备份了。
在运行命令svnadmindump时无需停止对项目仓库的访问。
Svnadmin创建的项目仓库不会出现内部不一致。
图22:
完整备份项目仓库
dump表示备份项目仓库的命令
后面为要备份的项目仓库的路径
>后是备份后的文件名
注意:
命令行路径为形成的备份文件的存放路径。
恢复备份
backup_svn>svnadmincreatesvn2##创建新项目仓库用来恢复备份
backup_svn>svnadiminloade:
/trysvn/svn2 图23: 完整恢复项目仓库 命令行前路径是备份文件的存放路径, load是恢复备份命令,后紧跟要恢复的项目仓库路径,可以使原来的项目仓库,也可以是新创建的。 <后是备份文件名。 增量备份 work>svnadmindump仓库路径>备份文件–rlower: high-–incremental 与完全备份相比,后面多了两个参数,-r指定要备份的版本号,--incremental指明是增量备份。 注意: 建立每周每日备份的例行程序脚本。 增量备份的恢复 先载入最近的完整备份,再载入每天的备份。 命令的使用方法同前面的恢复备份命令完全一样,恢复后续版本也不需要指定额外的参数。 【脚本的编写在《版本控制之道》第2版MikeMason著陶文译电子工业出版社p178-p179】 6、附录 6.1Windows下subversion的svn命令行乱码问题 在中文Windows中解压SVN的Win32免安装ZIP包,直接使用SVN命令行有时会看到一堆奇怪的编码,如图18所示,其实这些是中文。 下面提供几种解决办法,可以任选其中一种: 1、设置LANG环境变量为en_US 设置语言为英文。 这样再使用SVN命令行就会看到正确的英文提示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows svn部署 svn 部署