SVN终端演练(个人开发)

### 1. 命令格式
命令行格式:
svn <subcommand> [options] [args]  
    svn 子命令 [选项] [参数]
        其中中括号里面的内容可以省略

### 2. 必学命令
     svn [子命令] --help
     svn help [子命令]

### 3. 实战演练
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
        查看当前版本的操作日志(什么人, 什么时间, 做了什么操作)

7. 版本控制中,各个文件状态参考

    ' ' 没有修改
    'A' 被添加到本地代码仓库
    'C' 冲突
    'D' 被删除(通过svn命令删除的文件)
    'I' 被忽略
    'M' 被修改
    'R' 被替换
    ‘G’ 被合并
    ‘U’ 已经更新
    ‘E’ 已经存在
    'X' 外部定义创建的版本目录
    '?' 文件没有被添加到本地版本库内
    '!' 文件丢失或者不完整(不是通过svn命令删除的文件)
    '' 受控文件被其他文件阻隔

8. 注意事项
    * 任何本地的操作, 如果想让服务器也做同样的操作, 就直接通过 commit操作 提交到服务器
    * 任何向服务器提交的操作,都要加注释 添加 -m参数
 
 
 
 
SVN终端演练(多人开发)
0. 准备工作

    熊大和熊二,分别通过
        svn checkout URL [path] --username=用户名 --password=密码
    命令初始化本地版本控制库

1. 添加文件同步

    1. 熊大创建文件并提交到服务器
        svn add fileName
        svn commit -m "新增文件"
    2. 熊二从服务器更新文件
        svn update

2. 修改文件同步

    1. 熊大修改文件并提交到服务器
        svn commit -m "修改文件"
    2. 熊二从服务器更新文件
        svn update

3. 删除文件同步

    1. 熊大删除文件并提交到服务器
        svn delete fileName
        svn commit -m "删除文件"
    2. 熊二从服务器更新文件
        svn update

4. 多人合作开发中的常见问题

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

    * 问题二 : 冲突
        问题描述:
            为了解决超时问题,只能更新.而在更新过程中,如果几个人修改了同一文件的同一行代码,此时就会产生冲突
        产生原因:
            版本控制器不会那么智能, 去决定应该使用谁的代码作为最终代码,只能将选择权抛给用户,让用户解决
        解决方案:
            系统提供三种解决方案:
                (p) postpone, 
                    延迟处理(待会我自己处理), 如果选择这一种, 会自动生成三个文件供用户参考决策. 并将冲突部分代码块合并到一起. 而一旦解决完毕, 需要执行 svn resloved fileName 来告诉版本控制器已经解决, 然后版本控制器就会自动删除三个参考文件
                (mc) mine-conflict
使用我的(本地的), 如果代码产生冲突, 则以本地代码为准
                (tc) theirs-conflict
使用他人的(服务器), 如果代码产生冲突, 则以服务器代码为准
  
 

SVN终端演练(个人开发\多人开发)的更多相关文章

  1. SVN终端演练-版本回退

    1. 版本回退概念以及原因?    概念: 是指将代码(本地代码或者服务器代码), 回退到之前记录的某一特定版本    原因: 如果代码做错了, 想返回之前某个状态重做;2. 修改了,但未提交的情况下 ...

  2. 如何使用SVN协调代源代码,多人同步开发

    转自linFen原文如何使用SVN协调代源代码,多人同步开发 1.什么是SVN SVN是一种版本管理系统,前身是CVS,是开源软件的基石.即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱 ...

  3. 多人开发Xcode工程冲突,打不开解决办法

    在公司多人协作开发,相信好多程序员都遇到非常忧伤的问题,就是工程打不开,这样就无从下手,好多程序怨只能再从代码服务器上下载一份新的代码,今天军哥教你几个小技巧,让你的bigger瞬间提升一个档次 在公 ...

  4. Git学习总结(12)——多人开发 Git 分支管理详解

    1.前言 在上一篇博客中我们主要讲解了Git 远程仓库,相信大家对远程的Git仓库有一定的了解,嘿嘿.在这一篇博客中我们来在大家讲解一下Git 分支管理,这可以说是Git的又一大特点.下面我们就来学习 ...

  5. PDA手持终端集成一体打印 二次开发

    PDA手持终端集成一体打印 二次开发支持 VS2008或VS2005开发工具 c#或C++开发语言 Mobile6.5,支持GSM通话,GPRS,EDGE网络;内置wifi,蓝牙,gps商场单品管理小 ...

  6. 转:Java开发牛人十大必备网站

    原文来自于:http://www.importnew.com/7980.html 以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质 ...

  7. 多人开发的git项目如何保持提交日志为一条直线?

    多人开发的git项目如何保持提交日志为一条直线? 一.Git的项目的git常用操作 a)Git clone 项目地址 从远程仓库克隆项目到本地 b)Git pull 从当前分支拉取更新代码 c)Git ...

  8. 解决多人开发时使用window.onload的覆盖问题

    通用型小函数:解决多人开发时,同时使用window.onload事件所出现的后面的window.onload函数覆盖前面一个window.onload函数的问题. function addLoadEv ...

  9. 学Android开发的人可以去的几个网站

    学Android开发的人可以去的几个网站 1.<IT蓝豹>Android开源项目分享平台国内非常好的一个Android开发者分享站,分享android所有特效,每天都有最新的Android ...

随机推荐

  1. k8s入坑之路(10)kubernetes coredns详解

    概述 作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,那么就需要一个集群范围内的DNS服务来完成从服务名到ClusterIP的解析. DNS服务在kubernetes中经历了三个 ...

  2. 攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup

    攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup 题目介绍 题目考点 掌握暴力破解手段 Writeup 打开链接 http://220.249.52. ...

  3. 13.Fibonacci数

    描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为 F(n)=1 ...........(n=1或n=2) F(n)=F(n-1)+F(n ...

  4. Android LayoutInflater(布局填充器)

    先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,第一种写法如下: LayoutInflater layou ...

  5. [bzoj5338]xor

    维护两颗可持久化字典树(当然可以放在一起),第一棵维护每一个点到根的每一位的二进制数量,在其父亲的基础上建立:第二棵维护dfs序上每一个点到第1个点的二进制数量,在其上一个点的基础上建立. 对于询问1 ...

  6. [bzoj5340]假面

    修改:维护g[i][j]表示第i个数为j的概率,从前往后转移 转移方程:g[id][i]=g[id][i-1]*p+g[id][i]*(1-p),初始g[i][a[i]]=1 询问:对于每一个人i,输 ...

  7. [bzoj1115]石子游戏

    考虑令$bi=ai-a_{i-1}$,那么每一次操作相当于让$bi-=x$且$b_{i+1}+=x$,相当于从i向i+1移动x个石子,那么容易发现偶数堆没有用处,因为另一方可以用同样的操作,因此问题相 ...

  8. arm中断汇编

    IRQ_Handler: push {lr} /* 保存 lr 地址 */ push {r0-r3, r12} /* 保存 r0-r3,r12 寄存器 */ mrs r0, spsr /* 读取 sp ...

  9. LRU缓存

    LRU缓存 struct Node{ int key; int value; Node* next; Node* pre; Node(): key(-1), value(-1), next(nullp ...

  10. C/C++ Qt 自定义Dialog对话框组件应用

    在上一篇博文 <C/C++ Qt 标准Dialog对话框组件应用> 中我给大家演示了如何使用Qt中内置的标准对话框组件实现基本的数据输入功能. 但有时候我们需要一次性修改多个数据,使用默认 ...