1、SVN服务端web
一、VisualSVN Server下载:apache
http://download.csdn.net/detail/jiminull/4448874windows
或浏览器
http://www.visualsvn.com/server/download/安全
VisualSVN Server是免费的服务器
二、VisualSVN Server安装:svn
下载完VisualSVN Server后,只要双击VisualSVN Server安装文件,按步骤点击下一步安装便可,VisualSVN Server捆绑安装了Apache,免去了你安装apache的麻烦。具体能够参照官网,安装部分英语比较简单,其实不看英,你只要点一步再配一下安装路径就彻底OK了。同时VisualSVN Server安装步骤中涉及了部分VisualSVN Server配置信息,我会在VisualSVN配置部分详细介绍,VisualSVN Server安装完毕后,即会跳出VisualSVN配置界面,以下图工具
三、VisualSVN Server配置:测试
运行VisualSVN Server Manger,下面是启动界面:google
下面我来添加一个代码库【Repository】,以下图:
按上图所示,建立新的代码库,在下图所示的文本框中输入代码库名称:
注意:上图中的CheckBox若是选中,则在代码库StartKit下面会建立 trunk、branches、tags三个子目录;不选中,则只建立空的代码库StartKit。
点击OK按钮,代码库就建立成功了。
建立完代码库后,没有任何内容在里面。我会在这个教程的第二部分说明如何迁入源代码。
下面,咱们开始安全性设置,在左侧的Users上点击右键:
输入上面的信息,点击OK,咱们就建立一个用户了。按照上面的过程,分别添加用户 Developer一、tester一、manager1,好了,咱们开始添加这些用户到咱们刚才建立的项目里:
点击上图中的"Add..."按钮,在下图中选择咱们刚才添加的用户,点击OK按钮:
说明:你们可能注意到了下图中的Groups,是的,你也能够先建立组,把用户添加到各个组 中,而后对组进行受权,操做比较简单,在此略过。
点击"肯定"按钮,上面的用户就具备了访问StartKit代码库的不一样权限。
由于用户starter在团队中是新来者,不但愿他向代码库中提交新代码,因此他只能读取代 码库中的代码,不能提交代码。tester1是测试人员,不负责代码编写,因此也是只读权限。而Developer1和manager1是开发人员和项目 经理,天然具备读、写的权限。
在实际的项目开发过程当中,Developer和tester每每不可能只有一我的,这时候使 用组来受权更加方便,这个你们能够本身练习一下。
2、SVN客户端
VisualSVN客户端是收费的,因此咱们安装TortoiseSVN客户端
TotoiseSVN在64位系统和32位系统的客户端是不兼容的,请下载适合的版本。
下载地址:
32位:http://download.csdn.net/detail/jiminull/4442642
63位:http://download.csdn.net/detail/jiminull/4442645
TotoiseSVN 的基本使用方法:
一、签入源代码到SVN服务器
假如咱们使用Visual Studio在文件夹StartKit中建立了一个项目,咱们要把这个项目的源代码签入到SVN Server上的代码库中里,首先右键点击StartKit文件夹,这时候的右键菜单以下图所示:
图2-2-1
点击Import,弹出下面的窗体,其中http://zt.NET.henu.edu.cn 是服务器名,svn是代码仓库的根目录,StartKit是咱们在上个教程中添加的一个代码库:
说明:左下角的CheckBox,在第一次签入源代码时没有用,可是,在之后 你提交代码的时候是很是有用的。
图2-2-2
点击OK按钮,会弹出下面的窗体,要求输入凭据:
图2-2-3
在上面的窗体中输入用户名和密码,点击OK按钮:
图2-2-4
如上图所示,好了,源代码已经成功签入SVN服务器了。这时候团队成员就能够迁出SVN服务器上的源代码到本身的机器了。
二、签出源代码到本机
在本机建立文件夹StartKit,右键点击Checkout,弹出以下图的窗体:
图2-2-5
在上图中URL of Repository:下的文本框中输入svn server中的代码库的地址,其余默认,点击OK按钮,就开始签出源代码了。
说明:上图中的Checkout Depth,有4个选项,分别是迁出所有、只签出下一级子目录和文件、只签出文件、只签出空项目,默认的是第一项。上面的例子中,咱们也可使用web的 方式访问代码库,在浏览器中输入http://zt.Net.henu.edu.cn/svn/StartKit/
这时候也会弹出对话框,要求输入用户名和密码,经过验证后便可浏览代码库中的内容。
搞定!源代码已经成功签出到刚才新建的StartKit目录中。
打开StartKit目录,能够看到以下图的文件夹结构:
图2-2-5
一旦你对文件或文件夹作了任何修改,那么文件或文件夹的显示图片机会发生变化。下图中我修改了其中的二个文件:
图2-2-7
你们看一下不一样状态所对应的图片:
图2-2-8
咱们已经知道怎么将源代码签入到SVN服务器,怎么从服务器签出代码到本机,也简单了解了不一样状态所对应的图案啦。
三、提交修改过的文件到SVN服务器
上面的图2-2-7中,我修改了位于Model文件中的二个文件ImageInfo.cs和NewsInfo.cs,下面演示如何提交到SVN服务 器。
注意:提交源代码到服务器时,必定确保本机的代码是最新版本,不然可能提交失败,或者形成版本冲突。
在Model文件夹上点击右键或在Model文件下的空白处点击右键,点击SVN Commit…弹出下面的窗体:
图2-2-9
点击OK按钮后,弹出以下图的窗体:
图2-2-10
四、添加新文件到SVN服务器
咱们在Model文件下添加一个新的类文件UserInfo.cs,在Model文件下的空白处点击右键,点击SVN Commit…,和上面讲的提交修改过的文件到SVN服务器同样,就能够了。
另外也能够在文件UserInfo.cs上点击右键,点击TortoiseSVN=>>Add,弹出以下图的窗体:
图2-2-11
选中UserInfo.cs文件,点击OK按钮,这样并无将这个文件提交到SVN服务器,只是将这个文件标记为源代码库库中的文件,并将其状态置 为修改状态。以后,咱们要再SVN Commit这个文件一次,才能够将其真正提交到SVN服务器上的代码库中。
上面讲是添加文件,实际上,添加文件夹的步骤也是同样的,这里就不说了。
五、更新本机代码与SVN服务器上最新的版本一致
这个也很简单,只要在须要更新的文件夹上点击右键或在该文件下的空白处点击右键,点击SVN Update,就能够了。
注意:更新操做可能会由于版本冲突而失败,这是可使用合并【Merge】或其余方法解决; 也可能由于锁定【Get Lock】而失败,这是须要先解锁【Release Lock】。
六、重命名文件或文件夹,并将修改提交到SVN服务器
只要在须要重命名的文件或文件夹上点击右键,点击TortiseSVN=>& gt;Rename…,在弹出的窗体中输入新名称,点击OK按钮,就能够了。此方法也不是直接重命名,而是将该文件或文件夹的名称标记为重命名后名称,也 须要咱们使用SVN Commit提交到SVN服务器后才真正重命名。
七、删除文件或文件夹,并将修改提交到SVN服务器
最简单就是,你直接删除文件或文件夹,而后使用SVN Commit提交更新到SVN服务器。另一种方法是在你要删除的文件或文件夹上点击右键=>>TortoiseSVN=>> Delete删除,此方法也不是直接删除,而是将该文件或文件夹的状态置为删除,也须要咱们使用SVN Commit提交到SVN服务器后才真正删除。
说明:实际上,从你把源代码迁签入SVN服务器开始,每个版本的数据和文件,就算是你已经 删除了的,也均可以随时迁出。
以上只是TortoiseSVN最简单的几个功能,其实他的功能远不止这些,其余的功能你们能够在使用的过程当中慢慢体会,有些功能我会在下面的教程中使用到,到时候会和你们讲清楚用法。
注意:向SVN服务器提交源代码的时候,必定不要提交bin、obj 等文件夹,不然会很麻烦。可是web项目的bin目录除外,可是web项目的bin目录中的引用其余项目而生成的dll不须要提交。
一个好习惯:若是项目中引用了其余的第三方的程序集,好比 EnterpriseLibrary、FCKEditor等,这时候不要简单从他们的安装位置引用,而是在你的解决方案下,添加一个Library的目 录,把须要的程序集复制到这里,而后从Library目录引用,这样有什么好处,本身想想吧!
Tortoise SVN 客户端使用经验小结:
1. export 和check out
export 下载源代码
用法:
一、新建一个空的文件夹,右键点击它,能够看到TortoiseSVN菜单以及上面的SVN Checkout。
二、不用管这个Checkout,咱们选择TortoiseSVN菜单下的Export...,接着它会让你输入url。
三、好比输入【迷宫探宝】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk /
四、其余选项不须要更改,Omit externals不要勾选,HEAD Revision选中表示最新的代码版本,接着点击OK便可将代码导出到这个目录中:)
check out 意思签出,虽然和Export的效果同样是把代码从服务器下载到本地,可是Checkout有验证的功能,Checkout到某处的代码,将会被 TortoiseSVN监视,里面的文件能够享受各类SVN的服务。
2 .每次提交代码须要注意哪些问题
若是你更新了目录中的文件,提交代码须要用到commit功能,commit的功能不只仅是上传,他会和服务器上面的文件进行对比,假如你更新了某个文件而服务器上面也有人更新了这个文件,而且是在你checkout以后作的更新,那么它会尝试将你的更新和他人的更新进行融合(merge),假如自动 merge不成功,那么报告conflict,你必须本身来手动merge,也就是把你的更新和别人的更新无冲突的写在一块儿。
commit的时候,最好填写Log信息,这样保证别人能够看到你的更新究竟作了写什么。这就至关于上传文件而且说明本身作了那些修改,多人合做的时候log很是重要。
TortoiseSVN的commit只会上传原先checkout而后又被修改了的文件,假如你新加入了某些文件,须要右键点击文件选择Add,然 后文件上面会出现一个加号,在下次commit的时候它就会被upload而且被标记为绿色对勾。没有绿色对勾的文件不会被commit。
假如你须要给带有绿色对勾文件更名或者移动它的位置,请不要使用windows的功能,右键点击它们,TortoiseSVN都有相应的操做。想象这 些文件已经不在是你本地的东西,你的一举一动都必须让Tortoise知道。
假如修改了某个文件可是你后悔了,能够右键点击它选择Revert,它将变回上次checkout时候的状况。或者Revert整个工程到任意一个从 前的版本.
下面描述在使用Commit时的几个注意点:
-------------若有多个文件须要同时提交,同时文件在不一样的目录下,必须找到这些文件的最短目录上点击 Commit,TortoiseSVN会搜索被点击目录以及该目录下全部的文件,并将修改变更的文件罗列在列表中。
-------------仔细查看列表中的文件,肯定哪些文件时须要更新的,若是不须要更新某个已经变化了的文件,只须要在该文件上点击右键,选择 还原操做;选择须要新增的文件,不要将临时文件添加到版本库中。
-------------如遇到文件冲突(冲突:要提交的文件已被其余人改动并提交到版本库中)要启用解决冲突功能。
3. 如何保持本地版本和服务器版本同步
使用update来同步本地和服务器上的代码。一样是右键选择SVN update,全部的更改就会从服务器端传到你的硬盘。注意,假如别人删除了某个文件,那么更新以后你在本地的也会被删除。
若是本地的代码已经被修改,和commit同样会先进行merge,不成功的话就会报告conflict
4 如何在同一个在一个工程的各个分支或者主干之间切换
使用tortoise SVN-->switch
在URL中输入branch或trunk的url地址
5.如何比较两个版本之间的差异
本地更改
若是你想看到你的本地副本有哪些更加,只用在资源管理器中右键菜单下选TortoiseSVN→ 比较差别。
与另一个分支/标签之间的差别
若是你想查看主干程序(假如你在分支上开发)有哪些修改或者是某一分支(假如你在主干上开发)有哪些修改,你可使用右键菜单。在你点击文件的同时按 住Shift键,而后选择TortoiseSVN→ URL比较。在弹出的对话框中,将特别显示将与你本地版本作比较的版本的URL地址。
你还可使用版本库浏览器,选择两个目录树比较,也许是两个标记,或者是分支/标记和最新版本。邮件菜单容许你使用比较版原本比较它们。阅读第 5.9.2 节 “比较文件夹”以便得到更多信息。
与历史版本的比较差别
若是你想查看某一特定版本与本地拷贝之间的差别,使用显示日志对话框,选择要比较的版本,而后选择在右键菜单中选与本地拷贝比较差别
两个历史版本的比较
若是你要查看任意已提交的两个历史版本之间的差别,在版本日志对话框中选择你要比较的两个版本(通常使用 Ctrl-更改),而后在右键菜单中选比较版本差别
若是你在文件夹的版本日志中这样作,就会出现一个比较版本对话框,显示此文件夹的文件修改列表。阅读第 5.9.2 节 “比较文件夹”以便得到更多信息。
提交全部修改
若是你要在一个视窗中查看某一版本的全部更改,你可使用统一显示全部比较 (GNU 片断整理)。它将显示全部修改中的部份内容。它很难显示一个全面清晰的比较,可是会将全部更改都集中显示出来。在版本日志对话框中选择某一版本,而后在右键菜单中选择统一显示全部比较。
文件差别
若是你要查看两个不一样文件之间的差别,你能够直接在资源管理器中选择这两个文件(通常使用 Ctrl-modifier),而后右键菜单中选TortoiseSVN→ 比较差别。
WC文件/文件夹与URL之间的比较差别
若是你要查看你本地拷贝中的任一文件与版本库中任一文件之间差别,
谴责信息之间的比较差别
若是你要查看的不只是比较差别并且包括修改该版本的做者,版本号和日期,你能够在版本日志对话框中综合比较差别和谴责信息。这里有更多详细介绍第 5.20.2 节 “追溯不一样点”。
比较文件夹差别
TortoiseSVN 自带的内置工具不支持查看多级目录之间的差别,但你可使用支持该功能的外置工具来替代。在这里 第 5.9.4 节 “其余的比较/合并工具”咱们能够介绍一些咱们使用过的工具。
6.提交代码时怎样知道本身改了哪些文件,别人改了哪些文件
7. 如何知道某个文件的某一行是谁在哪一个版本修改的
8. 如何为一个SVN主工程创建分支或tag
建立分支使用步骤:
一、选择你要产生分支的文件,点击鼠标右键,选择[分支/标记...]
二、在[至URL(T)]输入框中将文件重命名为你的分支文件名,输入便于区分的日志信息,点击确认。
三、在SVN仓库中会复制一个你所指定的文件,文件名称就是你所命名的,可是在你的本地目录上看不到新建的分支文件名,要使你的文件更新做用到你的分支上,你必须选择文件,点击鼠标右键,选择[切换...],选择你重命名的文件,点击肯定便可。这样你的本地文件就和分支文件关联上了,不要奇怪,这时本地目录上看到的文件名仍然为旧的文件名。
经验小结:
一、若是操做的文件以前还未提交,而你又想把文件提交到新的分支上,记得必定要选择切换
二、SVN分支的管理实际上就是把不一样的分支用不一样的文件保存,所以你在取得新版本的时候会发现,不一样分支的最新文件也会被获取下来。
建立tag操做,至关于把当前的代码版本复制一份到其余地方,而后以这个地方为出发点进行新的开发,与原来位置的版本互不干扰。
对于branches、tags、trunk这三个目录,并非subversion必需的,而是被总结的一种良好的团队开发习惯,其使用方法为:
一、开发者提交全部的新特性到主干。 每日的修改提交到/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,标签被打包发布。
通常创建最初的repository时,就建好这三个目录,把全部代码放入/trunk中,如:要将project1目录下的代码导入 repository,project1的结构就是:project1/branches,project1/tags,project1 /trunk,project1/trunk/food.c,project1/trunk/egg.pc……,而后将project1目录导入 repository,创建最初的资料库。而后export回project1,做为本地工做目录。
转载自:http://blog.csdn.net/jiminull/article/details/7763795