Tortoise SVN -------版本控制器subversion 文章目录一、下载Tortoise SVN二、SVN操作1.SVN 与 git 操作 对应一览表2.SVN checkout ≈ git clone3.SVN update ≈ git pull4.svn commit ≈ git push(1)新文件上传svn add svn commit(2)已在SVN里的文件上传直接 SVN commit三、其他1.SVN中三大分支2.svn移动多个文件夹到新创建的trunk里3.图标9个常规、修改、冲突、增加、已删除、无版本控制、只读、锁定、忽略4.SVN切换账号5.对于冲突版本进行Merge一、下载Tortoise SVN1.官网下载并下载语言包。懒得找官网的同学可以直接下载我的百度网盘链接链接https://pan.baidu.com/s/1Ld31gwPbTS0FAHNoFJDK2w提取码1024安装完不用找SVN在哪里你随便右键一个文件就能看见TortoiseSVN2.注意先连公司的VPN(进入公司私有网段)再输入URL进入SVN代码仓库。否则可能一直转圈因为在公网上找不到这样的IP地址。3.登录SVN账号密码就是公司之前给的每个人的账号密码二、SVN操作1.SVN 与 git 操作 对应一览表SVN 操作近似 Git 操作svn checkoutgit clonesvn updategit pullsvn addgit addsvn commitgit pushsvn statusgit status2.SVN checkout ≈ git clone下载后会出现一个 .svn 的隐藏文件注意你无法在已经有 .svn 的路径里再次 checkout 其他的内容3.SVN update ≈ git pull上传已存在文件前先SVN update。(类似git提交代码前先git pull --rebase再add、commit、push)SVN最常用的两个操作更新(Update)、上传(Commit)类似git的pull 和 push4.svn commit ≈ git push(1)新文件上传svn add svn commit(2)已在SVN里的文件上传直接 SVN commit三、其他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.对于冲突版本进行Merge1.由于版本号过老导致的冲突问题.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?p8share_sourcecopy_web