关于SVN的解析

Posted lryepoch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SVN的解析相关的知识,希望对你有一定的参考价值。

SVN

--集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。


--注意事项:

.svn这个隐藏目录记录着两项关键信息:工作文件的基准版本和一个本地副本最后更新的时间戳,千万不要手动修改或者删除这个.svn隐藏目录和里面的文件!!,否则将会导致你本地的工作拷贝(静态试图)被破坏,无法再进行操作。

  ---一个新检出的工作复本使用绿色的对勾重载,表示Subversion状态正常。
  ---在你开始编辑一个文件之后,状态就变成了已修改,而图标重载已变成了红色感叹号。通过这种方式,你可以很容易地看出那些文件从你上次更新工作复本被修改过,且需要提交。

  ---如果在提交的过程中出现了冲突,图标就会变成了黄色感叹号。
  ---加号告诉你有一个文件或者目录已经被计划加入到版本控制中。


--常用操作:
  ---增加:
  1. 先提到变更列表中,再commit到配置库中,选择新增文件,右键SVN菜单执行“Add“操作提交到”变更列表”【相当于git中的stage】,然后右键SVN菜单执行”SVN Commit”提交到版本库中。

  2. 提交到变更列表中,而是直接commit配置库中,选择该文件,右键svn菜单执行”SVN Commit”操作。

  ---删除:记得commit

  ---改名(Rename):

  ---SVN还原(SVN Revert):
    右击想要回退的文件或者文件夹,在TortoiseSVN弹出菜单中选择”Update to reversion…” 然后会弹出一个窗口,如下:
    比如说我们要回退到第10个版本只需要在Revision中填写相应的版本号,然后点击ok即可。

  ---检查更新(Check for modifications):
   显示你所做的修改有哪些还没有提交的,此功能不光能看到对文件的修改变化,所有的变化都能看到,包括增加文件或者目录,删除文件或者目录,移动文件或者目录等,如果你点击了检查版本库,那你还可以看到版本库里的改动,既别人提交了哪些文件的改动,你还没更新到本地。

  ---SVN更新(SVN Update):
  更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“),就可以了。

  如何解决冲突文件?
  为什么会产生冲突代码呢?原因很简单就是因为不同的人,“同时”(即没有update最新的代码)修改了同一个文件的同一个地方,这时候,他提交了,我没有提交,我就提交不了,这个时候我们要进行先更新,然后在进行提交即可,那如果产生冲突,会生成如上3个文件。 

  其中,<<<<<<<<.mine .....=======之间的代码是你自己的,而======......>>>>>>>.r5是别人与你冲突的代码部分。

  .mine 是冲突前自己准备提交的文件。
  .r11 是冲突前本地的版本文件。
  .r12 是别人赶在你之前提交的版本。

  解决方案1:
  与别人提交的代码冲突后,与之进行讨论解决:
  1.不建议在冲突文件直接修改;
  2.如果后提交的正确,修改.mine文件名,直接覆盖原文件;
  3.如果两人提交的都无效,修改.r11文件名,直接覆盖原文件;
  4.如果前一个提交的正确,直接右击黄色感叹号文件,Revert即可;


  解决方案2:【不管代码多少,都可以清楚知道有多少冲突】
  1.当发现冲突后,不更新;
  2.先改名以保存自己的代码文件;
  3.然后从版本库上更新本地的文件;
  4.将从版本库中更新的文件与自己之前保存的文件进行比较(方法是同时选择这2个文件,右击选择Diff),手动解决冲突;
  5.然后提交;同时提醒前面的人要及时更新他自己的本地代码。

  a、以上是从磁盘文件上去比对的!!!
  b、还可以从历史记录中去比对!!!
  在showlog中双选两个文件,一 一进行比对。

  ---版本库浏览(Repo-browser)
  此功能是用来浏览需要查看的资料库,在本地文件夹下点击右键,选择TortoiseSVNàRepo-browser,在弹出的对话框中输入资料库地址,再输入用户名和密码,就能查看到你需要查看到版本库的内容,在这你还能看到那些文件被谁锁定了。

 

-- 创建分支合并相互操作:

  ---项目中为何要创建分支,及合并?

  比如我现在项目所有的文件放在主干上(trunk)中,由于需求的变更,需要增加新的需求,但是我们主干上还要继续往下开发,在此我们可以新建一个分支,来做增加新的需求那一块,主干上继续开发,等分支上代码没有问题的时候,再合并到主干上来。

  创建分支的最大的目的就是跟主线进行并行开发时候不影响主线的开发。

  ---如何在项目中创建分支?
  1、假如我本地新建一个文件夹test下有2个文件夹trunk(存放主干上的代码)和branch(存放分支上的代码)
  2、右击trunk, 点击SVN Checkout,就可以在主干上把代码从远程服务器上获取到;
  3、右键trunk --> branch/Tag ,可以在VisualSVN Serval服务器上新增newBranch,这是从以上的服务器qianduan3库上拷贝的文件;
  4、直接进入branch文件下,右键 --> Chenckout下,就可以把newBranch下的所有文件提取出来了;
  5、分支目前建立在svn的服务器端,本地并没有更新,对本地branch文件夹 右键--> update即可,就可以更新到分支代码;


  ---合并分支到主干上,如何操作?
  想把分支上的代码3.txt合并到主干上trunk,现在要怎么合并呢?
  1、回到我们刚刚的主干(trunk)文件夹下,鼠标右键该文件夹 --> TortoiseSVN --> Merge;
  2、Merge中选择第二个选项;
  3、一路点击【Next】,就可以看到主干trunk上多加了一个3.txt,就是从分支上合并过来的。


  ---合并主干到分支上,如何操作?
  如果主干上有一些更新,比如说jar包更新等等,那么这些要更新到分支上去,如何操作呢?
  比如我现在在主干上新建一个4.txt文件,现在是想把主干上的4.txt合并到分支上来,要如何操作?
  1、在分支点击branch --> 右键TortoiseSVN --> Merge;
  2、Merge中选择第二个选项;
  3、最后直接merge,就可以看到分支branch上也有主干上的4.txt文件了,也就是说,合并主干到分支上也是可以的。

 












































以上是关于关于SVN的解析的主要内容,如果未能解决你的问题,请参考以下文章

SVN基本操作--文字解析版

SVN基本操作--文字解析版

svn如何删中文目录. 中文目录结构,UNICODE, 目录下建了(中文)文件.删除时路径无法解析.

解析 `svn log` 的输出以仅列出某个文件历史的先前化身的路径

使用 cvs2svn 时,如何重命名符号以使分支和标记解析为相同的名称?

python Python脚本,解析Liferay .gitignore文件,并对.gitignore文件中的每一行(文件,文件类型或目录)运行svn:ignore