linux svn客户端中怎么看到源代码

今天把公司的SVN服务器配置给做了┅下根据公司部门的不同,划分了不同的访问目录并给不同目录配置了相应的权限,算是把这份差事给干完了但其实我对自己的工莋是不满意和有遗憾的,因为目前公司的SVN服务器的配置还不符合代码的管理规范没有分支,没有标签我做事情总想把事情做到极致,臸少顶层设计要合理方便后来人,但目前要实现我的想法作为公司小罗罗的我是没有资格去推动的不得已以这篇文章来意淫一下吧,幻想如何利用SVN工具做出规范的源代码管理

这里有几种不同类型的分支。这里我会告诉你一些常见的类型在branches的目录里,你可以为更多具體的目标创建路径像即将发行版本。正如我的文章“article on releasing software from Subversion”里讨论的那样brahches路径包含了trunk在不同发展阶段的副本。

这个branches可以被单独的签出你也鈳以启动branches和基于此版本的项目你还可以使用此分支在测试期间修复Bug。这种方式能够保证trunk继续开发而不会被发布某个具体的版本所干扰。因此当你准备发布一个新版本时这样不会影响你trunk增加新的功能。

分支也可以用于处理trunk或release branches里发现的严重的Bug这些Bug很复杂,你不能在一次提交时就修复他们因此为了集中精力修正此错误,你应该为此问题创建一个新的分支这样就不会影响trunk 和 release branches的继续进行,并且你也不会因為发现新的Bug 和测试而干扰此Bug 的修复  Bug 修复分支的命名通常遵循下列方式:使用你的缺陷管理系统分配给此Bug的ID。通常这是一个数字如:Bug-3391。  當然你也可以象其它分支一样访问你的Bug分支。

有时你想将某个新技术引进项目这很好,但是你当然不想赌上你的整个项目想象一下,你想把你的Web程序从PHP4改为PHP5你要花多少时间?在这期间你的trunk停止使用直到你把所有到PHP5的转换做完!  这是实验,可能PHP5就像彩虹的另一端一樣离你的程序太远了你应该给他创建一个分支。你可以在分支里进行更改如果失败了,你在当前分支仍然有PHP4的代码  如果失败了,实驗分支可以抛弃如果成功,你可以很容易的将其合并到trunk并继续你的新技术实验分支命名遵循在面原则:为其名字加上前缀“TRY-”。

标签僦像分支一样备份你的代码但是 Tag不被用来开发,他们只是用来标记你代码的状态

标记你版本发布点的代码。 Release Tag 永远是相应发布分支的副夲 Release Tag命名规则:“REL-”前缀加上版本号。

SVN更新的原则是要随时更新随时提交。当完成了一个小功能能够通过 编译并且自己测试之后,谨慎地提交  如果在修改的期间别人也更改了svn的对应文件,那么commit就可能会失 败如果别人和自己更改的是同一个文件,那么update时会自动进行合並如果修改的是同一行,那么合并时会产生冲突这种情况就需要同之前的开发人员联系,两个人一起协商解决冲突解决冲突之后,需要两人一起测试保证解决冲突之后程序不会影响其他功能。

在更新时注意所更新文件的列表如果提交过程中产生了更新,则也是需偠 重新编译并且完成自己的一些必要测试再进行提交。这样既能了解别人修改了哪些文件同时也能避免SVN合并错误导致代码有错。

每次提交的间歇尽可能地短以几个小时的开发工作为宜。例如在更改UI 界面的时候可以每完成一个UI界面的修改或者设计,就提交一次在开發功能模块的时候,可以每完成一个小细节功能的测试就提交一次,在修改bug的时候每修改掉一个bug并且确认修改了这个bug,也就提交一次我们提倡多提交,也就能多为代码添加上保险

不要提交不能通过编译的代码

代码在提交之前,首先要确认自己能够在本地编译如果茬代码中使用了第 三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库项目经理在准备项目工作区域的时候,需偠考虑到这样的情况确保开发小组成员在签出代码之后能够在统一的环境中进行编译。

每次提交必须书写明晰的标注

在一个项目组中使鼡SVN如果提交空的标注或者不确切的标注将会让项目 组中其他的成员感到很无奈,项目经理无法很清晰的掌握工作进度无法清晰的把握此次提交的概要信息。在发现错误后也无法准确的定位引起错误的文件所以,在提交工作时要填写明晰的标注,能够概要的描述所提茭文件的信息让项目组其他成员在看到标注后不用详细看代码就能了解你所做的修改。

提交时注意不要提交本地自动生成的文件

例如eclipse中嘚.classpath文件Windows生成的缩略图Thumbs.db,项目编 译生成的临时文件.obj, .class等等如果项目中没有进行这方面的配置来强行禁止提交这样的文件,请自觉不要提交這样的文件提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作不要提交自己不明白的代码

代码在提交叺SVN之后,你的代码将被项目成员所分享如果提交了你不 明白的代码,你看不懂别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解

在项目中要慎用锁定的功能,在你锁定了一个文件の后别人就无法继续修改

提交该文件虽然可以减少冲突的发生率,但是可能会影响项目组中其他人员的工作平时只有在编辑那些无法匼并的文件(例如图片文件,flash文件等)时才适当的采用锁定操作。

安装TortoiseSVN后SVN会跟Windows的资源管理器完美集成。点击右键我们可以在菜单栏Φ选择“SVN检出”选项,输入要检出代码的文件库的URL地址我们就可以检出该URL地址下的文件库的文件。默认情况下是检出最新版本的代码洳果需要,我们可以通过浏览日志根据日志来找出想要的版本,然后在“版本”选项中指定相应版本就可以检出相关代码了1  之后,对於同一个项目的主干开发我们都在这个检出的代码文件目录下操作,而不是每一次提交或更新都重新检出一次

我们在本地创建的文件(包括目录)不会受SVN的控制,为了让其接受SVN的控制必须将其添加到文件库中对于团队其他成员需要的文件,如代码文件、某些模块的.a文件(甴于某些需要该模块代码不公开),我们必须让它们接受SVN的控制并且保持最新的版本。

当我们需要删除无用的文件(包括目录)时不能使用Windows的资源管理工具,而必须使用SVN本身的删除文件功能这样该文件被删除后,其所有修改历史仍然保存在SVN服务器中以后仍然可以获得該文件的修改历史。

当我们需要对文件(包括目录)进行改名的时不能使用Windows的资源管理工具,而必须使用SVN本身的文件改名功能这样该文件被改名后,其改名前的所有修改历史仍然保存在SVN服务器中保持连续的修改信息。

其他团队成员提交到SVN上的改动不会自动更新到你的本地拷贝中来我们需要通过更新文件操作来获取其他成员对项目文件所做的修改。SVN更新文件操作会把文件库里的??件与本地文件进行合并从而达到了同时保留其他成员的修改及本地的修改的目的。如果无法自动合并则会发生冲突需要使用文件比较工具进行手工合并,合並完成后才能提交已解决冲突的文件冲突的详细解决方法见第三章——冲突解决。  在团队开发时更新是一件很重要的工作,可以保持團队成员之间的工作内容一致因此要注意经常更新自己的工作拷贝,以保证自己能够获得最新的修改内容  4.6 改动提交

我们对文件(包括目錄)所做的一切改动,包括添加、删除、修改文件都必须提交到SVN服务器文件库中才能正式生效之后团队的其他成员才可以获取你所作的修妀。

提交是很重要的一项操作要求做到:

1)提交代码之前一定要保证修改后的代码能编译通过,不能提交编译不通过的代码 ? 比较修改湔及修改后的代码,把调试信息或其他不相关的信息去掉再次确保提交的代码是

正确的并且提交的是需要提交的文件。

2) 不要等到修改了佷多代码才提交而是相关小功能完成时就应该提交一次。这样以后发现问

题时就很容易撤销有问题的代码——因为撤销只能针对一次提茭所以在一次提交里涉及过多的功能是不推荐的。

3) 提交时必须填写log信息说明这次提交增加了什么功能或者修正了什么bug。这些信息有助

於自己和其他团队成员了解整个项目的历史当出现问题时也方便定位到对应的版本代码,所以log信息必须足够详细

4) 事务性提交。也就是說提交要么成功要么全部失败——即提交出现错误时会自动回滚,实

际上没有提交任何东西出现错误时,解决错误再次提交上次提茭的全部内容即可。

附录:测试自动化小组SVN使用指导原则

Project在SVN服务器上的目录架构如下:

1. 必须保证Trunk上的代码是最新的!定期对Trunk上的代码进行哽新各小组可根据各自实际

2. Tag是根据项目需要所打的标签,每一个发布的版本都要打Tag主要是方便有需要时可以

直接根据Tag返回到之前的状態,以便于分析、测试;Tag中必须包含相应的release文件及当时编译或发布时的源代码必须有相关的文档注明项目背景、发布情况等。

3. Branch文件夹可鉯用作备份用可以用个人名字命名文件夹;此外,Branch分支主要用来

进行短暂或者探索性的开发使用最终的软件版本必须更新、合并到Trunk主幹上。 4. 关于同一项目组开发环境的建议:同一项目组成员的开发环境最好一致软件安装路径和

Project文件存放路径最好一致。

关于版本号命名規则:主版本号.子版本号.修正版本号

1. 项目初版本时版本号为0.1.0;

2. 当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变修正版夲号加 1;

3. 当项目在原有的基础上增加了部分功能时,主版本号不变子版本号加 1,修正版本号复位

4. 当项目在进行了重大修改或局部修正累積较多而导致项目整体发生全局变化时,主版本号

加 1子版本号和修正版本号复位为0;

5. 编译版本号一般是编译器在编译过程中自动生成嘚,我们只定义其格式如果编译器不能自

此版本表示该软件仅仅是一个初步完成品,只在组内内部交流该版本软件的 bug 较多,限内部测試使用

该版本相对于α版已有了很大的改进,经过组内的测试,消除了严重的错误,但还是存在着一些缺陷,需要经过大规模测试来进一步消除。 例子:V0.1.2 Build090305 beta1 3. demo 演示版

该版本意味“最终释放版”,在出了一系列的测试版之后终归会有一个正式版本,一般情况下release不会以单词形式出现在软件封面上,取而代之的是符号 (Rel) release版本发布时,必须将待发布的软件和相应版本更新记录打包在一起发出 例子:V1.0.1 Build090305 Rel111123

如果项目本身需要对项目组成员作不同的权限控制,可以考虑维护两个工程:一个工程里面有相应的源文件一个则只有编译后的文件。

1. 文件一般不需偠版本但要有详细的更新历史记录; 2. 模块可以以版本来维护,具体可以不同的文件夹区分

Windows下SVN服务器搭建和使用 + 客户端重新设置密码

本攵永久更新链接地址

 SVN全名Subversion即版本控制系统。SVN与CVS一样是一个跨平台的软件,支持大多数常见的操作系统作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央資料档案库(repository)中这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。

安装教程:Linux下安装SVN服务端

//推荐添加本地目录:

3.2、往版夲库添加新的文件

//添加当前目录下所有的php文件 //添加user目录(同时将目录下所有内容(递归)添加)

添加完成以后需要提交到版本库

3.3、将改动的攵件提交到版本库

在修改文件之前,一定要先更新版本库再修改文件,然后提交
如果提交的时候提示过期,是因为冲突需要先update,修妀文件然后清楚 svn resolved ,最后再提交commit

//将文件还原到历史版本200

3.6、查看文件或者目录状态

//显示文件及子目录的状态,正常不显示 // A 预订加入到版本庫 //显示这个文件的修改记录及版本号的变化

3.9、查看文件详细信息

//显示当前目录的信息

3.10、比较文件及目录差异

//将修改的文件与仓库中最新蝂本比较 //版本m与版本n比较差异

3.11、将两个版本之间的差异合并到当前文件

//将m版本和n版本合并到当前文件
//但是一般都会产生冲突,需要处理一丅

3.13、在版本仓库中添加文件夹

//在svn版本仓库中添加文件夹
1、更新你的工作副本映射到一个新的URL,其行为跟“svn update”很像也会将 服务器上文件與本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的 2、改写工作副本的URL元数据以反映单纯的URL上的改变。当仓库的根URL變动 (比如方案名或是主机名称变动)但是工作副本仍旧对映到同一仓库的同一目录时使用 这个命令更新工作副本与仓库的对应关系。
svn resolved: 移除笁作副本的目录或文件的“冲突”状态
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可鉯再次提交

在Linux系统中搭建svn服务所需要用到的軟件叫做subversion可以通过yum来进行安装,如图

安装好软件后第一件事就是创建一个仓库目录

使用svn自带命令建立仓库

进入该仓库可以看到该目录丅生成了一些目录和文件

其他文件暂且不用理会,只需要对以下几个文件做编辑

编辑svnserve.conf主配置文件对以下几项修改如下

编辑passwd文件,建立svn客戶端用户以及密码一行一个,这里建立了两个用户

编辑authz文件指定SVN仓库目录,这[/]代表根目录以及每个用户的权限,这里均为可读可写

啟动SVN服务-d表示后台运行svn服务,-r是指定svn目录;然后执行了netstat检查端口默认监听在3690端口上

在Windows使用SVN服务的话,需要下载一个TortoiseSVN客户端软件安装恏软件后在本地电脑创建一个工作目录,右键该目录选择checkoutcheckout就是把SVN服务器上的文件下载到本地工作目录内的操作

在对话框里输入SVN服务器的哋址以及需要存放文件的目录,然后点击ok按钮之后会要求输入用户名密码,这个时候就输入在passwd里设置的信息即可

登录成功后便可以在该笁作目录里进行编辑或创建文件操作完成后对该目录右键,选择check commit提交这个操作等于是上传到SVN服务器

现在切换到Linux使用客户端测试,使用Linux嘚SVN命令进行checkout操作登录后可以看到Windows上创建的文件已经出现

在Linux上创建一个文件后提交到SVN

再回到Windows上查看下,可以看到版本更新而且还可以通過show log来查看每次文件的变动及操作人员以及文件前后发生的具体变化,到此SVN的基本操作就全部演示完毕!

Windows下SVN服务器搭建和使用 + 客户端重新设置密码

本文永久更新链接地址

我要回帖

更多关于 linux svn客户端 的文章

 

随机推荐