SVN初步理解

终端的常用命令:
- cd path : 将当前路径切换到path路径
- pwd :查看当前所在路径
- ls (-a / -l / -G) : 查看当前文件夹下所有文件及文件夹
- touch filename1 filename2 : 创建一个或者多个文件
- rm filename : 删除文件
- open filename :打开文件
- cat filename :查看文件内容
- more filename :分页查看文件内容
- mkdir 文件夹名称 :创建一个文件夹
- mv oldFilePath newFilePath :移动文件(可借助此命令给文件重命名)


* 显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
* 不显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles No && killall Finder


SVN项目管理基本操作:
1、项目经理初始化项目,上传到SVN服务器
方案1:
(1) 创建临时项目
(2) svn import [path] URL --username=用户名 --password=密码 -m "注释"

方案2:
(1) svn checkout URL [path] --username=用户名 --password=密码 : 初始化本地仓库
(2) 创建项目
(3) 使用 svn add 命令将项目所有文件添加到本地版本控制
(4) 使用 svn commit 提交本地项目到远程服务器

2、程序猿从服务器下载一份完整代码到本地开始开发
svn checkout URL [path] --username=用户名 --password=密码

3、修改文件提交
(1) 修改文件
(2) 使用svn commit -m "注释" : 提交到服务器

4、新建文件提交
(1) 新建文件
(2) 使用 svn add 命令将项目所有文件添加到本地版本控制
(3) 使用 svn commit -m "注释" : 提交本地项目到远程服务器

5、删除文件提交。注意一定不要手动删除文件
(1) svn remove filename 或者 svn delete filename 从本地版本控制以及对应文件删除
(2) svn commit -m "注释" : 提交本地操作到服务器, 使服务器也删除对应的文件

6、常用命令补充
1. svn status
查看当前工作空间内, 所有 有变化的文件 的状态
如果执行此命令什么都没输出, 代表本地没有东西要提交
2. svn log
查看当前版本的操作日志(什么人, 什么时间, 做了什么操作)


多人开发会遇到的问题:
问题一 : 超时
问题描述:
当本地文件版本小于服务器文件版本时, 如果要提交本地文件,就会报 out of date 超时错误
产生原因:
SVN通过版本号管理每一个文件,如果一个文件被修改并提交到服务器,那么服务器上的对应文件版本号就会加1, 如果你的版本号小于服务器版本号,就说明,肯定有别人在后来又修改了那个文件
解决方案:
针对于超时问题,对应的解决方案,就是先从服务器更新下最新版本, 保证本地版本号与服务器版本号一致,这是文件可以提交的前提

问题二 : 冲突
问题描述:
为了解决超时问题,只能更新.而在更新过程中,如果几个人修改了同一文件的同一行代码,此时就会产生冲突。


产生原因:版本控制器不会那么智能, 去决定应该使用谁的代码作为最终代码,只能将选择权抛给用户,让用户解决。


系统提供三种解决方案:
(p) postpone,
延迟处理(待会我自己处理), 如果选择这一种, 会自动生成三个文件供用户参考决策. 并将冲突部分代码块合并到一起. 而一旦解决完毕, 需要执行 svn resloved fileName 来告诉版本控制器已经解决, 然后版本控制器就会自动删除三个参考文件。


(mc) mine-conflict
使用我的(本地的), 如果代码产生冲突, 则以本地代码为准。


(tc) theirs-conflict
使用他人的(服务器), 如果代码产生冲突, 则以服务器代码为准

SVN终端-版本回退:
1、修改了,但未提交的情况下, 回退代码
方案1: (推荐)svn revert (作用:返回到上次提交后版本对应的最原始的状态)


方案2: 删除整个项目,重新checkout

2、修改了,并且提交了的情况反悔
方案1: 大力推荐
- svn update
(作用: 将本地代码更新到与服务器相同的版本)
- svn merge 文件名 -r 版本1:版本2
(作用: 把版本1 -> 版本2 的 diff 作用在当前版本)
- svn commit -m “本地和服务器都回退到某一指定版本”
(作用: 让服务器代码也退回到之前某个版本状态)

方案2:
- svn update -r 指定版本号(此时本地代码已经变化,但是服务器没有改变)
*--------以下步骤是为了让服务器代码也回滚到以前的版本----------*
- 修改部分文件
- svn update (此时会产生冲突, 选择使用自己的代码即可)
- 再次提交代码

方案3:
- 手动保存需要回退的文件内容
- 删除文件,提交到服务器
- 重新添加文件,上传到服务器

SVN目录规范
1、文件目录作用
trunk : 主干,当前开发项目的主目录;更新代码,提交代码都是在这个文件夹进行操作

brannches:分支目录添加非主线功能时使用,开发测试之后,可以合并到主干项目中。修复Bug,研发不确定的新功能都在这里做

tags:标记目录,通常作为重大版本的备份;如果有发布版本出现Bug,可以快速的找到对应版本的项目备份,然后开一个分支,进行Bug修复,用于与主干区分。在进行备份的时候,SVN是将整份代码全部复制一遍;

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值