SVN 使用

前言:


1.本文讲的是SVN版本控制工具常用功能,包括命令行和界面化操作

2.如果想了解GIT使用方式,请移步这里 git使用

SVN使用环境

  • 使用SVN管理源代码,必须有2套环境
    • 服务器
      • 用来存储客户端上传的源码
      • 一般都是在Windows环境下安装Visual SVN Server
      • 大部分情况下,不是由开发人员搭建SVN服务器
    • 客户端
      • 用来提交、回退、修改、下载等操作

在Windows安装Visual SVN Server

  • 下载Visual SVN Server安装包
  • 打开安装包 --> next --> 同意协议 --> next --> 选择默认选项(安装SVN控制台)--> next --> 选择第一个按钮(标准版)--> next --> location:安装路径 Repositories:仓库路径 server Port:端口 旁边的https://选项不勾选(因为一般SVN都是在局域网,不会有安全问题)--> next -->Install --> 完成
Visual SVN Server安装

创建SVN仓库

  • 打开Visual SVN Server
  • 右击Repositories --> 新建 --> Repository --> 设置仓库名称 --> 下一步 --> 选择第一项Enpty repository(空的仓库)--> 下一步 --> 设置访问权限(Nobody has access<无人能访问>、All Subversion users have Read/Write access<所有人可以读写>、Customize permissions<自定义访问>)因为是初始化仓库,所以先设置为没人能访问 --> 下一步 --> 完成
使用Visual SVN Server 创建SVN仓库

SVN仓库配置

  • 在新建的仓库中新建2个文件夹(Code、Doc):新建 --> Folder --> 文件夹名称 --> 完成
  • 创建用户:右击Users --> Create user --> User name:用户名 Password:密码 Confirm password:确认密码 --> 完成
  • 创建用户组(iOS、Android):右击Groups --> Create Group --> Group name:组名 --> Add:增加成员 --> 完成
  • 配置仓库用户权限:右击仓库 --> Properties --> Add:添加成员或组 --> Permissions:设置权限(NO Access<无权限>、Read Only<只读>、Read/Write<可读可写>)--> 应用
  • 配置完成
使用Visual SVN Server 配置SVN仓库

测试SVN仓库链连接是否正常

  • 连接仓库分为测试连接和远程连接2种
    • 测试连接:也叫本地连接,就是在搭建SVN的服务器上测试是否可以连接,步骤如下:
      • 右键仓库 --> Copy URL to Clipboard --> 打开浏览器 --> 在地址栏粘贴(我这边的地址:http://yeshaoji-ef1f42/svn/test/)并回车 --> 输入用户名密码 --> 这样就连接上仓库了
本地测试SVN是否可以正常连接
  • 远程连接:测试完毕后就可以将地址发放给成员使用了
  • 服务器地址获取方式
    • 在服务器端打开命令行工具 --> $ ipconfig --> IP Address就是我们服务器地址
    • 拼接链接地址
    • 格式:http://服务器地址/SVN仓库路径 (比如我的:http://172.16.153.128/svn/test/
    • 使用者打开浏览器 --> 在地址栏粘贴并回车 --> 输入用户名密码 --> 这样就连接上仓库了
远程测试SVN是否可以正常连接.gif

管理者初始化项目

  • 将远程仓库下载到本地
    • 进入我们需要放置的文件件下
      • $ cd /Users/yeshaojian/Desktop/SVN/mgr
    • 连接并下载
      • $ svn checkout 仓库路径 --username=用户名 --password=密码
    • 下载成功后,在我们的文件夹下会出现下载下来的仓库,仓库里面有.svn的隐藏文件(显示和隐藏mac上文件的方法)
      • 进入本地仓库
        - $ cd 本地仓库目录(就是有.svn隐藏文件的目录)
    • 创建文件 main.m
      • $ touch main.m
    • 查看文件状态
      • $ svn status
        说明:
        1.?表示该文件不受SVN管理
        2.A表示该文件受SVN管理
        3.M表示该文件被修改
    • 将文件添加到svn管理中
      • $ svn add main.m (也可使用 $ svn add * <表示提交所有文件>)
    • 将main.m文件提交到远程仓库
      • $ svn commit main.m -m "注释"
管理者配置SVN项目

新成员使用SVN和多人开发

新成员篇:

  • 第一次加入项目需要进行下面操作
  • 获取到SVN账号与密码与远程仓库路径
  • 连接远程仓库并将仓库下载到本地
    • 进入我们需要放置的文件件下
      • $ cd /Users/yeshaojian/Desktop/SVN/newTest
    • 连接并下载
      • $ svn checkout 仓库路径 --username=用户名 --password=密码
    • 添加文件
      • $ touch test1.m test2.m test3.m
    • 查看文件状态
      • $ svn status
    • 将不受SVN管理的文件添加到管理中
      • $ svn add test1.m test2.m test3.m
    • 将文件提交到远程仓库
      • $ svn commit test1.m test2.m test3.m -m "注释" 或者 $ svn commit -m "注释"(不写表示全部提交)
新成员加入开发操作
  • 在后面的开发中(多人开发)就只根据需要提交代码就可以了:

管理者篇:

  • 管理者加入开发步骤:
    • 进入我们需要放置的文件件下
      • $ cd /Users/yeshaojian/Desktop/SVN/mgr
    • 更新代码
      • $ svn update
    • 在test1.m文件中修改文件内容,上传服务器
      • $ svn commit -m "注释"
多人开发-管理者

新成员篇:

  • 进入我们需要放置的文件件下
    - $ cd /Users/yeshaojian/Desktop/SVN/newTest
  • 新成员更新服务器上的代码到本地
    • $ svn update
  • 提交代码到远程仓库
    • $ svn commit -m "注释"

注意:每次要修改前先更新一下代码再进行修改。

多人开发-其它成员

SVN命令行方式删除文件

  • SVN不能使用普通的右键删除方式删除文件
  • 使用命令行删除
    • $ svn remove test3.m
  • 为确认文件被删除,查看下状态
    • $ svn status
      说明:
      1.?表示该文件不受SVN管理
      2.A表示该文件受SVN管理
      3.M表示该文件被修改
      4.D表示该文件已被删除
  • 提交更改
    • $ svn commit -m "删除了test3.m文件"
  • 别的成员修改前需要更新代码,才能继续操作
    • $ svn update
SVN删除文件(命令行)

SVN一些命令行简写

  • 最常用的简写
    • checkout --> co
    • status --> st
    • commit --> ci
    • update --> up
SVN命令行简写

SVN版本查看和回退

  • SVN查看版本信息很简单,使用下面指令就可以

    • $ svn log
  • SVN中有2中恢复或回退的情况,下面会介绍:

    • 情况一:我们本地修改了文件,但还没有提交到服务器
      • 解决方法:$ svn revert 需要恢复的文件
SVN回退版本(还未提交到远程仓库情况)
  • 情况二:回退到以前的版本
  • 首先要先更新本地版本到最新版
    • $ svn update 版本
    • 解决方法:
      1.查看历史版本

      - $ svn log
      2.合并版本

      - $ svn merge -r版本:版本 .(比如现在最新版本为9 --> $ svn merge -r9:r5 .)

      说明:这边会提示“U”标识,表示该文件为合并状态

      注意:这边最后面的 "." 要敲,表示当前目录
  1. 提交到远程服务器

    - $ svn commit -m "注释"
SVN回退版本(已提交到远程仓库的情况).gif

多人开发常见冲突解决

  • 场景描述:多个人同时修改了同一个文件的同一个地方,且有人已经提交到远程仓库,后面的人还在继续开发,且后面开发的人不是最新版本了,所以无法提交(SVN中如果远程服务器版本大于要提交的版本,就无法提交),这样的情况下就需要通过下面的步骤解决:
    • 先获取最新版本(这时会提示冲突,并给出了解决方案,因为我们修改了同一文件的同一个地方)

      • $ svn update

      提示:在提示解决方案中,经常用到的是以下几项
      - (p) postpone:延迟处理 (最常用,先不解决)
      - (mc) mine-conflict:以我的为准,覆盖掉仓库
      - (tc) theirs-conflict:以原创仓库为准,覆盖掉本地版本
      - (s) show all options:显示所有选项

    • 方式一:这边选择mc(以我的为准)--> 回车
      说明:如果看到显示了大写的 "G" 就说明冲突已经解决

    • 提交

      • svn commit -m "覆盖了远程仓库代码,解决冲突"
    • 方式二:这边选择tc (以远程版本为准,覆盖掉本地版本) --> 回车

    • 提交

      • svn commit -m "添加了某某属性,但不成功,稍后添加"
        注:因为此次提交不会有提示,因为本地版本和远程版本一样
    • 方式三:这边选择p(延迟处理)--> 回车

      • 这时我们的本地仓库内会多生成3个文件,这是我们需要手动解决相应的问题
      • 打开冲突文件,根据冲突提示进行相应修改
      • 修改完成后,告诉远程仓库,我们已经解决冲突
        • $ svn resoved 冲突文件名
      • 提交
        • $ svn commit -m "手动解决了冲突"

SVN图形化管理软件(Cornerstone)使用

  • Cornerstone界面介绍
Snip20160510_1.png
  • 初始化项目管理
    • 连接SVN服务器 --> 左下角(REPOSITORIES)栏的 “+” 号 --> 选择HTTP Server --> 填写相应信息后点击Add
Cornerstone 连接远程仓库操作.gif
  • 下载远程仓库内容到本地 --> 点击左上角的Check out --> 选择需要保存的位置 --> 打开下面的隐藏选项 --> 将Format选项调制最高(不然可能出现未知错误)--> check out --> 完成
Cornerstone 下载仓库操作.gif
  • 创建项目 --> 文件存放位置为SVN的工作区的Code中
创建项目.gif
  • 忽略不需要管理的文件 --> Cornerstone --> 点击Commit --> 在弹出的对话框中选择ignore(忽略) --> 打开项目中的.xcodeproj --> project.xcworkspace --> 删除2个xcuserdate文件 --> 提交 --> 修改项目中的任意地方(比如打个断点或者声明变量等) --> 运行项目 --> 回到Cornerstone --> 会发现刚刚删除的2个文件又出现了 --> 分别右击选择Ignore --> 然后更新仓库版本 --> 提交
忽略不需要的文件.gif
  • 测试文件是否忽略成功 --> 随便修改任意文件 --> 点击Source Control --> Commit --> 发现只有我们修改的文件需要提交怎么已经成功忽略文件
测试文件是否已经忽略成功.gif
  • 这样项目的初始化就完成了,以后就只需要用XCode来进行版本控制操作就可以了,不需要再进行忽略文件操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • SVN版本:1.5 及更新版本 名词说明: WC:Working Copy 你的工作区 Versioned:受控的...
    日风和阅读 4,265评论 1 23
  • SVN SVN使用 基本操作svn checkout:把项目源码下载到本地,只需要做一次svn update:将本...
    彼岸的黑色曼陀罗阅读 1,607评论 0 4
  • 一. SVN和Git区别 SVN : 集中式的版本控制工具Git : 分布式的版本控制工具 二. SVN介绍 SV...
    奋斗的蜗牛阅读 3,062评论 0 1
  • TortoiseSVN is an easy-to-use SCM / source control softwa...
    旅行家John阅读 2,799评论 0 2
  • 抖落昨日的尘埃,眨眼又是一年。来不及欣赏,来不及道别,匆匆赶赴下一场离殇。就像一叶落英,在猜悟不透的秋风,里,转瞬...
    古城苍狼阅读 802评论 6 15