SVN 初始化项目使用

搭建服务器

  • 我们一般会在公司的内部搭建服务器,就是本地数据,如果要访问就可以再本机上访问本地服务器
  • 这里我们搭建 Visual SVN Server 服务器
  • 搭建过程可以参考搭建步骤


    ![ ![QQ20150720-10@2x.png](http://upload-images.jianshu.io/upload_images/645908-6b5ceb6ba40ebc90.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/645908-e09ae39e5587b497.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)
![ ![ ![ ![QQ20150720-15@2x.png](http://upload-images.jianshu.io/upload_images/645908-3c95355b294f6324.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/645908-0af1ba0ad911ce2f.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/645908-8c3d79386c1c0d9c.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/645908-042b17e97ca6a41a.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

SVN客户端命令

客户端命令1
  • svn checkout :下载服务器的代码到本地 (简写svn co)
  • svn commit :将改动的文件提交到服务器(简写svn ci)
  • svn update :更新服务器的代码到本地 (简写svn up)
  • svn add :向本地的版本控制库中添加新文件
  • svn delete、svn remove :从本地的版本控制库中删除文件(简写svn del、svn rm)
  • svn move :移动文件或者目录或文件更名
  • svn mkdir :创建纳入版本控制下的新目录
  • svn revert :撤销之前的一切修改
  • svn merge :将两个版本之间的差异合并到当前文件
  • svn resolved + 需要解决冲突的文件: 文件冲突解觉完成后需要执行这句代码
客户端命令2
  • svn info :查看文件的详细信息
  • svn diff :查看不同版本的区别
  • svn log :查看日志信息
  • svn list :列出版本库下的文件和目录列表
  • svn status :查看文件状态(简写svn st)
  • svn help :获取帮助信息(比如svn help ci)
  • svn lock :加锁
  • svn unlock :解锁

使用方法

    1. 将项目文件下载至本地
    • svn checkout URL [PATH]
    • svn co URL [PATH]
      注意:这里的中括号[ ]代表可选(可以省略)
  • 示例:再终端中操作

示例
// 再终端中操作下载服务器端的文件
svn checkout  https://192.168.1.106/svn/Weibo/ /Users/Documents/workspace
192.168.1.106代表的是:代码仓库的远程地址
/Users/Documents/workspace代表的是:将代码下载到本地的哪个路径
如果省略/Users/Documents/workspace的路径,就下载到命令行当前所在的路径

  • 2.提交修改或创建的文件
  • 提交一个新建的文件到服务器要经过两个步骤
    • 1 添加新建的文件到本地的版本控制库中:svn add + 哪个文件
    • 2 提交刚才的添加操作到服务器:svn commit -m "注释" [PATH]
  • 示例
svn commit  -m “修改了User.m文件” /Users/Desktop/workspace/Weibo/branches/User.m
/Users/Desktop/workspace/Weibo/branches/User.m代表的是:提交哪个文件到服务器
如果省略/Users/Desktop/workspace/Weibo/branches/User.m的路径,就将命令行所在路径中所有改动过的文件提交到服务器

  • 注意点
    • 如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误
      is not a working copy
    • svn这个隐藏目录记录着非常关键的信息
      千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作
QQ20150720-16@2x.png

SVN status 显示的文件状态

QQ20150720-17@2x.png
  • 追加
  • ? : svn不识别该⽂文件,或者该⽂文件被删除过,或者该⽂文件是新添加的⽂文件,还没有被 本地代码仓库进⾏行管理
  • A : ⽂文件已经被添加到本地仓库管理中,但是还未添加到服务器中(服务器的仓库还未 管理该⽂文件)
  • M : ⽂文件已经被管理,并且服务器也有该⽂文件.新修改的⽂文件,修改的内容没有被提到 服务器
  • D : 该⽂文件已经在本地进⾏行了删除,但是还没有将删除操作共享给服务器

总结

  • 1.再公司中我们需要先下载服务器中的源码使用
    svn checkout + 服务器地址和文件地址
  • 2.下载完文件,我们可以对文件进行编辑
  • 3.如果上传的是一个新的文件,那就必须进行两次操作
    • 1.将文件传到本地服务器控制库中
    svn add + 需要添加的文件
- 2.将文件添加到本地的服务器中
    svn commit -m  + "注释"
  • 如果上传的是有相同名称的文件就不用再将文件传到本地的服务器中,直接将文件添加到本地的服务器中就可以了
  • 4.如果多个人管理同一个文件,每次使用的时候最好先更行下
 svn update  // 更新为最新的代码

代码冲突

  • 每个公司都不会只有一个人在开发程序,这就避免不了代码再使用的过程中出现冲突.
  • 遇到冲突的时候我们就要来解决冲突
  • 例如:
    1. 张三和李四再出现代码冲突,张三需要一个属性,他添加一个属性以后更新到服务器,但是李四再使用的过程中,不知道服务器端已经更新了新的代码,但是李四还是在使用旧的文件,李四使用后更新版本就会出现版本过期的情况
QQ20150720-18@2x.png
  • 解决办法:
  • 什么情况下不能提交代码:当本地的版本号⼩小于服务器的版本号时代码是不能提

    Conflict : 冲突
  • (p) postpone : 选择p对应的文件中就会出现这种情况
      1. 我们需要删除不需要的代码
      1. 再终端中对当前代码进行消除冲突,终端中使用代码 svn resolved + 需要消除冲突的文件
      1. 对当前代码重新提交到服务器中
<<<<<<< .mine
表⽰示该位置是我的代码
=======
服务器的代码
>>>>>>> .r11
  • (mc) mine-conflict :当发⽣生代码冲突的时候,使⽤用我的代码。覆盖服务器代 码
  • (tc) theirs-conflict :当发⽣生代码冲突的时候,使⽤用服务器的代码。覆盖本地代码

版本回退

  • 再处理文件过程中,有可能出现文件提交错误的信息那么我们就应该将文件推到以前的版本中.回退版本有两种办法
    • 回退方式一
 // 直接输入代码会退到以前的版本
 svn update -r 6 // 会退到第六个版本

 // 将文件提交到服务器中
 svn commit + 文件名称

 // 这时候可能会起冲突,选择使用谁的文件,那么我们就选择使用我的文件来覆盖服务器的文件
 // 如果不起冲突,那么我们就应该添加一个属性,再提交到服务器中,然后再更新下
 svn update

 // 就可以会退到那个版本了

  • 回退方式二
// 我们先回退到想要回退的版本
    svn update -r 6

// 再更新到现在的版本
   svn update

// 会退到想要回退的banben
   svn merge -r 13(当前版本):6(想要回退的版本) 文件名

SVN 目录结构

  • 自动创建的文件目录总共有三个文件夹
QQ20150721-4@2x.png
trunk 文件夹
  • 1.这个文件夹主要是用来存放正在开发的项目

  • 2.我们需要再cormerstone中创建新的文件项目,并且checkout到当前文件夹中

QQ20150721-2@2x.png
  • 创建的文件会自动添加到服务器中
QQ20150721-3@2x.png

tages 文件夹

  • tages文件夹主要是用来存放已经上线的一些项目

branche 文件夹

  • 这个文件夹主要是用来修复一些上线项目的bug.
  • 项目修复完成后会将这个修复项目checkout下来,切记一定要选中这个文件进行checkout,否则会出现大问题
  • 修复完成后我们需熬将修复的文件版本和正在更新的版本进行合并
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容