为什么使用版本控制软件

  • 备份多个版本,费空间,费时间
  • 难于恢复至以前正确版本
  • 容易引发BUG
  • 解决代码冲突困难
  • 代码管理混乱
  • 难于追溯问题代码的修改人和修改时间
  • 无法进行权限控制
  • 项目版本发布困难

什么是版本控制

版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

服务器端软件

Visualsvn
官网: https://www.visualsvn.com/server/

主要作用

  • 新建项目仓库
  • 新建用户
  • 新建用户组
  • 管理仓库

客户端软件

Tortoisesvn
官网 http://tortoisesvn.net/

图标介绍

android自带svn吗 安卓svn工具_上传

表示此文件或文件夹与仓库版本同步,本地也没有被修改过。

android自带svn吗 安卓svn工具_svn_02

表示此文件或文件夹在本地被修改过,状态就变成了已修改,而图标重载变成了红色感叹号。你可以很容易地看出哪些文件从你上次更新工作复本后被修改过,需要被提交。

android自带svn吗 安卓svn工具_版本控制_03

如果在提交的过程中出现了冲突图标变成黄色感叹号。

android自带svn吗 安卓svn工具_android自带svn吗_04

如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。

android自带svn吗 安卓svn工具_上传_05

如果你拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。

android自带svn吗 安卓svn工具_android自带svn吗_06

这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。

android自带svn吗 安卓svn工具_版本控制_07

加号告诉你有一个文件或是目录已经被计划加入版本控制

注意事项

1)”.svn“这个隐藏目录记录着两项关键的信息: 工作文件的基准版本和一个本地副本最后更新的时间戳。千万不要手工修改或删除这个.svn隐藏目录和里面的文件!!! 否则将会导致你本地的工作拷贝(静态视图)被破坏,无法再进行操作。
2)经常更新:降低冲突的可能性
3)提交前需在本机测试通过:降低将问题代码传到版本库
4)提交时一定写备注:方便其他员工查看和自己以后回顾
5)对于不需要提交的文件不要提交到版本库,可对照.gitignore文件设置忽略


Studio中上传下载

1.创建与控制服务器的连接

android自带svn吗 安卓svn工具_上传_08


android自带svn吗 安卓svn工具_上传_09

填入服务器地址(真实工作中管理员会提供)

android自带svn吗 安卓svn工具_android_10

获取地址方式(练习时,版本控制服务器在你机器上)

android自带svn吗 安卓svn工具_版本控制_11

填入账号密码

android自带svn吗 安卓svn工具_android自带svn吗_12

成功后工具栏会多出这些:

从左到右:

1)更新(从服务器下载更新版本)

2)上传提交(上传或提交更改)

3)版本对比

4)显示历史

5)撤销当前版本

android自带svn吗 安卓svn工具_版本控制_13

2.上传提交,设置忽略

分别打开project和module的.gitignore文件,里面注释出来的目录或文件都不要上传(不要上传一下乱七八糟的东西上去,会找你麻烦),一般.idea整个目录也都不需要上传

android自带svn吗 安卓svn工具_版本控制_14

对比.gitignore文件中所需要忽略的,将不需要上传的去掉,右边的两个打勾去掉

android自带svn吗 安卓svn工具_版本控制_15

成功后,颜色会发生改变(黑色为已加入服务器).

3.如何返回之前版本

选中需要返回的版本,选择Get

android自带svn吗 安卓svn工具_上传_16

4.解决冲突

android自带svn吗 安卓svn工具_上传_17

当点击更新时,如果存在冲突,则会出现下面的情况

android自带svn吗 安卓svn工具_svn_18

选择第三项,进去看看情况

android自带svn吗 安卓svn工具_上传_19

这里要结合情况进行取舍

android自带svn吗 安卓svn工具_android_20


使用客户端工具

1.下载,在资源管理器的任意位置右键

android自带svn吗 安卓svn工具_svn_21

输入需要下载的工程地址

android自带svn吗 安卓svn工具_版本控制_22

2.设置忽略

选中需要忽略的文件或文件夹

android自带svn吗 安卓svn工具_上传_23

说明:

  • xxx.xxx 忽略本文件
  • *.xxx 忽略以.xxx结尾的所有文件(类似正则表达式)
  • xxx.xxx(recursively) 忽略当前工程的所有这个文件
  • *.xxx(recursively) 忽略以.xxx结尾的文件(夹)及其所有子目录(当为文件夹时)

其他版本管理软件介绍

  • CVS
    Concurrent Versions System(并发版本管理系统)是一个版本控制管理系统,它是SVN出现之前最为广泛使用的一个版本控制系统。没有它,早期的软件工程就基本无法实现,就无法凝聚广大程序员的力量。它在软件工程中的作用实在是无可比拟的。 一直到现今的版本控制的主流SVN出现之后,它才慢慢的逐步淡出我们的视线。
  • GIT
    Linus的第二个伟大作品。2005年由于BitKeeper软件公司对Linux社区停止了免费使用权。Linus迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了。
    目前使用Git作为版本控制的开源软件:Linux kernel,Android, jQuery, Ruby on Rails,Debian…
    Eclipse上使用Git的项目数量也已经超过了使用SVN的仓库数。

Git优点
- 分布式,离线操作
- 每日工作备份
- 异地协同工作
- 现场版本控制
- 快

Git缺点
- 复杂的信息模型
- 抓狂的命令语法
- 让人费解的文档
- 新概念泛滥
- 保密性差
- 学习周期长

Eclipse 中SVN插件的使用
Subversion
官网 http://subversion.tigris.org