svn版本管理工具---windows版

一.svn

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。


SVN 的一些概念

  • repository(源代码库):源代码统一存放的地方
  • Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
  • Commit(提交):当你已经修改了代码,你就需要Commit到repository
  • Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。

如果两个程序员同时修改了同一个文件呢, SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN会提示文件Confict, 冲突,需要手动确认。


二.svn的安装使用


下载地址:
客户端:TortoiseSVN:http://tortoisesvn.net/downloads.html

服务端:VisualSVN:http://www.visualsvn.com/server/download

 



(1)安装visualSvn



上面为标准版,下面为企业版,企业版要key


repositories这个位置一定要好好保存,不要安装在c盘,否则系统重装会找不到,这里面相当于一个储物仓库,你可以对代码进行恢复



这是我服务端新建的一个test仓库,用来上传下载代码的
在users新建用户,这些用户才可以在这个服务端进行一些操作


(2)安装TortoiseSvn


安装完成,右键会有一个Svn Checkout 点击,出现如下图



url地址写的是ip地址形式,地址可以修改

右键---->tortoiseSvn--->Repo-browser



这时候你新建的test文件夹已完成,你可以在这里右键commit上传与下载 updata代码


三.svn的常见问题


问题1:由于在项目中都是合作形式的,所以当几个人同时使用一个上传代码的时候会出现问题

A.上传了A.java
B下载了A的代码,并且改了A 的代码,然后上传.此时A的原始代码已经不存在了,那么如何恢复到A之前的代码呢?



  右键---->tortoiseSvn--->show log


 
选中某个时间段的代码,右键--->revert to this version
这个文件就恢复到你原来自己想要的版本

问题2:A与B同时下载一个最新的代码,然后同时更改这个代码,如果A改完先提交,接着B改完提交,会出现什么情况呢?


A先提交成功,B提交时候会出现下面三个文件


public class Test{


<<<<<<< .mine
public void BMethod(){
||||||| .r14
=======
public void AMethod(){
>>>>>>> .r15


<<<<<<< .mine
System.out.pritln("B新加的方法")


}
||||||| .r14
=======
System.out.pritln("A新加的方法")


}
>>>>>>> .r15
}

问题来了.此时A与B商量,
1.A先提交的是错的,B后提交的是对的,那么B保留自己的代码,并上传.
2.A先提交的是对的,B后提交的是错的,那么B执行  右键---->tortoiseSvn--->revert
3.如果两个都不对,则可以将版本恢复到之前的样子,也就是test.java.r14


问题3:

如果A提交的代码与B提交的代码冲突处太多,此时我们可以将两个代码复制出来进行对比,

选中两个文件,右键diff,如下图进行比对更改


也可以在show log选中两个时间段的代码,进行diff比对