一、SVN版本
Windows下SVN有好几个版本,如下图,最好使用VisualSVN服务端和TortoiseSVN客户端搭配使用,下载地址:http://subversion.apache.org/packages.html。
二、服务端VisualSVN
1、安装VisualSVN-Server(最好以管理员身份安装)
2、启动VisualSVN Server Manager(最好以管理员身份运行)
3、新建Repository版本仓库:右击Repositories->新建->Repository->输入仓库名->确认,然后我们可以在版本仓库里新建目录。比如下图中我们有三个版本库:C_PLUS_PLUS, DOTNET, JAVA,在C_PLUS_PLUS仓库里又建立了三个目录:yd_client、yd_server、yd_tools,在目录里还可以新建目录。
4、新建用户:右击Users->新建->User->输入用户名和密码
5、新建组:右击Groups->新建->Group->输入组名,点击Add向组添加用户
6、为用户设置权限:右击仓库或目录->Properties->Security->点击Add后向这个版本库增加用户和设置用户权限
7、使用客户端来向服务端导入(Import)新的项目
三、客户端TortoiseSVN
1、安装TortoiseSVN和简体中文语言包(最好以管理员身份安装)
2、向服务端导入项目:客户端电脑中右击想要上传的目录->SVN->Import导入->输入版本库路径(服务器中右击版本库名称选择Copy URL to Clipboard可获得)->输入用户名和密码。(如果上传失败可以把服务端主机名换成IP地址试试或检查防火墙)
3、从服务器检出项目:向服务端导入项目后还需要从服务器checkout检出这个项目,右键->SVN checkout(检出)。
4、其它用户首次使用的话也需要先检出指定的项目。
5、当修改了代码后可以进行commit提交,右键目录中空白->提交->弹出的对话框会自动选择所有改动了的文件,我们可以再进行筛选。如果其它用户在你之前提交了相同文件的代码的话此时提交会失败,因为你必须先update更新代码,更新完代码后再进行提交。
6、查看需要更新的文件及其更改的内容:项目目录下右击->SVN->显示日志,可以看到本地当前版本8是以黑体加粗显示的,而最新版本是其它人提交的版本10,我们可以点击其它人提交的版本,然后在下面就会显示他提交的文件。我们可以右击其他人提交的版本,选择“与工作副本比较”以查看指定版本与本地文件的差异。还可以右击其他人提交的版本,选择“与前一版本比较差异”来查看与上一个版本文件的差异。
如果我们想要查看指定文件与服务器上的差异,可以右击文件->显示日志->选择最新的版本右击->与工作副本比较。
如果我们想要查看本次修改了的文件与我们上一次提交的文件之间的差异,可以直接右击修改的文件选择比较差异。
7、解决冲突:commit提交代码的时候可能会提示conflict冲突失败,我们选择升级工作副本,然后右击文件,先选择与基础版本比较,如下图,可以看到<<<<<<<.mine下面为当前本地内容,即当前修改的内容,|||||||.r16下面为上一版本(版本号16)的内容,即修改之前的内容,=======下面>>>>>>>.r17上面为当前版本(版本号17)的内容,即服务器上的内容。
然后我们右击冲突文件,选择编辑冲突,如下图,分为三块:远程文件、本地文件、已合并,其中等于号中的内容为修改前内容,加号中为修改的内容,可以右击选择使用此文本块或文件来解决冲突,我们也可以退出,然后自己在编辑器中修改文件,然后提交的时候先选择已解决,然后再提交。
如果提交的时候发生冲突,并且我们希望直接使用服务器上的代码的话,可以右键点击冲突文件,选择Revert还原,表示舍弃自己的修改,然后再进行提交。
8、当本地文件修改了后,我们右击文件选择SVN更新的话如果服务器上没有新的更新版本的话是不会更新文件的,当服务器上的文件有了新的版本才会更新文件。更新文件后可能产生冲突,我们可以右击文件->SVN->编辑冲突。
9、添加文件:有两种方法,一个方法是右击选择Add增加,这样先提到变更列表中,在commit提交的时候选择添加的文件进行提交
10、删除文件:与添加文件类似,右击文件->SVN->delete删除,在commit提交的时候选择删除的文件进行提交
11、重命名文件:与删除文件类似。
12、还原文件:右击文件->SVN->Update to reversion更新至版本->输入版本号。如果想要还原全部文件的话,右击空白->SVN->show log->选择指定版本右键->revert to this version还原到此版本
13、在输入用户名、密码时候有一个Save authentication(保存认证)选项,默认是自动勾选的,当下次导入的时候会自动使用上次的用户而不用再输入用户名和密码。如果需要切换用户的话:点击Setting(设置)->Saved Data(已保存数据)->Authentication data(认证数据)->Clear(清除)
14、Update item to revision 更新到此版本:本地文件恢复到指定的N版本,show log可以看到现在位于第N次提交,右键选择提交的话可以看到当前没有任何修改(全绿),所以不能提交。
Revert to this revision 复原到此版本:本地文件恢复到指定的N版本,show log可以看到现在并不是位于第N此提交而是原来的最新提交,右键选择提交的话可以看到当前有修改(红色),可以提交。
Revert changes from this revision 复原此版本作出的修改:本地文件撤销指定N版本(也可以选择多个版本)的修改,show log可以看到现在并不是位于第N此提交而是原来的最新提交,本地代码显示改动(红色)。适用情况:比如中间的一次或几次提交 错了,就可以抹杀这几次提交,修改正确后再次提交。
四、主干trunk与分支branches
1、在我们开发完成一个项目并上线发布版本后,此时在原项目上又有新的需求,如果我们接着在原项目上开发,而开发的时候在发布的版本上出现了BUG的话,想要修改BUG但现在项目已经不是发布时候的那个了。为了避免这种问题,我们在开发新需求之前可以生成项目的一个分支(可以说是项目的一个备份),然后我们可以继续在项目上(我们成为主干)开发新的需求,而如果原来发布的项目中途发现有BUG或需要修改一些功能的话就可以在分支上进行开发修改,两边都不会影响谁。还可以合并主线和分支代码,最后在分支不需要的时候可以删除它。
2、在SVN服务端我们的仓库中新建工程目录的时候我们可以选择project structrue类型,这个时候项目目录总会自动生成三个目录:trunk、branches和tags,我们一般将工程主线放到trunk主线中,将分支放到branches中,tags目录一般是只读的,可以存储阶段性的发布版本,作为一个里程碑的版本进行存档。
3、创建分支:右击本地trunk目录->SVN->branch/Tag分支/标记,在To path中我们选择将分支保存在服务端的branches目录的一个新目录branch_1,即/project_name/branches/branch_1在服务器端上创建好分支后,我们进入本地branches目录,右键选择checkout或update在本地获得分支。
4、合并主干和分支
合并分支上提交的修改到主干:在主干目录或文件右键选择SVN->合并->合并一个版本范围->合并的源选择分支目录或文件,默认合并的修改范围为分支所有提交版本的修改,也可以指定仅合并指定版本的修改,比如选择最新提交的版本的话即为仅合并分支上最新版本修改的内容。
合并主干上提交的修改到分支:流程与上面的类似,只不过是在分支目录或文件上右键选择SVN->合并。
在合并的时候可以看到还有一种类型:“合并两个不同的树”,这种类型合并的不仅是某个树的修改,而且包含两个版本之间的差异。合并的时候以“结束”的版本为为主,即二者有差异的地方,“起始”版本的内容会被放弃。
五、SVN常见图标说明
绿色对勾:本地没有修改,与上次提交内容相同
红色叹号:本地代码有改动,还未进行提交
蓝色问号:目录中新添加的文件
蓝色加号:已被add但还未提交
黄色叹号:文件有冲突
六、MFC里的特殊文件
.rc 是资源文件,比如我们在资源视图下对对话框做了修改那么就会修改这个文件,所以应该对这个文件进行提交。
.vcxproj 是项目属性文件,当我们对项目属性修改了后应该提交这个文件。
.vcxproj.filters 是目录文件,当我们向项目添加了文件或筛选器就应该提交这个文件。
引用和参考出处:http://www.cnblogs.com/armyfai/p/3985660.html