jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

SVN环境搭建完整步骤

 

1SVN安装

VM新建虚拟机

1)安装路径:D\ubuntu-test

使用ubuntu 软件:c:\svn安装软件\ubuntu-10.04.1-desktop.i386.iso

Network adapterBridged

Ubuntu登录账号/密码:kiki/kiki

安装完成,重启ubuntu,打开terminal,自动获得了一个IP172.28.6.13)。

 

2) 设置,安装过程

a) 设置 ip dns上网。

    Step1,

sudo –s 转成root用户,方便操作。

    Step2,

设置IP, vi /etc/network/interfaces

加入:

auto eth0

iface eth0 inet static

address 172.28.6.239

netmask 255.255.0.0

gateway 172.28.16.1

    Step3,

           Sudo nano /etc/resolv.conf

           是一个编辑工具,设置DNS

           加入:nameserver 10.58.100.1

    Step4,

重新启动 networking 服务:

sudo /etc/init.d/networking restart

    总结:设置OKping 172.28.6.69成功。

 

b) apt-get update 先更新一下源。

c) 安装VIM

    apt-get install vim

d) 安装openssh-server

e)  安装subversion

f) 安装subversion-tools

g) 安装apache2

h) 安装libapache2-svn

i) 安装tree

j) 设置apache2下的SVN

       vim /etc/apache2/dav_svn.conf

       设置如下:

<Location /test/>

 DAV svn

  SVNListParentPath on

   SVNParentPath /home/repo/

  # SVNIndexXSLT "/apache2-default/svnindex.xsl" (注释掉,否则会有xml的错误,不能显示)

  AuthType Basic

  AuthName "Subversion Repository"

  AuthUserFile /etc/apache2/dav_svn.passwd

    Require valid-user

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz  z居然泄露了,害我找了好久的原因

</Location>

 

PS

1)刚安装好的apache2没有dav_svn.passwd文件,

使用vim 创建,

然后htpasswd -b dav_svn.passwd kiki kiki  更新密码。

创建dav_svn.auth文件,设置*=rw方便测试。

权限文件设置注意:[]*=rw,并且具备权限继承性,子目录的权限将代替父目录的权限。

2)创建测试所用的版本库,路径在:/home/repo/test1,其中test1是版本库。

3)重启apache服务  /etc/init.d/apache2 restart

4)  设置创建的帐户文件所属者为www-data.

设置创建的库所属者为www-data,

root@kiki-desktop:/etc/apache2# chown www-data:www-data dav_svn.passwd

root@kiki-desktop:/etc/apache2# chmod 777 dav_svn.passwd

root@kiki-desktop:/home# chown -R www-data:www-data repo

5)访问:http://IP/test/库名,SSH远程登录ubuntu出现中文乱码时,设置LANG=””;

 

2SVN版本对比

2.1   Subversion 1.6的新东西

改进的认证数据处理

版本库根的相对URL

svn:externals的改进

目录树冲突的检测

文件系统存储改进

Ctypes Python绑定

改进的交互式冲突解决

稀疏目录的排除选项

svnserve的日志支持

察看历史的新HTTP URI语法

命令行客户端改进

API变更、改进以及多种语言绑定

超过65项新的bug修正和提升

参考:http://www.subversion.org.cn/?action-viewnews-itemid-99

 

2.2   以下为共进实际情况:

服务器:10.58.100.247 Subversion1.5

客户端:10.58.102.3    Subversion1.6

改进和bug修正

改进的交互式冲突解决(客户端)

svn up:

 

3SVN备份

1. 10.58.101.6 截图:

 

2. 10.58.100.247 截图

2. 10.58.101.6截图:

 

1. Rsyncremote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。

 

2. Rsync支持大多数的类Unix系统,无论是LinuxSolaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版 本,如cwRsyncSync2NAS等工具。

 

3. Rsync的基本特点如下:

  1.可以镜像保存整个目录树和文件系统;

  2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

  3.无须特殊权限即可安装;

  4.优化的流程,文件传输效率高;

  5.可以使用rshssh等方式来传输文件,当然也可以通过直接的socket连接;

6.支持匿名传输

4. rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。 Rsync的命令格式可以为以下六种:

  rsync [OPTION]... SRC DEST

  rsync [OPTION]... SRC [USER@]HOST:DEST

  rsync [OPTION]... [USER@]HOST:SRC DEST

5. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::“分隔符时启动该模式。如:rsync -av  root@172.16.78.192::www  /databack

  从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::“分隔符时启动该模式。如:rsync -av  /databack  root@172.16.78.192::www

 

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

 

-v, --verbose 详细模式输出

 

4SVN分支策略(常用分支模式-摘自svn指南.doc

参考资料:

Subversion1.4手册       http://www.subversion.org.cn/svnbook/1.4/svn.branchmerge.maint.html

Subversion1.6手册       http://i18n-zh.googlecode.com/svn/www/svnbook/zh/svn.tour.cycle.html#svn.tour.cycle.resolve

 

常用分支模式

版本控制在软件开发中广泛使用,这里是团队里程序员最常用的两种分支/合并模式的介绍,如果你不是使用Subversion软件开 发,可随意跳过本小节,如果你是第一次使用版本控制的软件开发者,请更加注意,以下模式被许多老兵当作最佳实践,这个过程并不只是针对 Subversion,在任何版本控制系统中都一样,但是在这里使用Subversion术语会感觉更方便一点。

 

发布分支

大多数软件存在这样一个生命周期:编码、测试、发布,然后重复。这样有两个问题,第一,开发者需要在质量保证小组测试假定稳定 版本时继续开发新特性,新工作在软件测试时不可以中断,第二,小组必须一直支持老的发布版本和软件;如果一个bug在最新的代码中发现,它一定也存在已发 布的版本中,客户希望立刻得到错误修正而不必等到新版本发布。

这是版本控制可以做的帮助,典型的过程如下:

开发者提交所有的新特性到主干。 每日的修改提交到/trunk:新特性,bug修正和其他。

这个主干被拷贝到“发布”分支。 当小组认为软件已经做好发布的准备(如,版本1.0)然后/trunk会被拷贝到/branches/1.0

项目组继续并行工作,一个小组开始对分支进行严酷的测试,同时另一个小组在/trunk继续新的工作(如,准备2.0),如果一个bug在任何一个位置被发现,错误修正需要来回运送。然而这个过程有时候也会结束,例如分支已经为发布前的最终测试“停滞”了。

分支已经作了标签并且发布,当测试结束,/branches/1.0作为引用快照已经拷贝到/tags/1.0.0,这个标签被打包发布给客户。

分支多次维护。当继续在/trunk上为版本2.0工作,bug修正继续从/trunk运送到/branches/1.0,如果积累了足够的bug修正,管理部门决定发布1.0.1版本:拷贝/branches/1.0/tags/1.0.1,标签被打包发布。

整个过程随着软件的成熟不断重复:当2.0完成,一个新的2.0分支被创建,测试、打标签和最终发布,经过许多年,版本库结束了许多版本发布,进入了“维护”模式,许多标签代表了最终的发布版本。

 

特性分支

一个特性分支是本章中那个重要例子中的分支,你正在那个分支上工作,而Sally还在/trunk继续工作,这是一个临时分支,用来作复杂的修改而不会干扰/trunk的稳定性,不象发布分支(也许要永远支持),特性分支出生,使用了一段时间,合并到主干,然后最终被删除掉,它们在有限的时间里有用。

还有,关于是否创建特性分支的项目政策也变化广泛,一些项目永远不使用特性分支:大家都可以提交到/trunk,好处是系统的简单—没有人需要知道分支和合并,坏处是主干会经常不稳定或者不可用,另外一些项目使用分支达到极限:没有修改曾经直接提交到主干,即使最细小的修改都要创建短暂的分支,然后小心的审核合并到主干,然后删除分支,这样系统保持主干一直稳定和可用,但是造成了巨大的负担。

许多项目采用折中的方式,坚持每次编译/trunk并进行回归测试,只有需要多次不稳定提交时才需要一个特性分支,这个规则可以用这样一个问题检验:如果开发者在好几天里独立工作,一次提交大量修改(这样/trunk就不会不稳定。),是否会有太多的修改要来回顾?如果答案是“是”,这些修改应该在特性分支上进行,因为开发者增量的提交修改,你可以容易的回头检查。

最终,有一个问题就是怎样保持一个特性分支“同步”于工作中的主干,在前面提到过,在一个分支上工作数周或几个月是很有风险的,主干的修改也许会持续涌入,因为这一点,两条线的开发会区别巨大,合并分支回到主干会成为一个噩梦。

这种情况最好通过有规律的将主干合并到分支来避免,制定这样一个政策:每周将上周的修改合并到分支,注意这样做时需要小心,需要手工记录合并的过程,以避免重复的合并(“手工跟踪合并”一节描述过),你需要小心的撰写合并的日志信息,精确的描述合并包括的范围(“合并分支到另一分支”一节中描述过),这看起来像是胁迫,可是实际上是容易做到的。

在一些时候,你已经准备好了将“同步的”特性分支合并回到主干,为此,开始做一次将主干最新修改和分支的最终合并,这样以后,除了你的分支修改的部分,最新的分支和主干将会绝对一致,所以在这个特别的例子里,你会通过直接比较分支和主干来进行合并:

$ cd trunk-working-copy

 

$ svn update

At revision 1910.

 

$ svn merge http://svn.example.com/repos/calc/trunk@1910 \

            http://svn.example.com/repos/calc/branches/mybranch@1910

U real.c

U integer.c

A newdirectory

A newdirectory/newfile

通过比较HEAD修订版本的主干和HEAD修订版本的分支,你确定了只在分支上的增量信息,两条开发线都有了分枝的修改。

可以用另一种考虑这种模式,你每周按时同步分支到主干,类似于在工作拷贝执行svn update的命令,最终的合并操作类似于在工作拷贝运行svn commit,毕竟,工作拷贝不就是一个非常浅的分支吗?只是它一次只可以保存一个修改。

 

 

5Subversion管理代码最佳实践

代码管理实践
代码仓库均采用svn来管理


5.1  
代码目录的创建:
一般创建三个目录分别为
trunk(
主干)
tags
(标签/标记)
branches(
分支)
tags
branches下一般为根据需要从trunk目录拷贝过来的。


5.2   tags
的创建要求:
代码在一种平台下通过编译(必须)
代码编译出来的版本通过一定的冒烟测试。
在项目要求的平台都可以编译通过。
一般有一个安装包给测试时,就需要在tags下建立对应代码的标签。
tags
下的代码一般不可以修改。

5.3  
两种代码管理模式介绍:
a
、始终分支系统(OpenOffice社区采用管理方式)
典型特征:项目较大,代码较多,编译时间较长,参与人员比较多时。
每个用户对每项编码任务的创建或操作都是在私有分支中进行的。
编码完成后,原编码者、同级或经理将对所有私有分支的更改进行审查并将它由合并到 /trunk 中。
里程碑的创建
集成人员集成将开发人员提交的功能集成到主干上,编译通过后,提交的主干上,集成了一定的功能后,创建一个里程碑版本,一般建议按周创建里程碑版本。并在tags下创建相应的代码快照,并将安装包传至指定位置。
开发人员基于里程碑版本开发。
开发人员一般基于最新的里程碑版本创建分支,并在分支上工作,并在自己的分支上提交,在提交到svn之前需要编译通过。开发人员需要根据自己开发情况来同步到主干的里程碑代码。如果需要集成到主干上,需要同步到最近的里程碑。
测试人员.
测试人员对开发人员的代码进行测试,达到一定的测试标准后,测试通过,然后交由集成人员来集成。

b、按需分支系统(Subversion社区采用管理方式)
适用方式代码较少,或者参与开发的人员较少
开发人员可以直接在主干上提交。开发负责人来编译版本给测试。
开发者把所有的新特性提交到主干。 每日的修改提交到/trunk:新特性,bug修正和其他。新近的开发人员不能提交代码,交由有经验的开发人员验证后来提交到主干上。
当开发小组认为软件已经做好基本发布的准备(如,版本1.0)然后/trunk会被拷贝到/branches/1.0。这个主干被拷贝到发布分支。然后在发布分支上继续修改bug.
如果bug修正经测试达到一定的要求认为可以完成时,可以拷贝到/tags/1.0.0,这个标签被建立并发布给相关人员。

5.4   svn库提交提交代码要求
针对每次提交到主干上的代码均需要编译通过
代码每次提交到svn上均需要添加注释。
每个人都用自己账号来提交代码。

 

6、参考资料

l         分支模式在SVN环境下的应用

http://www.webwoo.net/SVN/svnsy/2009/1211/51007.html

l         持续集成之“分支策略”

http://wwling2001.blogbus.com/logs/164479726.html

l         SVN常用分支模式

http://i18n-zh.googlecode.com/svn/www/svnbook-1.4/svn.branchmerge.commonuses.html

l         配置管理一问一答

http://qa.uml.net.cn/Question/List.aspx?t=1&tid=13&tn=%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86&area=0

l         百度-主干开发,分支提测

http://www.cnblogs.com/topiemie/

l         subversion管理代码最佳实践

http://www.zxbc.cn/html/20081212/68890.html

l         Subversion中文站

http://www.subversion.org.cn/?action-category-catid-1

l         Subversion FAQ(常见问题解答)

http://subversion.apache.org/faq.zh.html

Feedback

# re: linux下SVN搭建完整过程及SVN使用相关内容  回复  更多评论   

2013-09-17 10:05 by 匿名用户
图挂了

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问