1.官网下载,并下载语言包。
懒得找官网的同学可以直接下载我的百度网盘链接:
链接:https://pan.baidu.com/s/1Ld31gwPbTS0FAHNoFJDK2w
提取码:1024
安装完不用找SVN在哪里,你随便右键一个文件就能看见TortoiseSVN
2.注意:先连公司的VPN(进入公司私有网段),再输入URL进入SVN代码仓库。否则可能一直转圈,因为在公网上找不到这样的IP地址。
3.登录SVN账号密码就是公司之前给的每个人的账号密码
1.SVN中三大分支
①trunk主版本:最新的正常运行的主版本,用来发版。
②branches分支:做一个长达2个月的大功能时需要另开分支。branch1、branch2、branch3…是不同的团队需要同步并行开发不同的大模块功能。branch做完要及时与trunk进行Merge,新开发的功能及时并入trunk。所以,branch是尽量不要发版的。
不同客户需求版本的分支,或者正在并行开发的不同版本。产品与项目分离!!!
③tag标记:作为快照,记录重要的、里程碑式的发行版本,如大版本号
(一)有关SVN的简要介绍
svn是代码版本控制用的,除了记录版本可以起到版本回退的作用外,对于一个产品的代码,要分为trunk、branches、tags三大分支。trunk为主干代码,随时发版用;branches为分支代码,可用于单独开发一个新功能(但周期比较长,trunk又要随时发版,这时就可以用branches,避免做了一半与他人冲突);tags里保存各个标志性的版本,一般是存放有重大改进的版本。注意,唯独tags里的内容不要修改,只作为一个快照,所以要考虑好了再传tags,而trunk和各个branch里的代码可以随时改动。
具体操作:
1.新建初始版本:
刚开始trunk为空,tag为空,branches里新建branch1_A,在A版本开发完成后,加入到trunk和tag里,为1.0版本/A版本。
2.更多客户提出新需求:
此时来了B客户,又提了某某需求,此时需要在branches里新建branch2_B,进行维护开发,全部完成后,将branch2_B内容加入到tag里,并覆盖trunk中内容。C客户提出某需求,在branches中新建branch3_C。开发维护过程中只在branch3_C中进行。完成后,加入tag中,并覆盖trunk中内容。
3.老客户发现bug:
若A客户发现一个bug,在branches中新建branch4_fixA。完成后,添加到tag里,并覆盖trunk。
软件开发理念:只维护一个版本
,不要针对每一个用户单独维护一个版本。
例如:
①要给人家统一的trunk里的isealmaker,而不是isealmaker_中信。
②A客户要求图片亮度为5,第一次开发的时候写死了是5。B客户要求图片亮度是10,这个时候应该怎么维护?不可以说单独开一个B版本,然后简单的把5改成10。而是应该复杂地加上配置文件,让图片亮度变成可选项,给B的还是最新版本,给所有用户的都是唯一的最新版本,而不是针对该客户的一个分支,这样维护成本最小,只维护一个版本。
同时,销售可以对A客户说,软件是20万元,1年免费更新。可以交5万元提供10年更新。这对销售和客户来说看起来是一个大承诺,但对于软件工程师来说,对A保持更新并不需要额外的工作量。因为对所有客户都只提供一个最新的trunk版本。
2.svn移动多个文件夹到新创建的trunk里
①check out 整个大文件夹
②在本地,建立名为trunk的空文件夹
③在本地,将其他文件拖入trunk里。整个大文件夹下就只有trunk了
④commit提交大文件夹。文件变动选择全部,包括“删除”和“无版本控制”的所有文件。写一下日志信息。
如此,就在一个版本内完成了创立trunk和将其他多个文件拖入trunk的操作。
.svn文件夹就是版本控制文件。检出到本地,在含有.svn文件夹的同级及下级目录内操作后再提交,效果等同于在云端操作。区别是,云端操作一步就要记录一次。而本地无论操作多少步提交时只算一次版本。注意.svn要是最新版本才能提交,否则报错已过时。
3.图标9个:常规、修改、冲突、增加、已删除、无版本控制、只读、锁定、忽略
①绿色对勾:未改动(对比下载下来的那个版本而言)
②红色感叹号:有改动(对比下载下来的那个版本而言)
③黄色三角感叹号:冲突
④蓝色加号:新增
⑤红色叉号:删除
⑥蓝色问号:无版本控制
⑦灰色对勾:只读
⑧🔒:锁定
⑨灰色圆圈横杠:忽略
4.SVN切换账号:
在setting里把当前登录账号的信息clear掉,再操作会要求输入账号密码,这时输入新的账号信息。
5.对于冲突版本,进行Merge。
1.由于版本号过老导致的冲突问题:
.svn的版本太老了。要偷天换日,进行覆盖,把欲上传的代码的.svn文件夹替换为最新版本号的才行
2.相邻版本号冲突
实测
WinMerge
比SVN的TortoiseMerge
好用
①WinMerge
②SVN的TortoiseMerge
步骤:先对下载下来的文件夹/文件 右键,在TortoiseSVN选项里找到Merge合并
SVN的Merge有2-3种类型,我的版本只有2种,讲讲区别
①Merge a range of revisons
合并某一个版本到我本地的版本里,可以手动修改冲突文件
冲突时有6种选项
§ postpone 暂时推后处理,我可能要和那个和我冲突的家伙商量一番
(df) diff-full 把所有的修改列出来,比比看
(e) edit 直接编辑冲突的文件
(mc) mine-conflict 如果你很有自信可以只用你的修改,把别人的修改干掉
(tc) theirs-conflict 底气不足,还是用别人修改的吧
(s) show all options 显示其他可用的命令
②Merge two different trees
合并两个不同的版本,from 被覆盖的版本 to 覆盖别人的版本。这里产生冲突会直接无脑用to的版本覆盖from的版本。
7.Hei马教程:https://www.bilibili.com/video/BV1Zb4y117Yu?p=8&share_source=copy_web