03.SVN检出/解决冲突/提交

SVN 检出操作


上一章中,我们创建了版本库runoob01,URL为svn://192.168.0.1/runoob01,svn用户user01有读写权限。

我们就可以通过这个URL在客户端对版本库进行检出操作。

svn checkout http://svn.server.com/svn/project_repo --username=user01 以上命令将产生如下结果:

检出成功后在当前目录下生成runoob01副本目录。查看检出的内容

你想查看更多关于版本库的信息,执行 info 命令。

SVN 解决冲突


版本冲突原因:

假设 A、B 两个用户都在版本号为 100 的时候,更新了 kingtuns.txt 这个文件,A 用户在修改完成之后提交 kingtuns.txt 到服务器, 这个时候提交成功,这个时候 kingtuns.txt 文件的版本号已经变成 101 了。同时B用户在版本号为 100 的 kingtuns.txt 文件上作修改, 修改完成之后提交到服务器时,由于不是在当前最新的 101 版本上作的修改,所以导致提交失败。

我们已在本地检出 runoob01 库,下面我们将实现版本冲突的解决方法。

我们发现 HelloWorld.html 文件存在错误,需要修改文件并提交到版本库中。

我们将 HelloWorld.html 的内容修改为 "HelloWorld! http://www.runoob.com/"。

用下面的命令查看更改:

尝试使用下面的命令来提交他的更改:

这时我发现提交失败了。

因为此时,HelloWorld.html 已经被 user02 修改并提交到了仓库。Subversion 不会允许 user01(本例使用的 svn 账号)提交更改,因为 user02 已经修改了仓库,所以我们的工作副本已经失效。

为了避免两人的代码被互相覆盖,Subversion 不允许我们进行这样的操作。所以我们在提交更改之前必须先更新工作副本。所以使用 update 命令,如下:

这边输入"mc",以本地的文件为主。你也可以使用其选项对冲突的文件进行不同的操作。

默认是更新到最新的版本,我们也可以指定更新到哪个版本

svn update -r6

此时工作副本是和仓库已经同步,可以安全地提交更改了

SVN 提交操作

在上一章中,我们检出了版本库runoob01,对应的目录放在/home/user01/runoob01中,下面我们针对这个库进行版本控制。


我们在库本版中需要增加一个readme的说明文件。

查看工作副本中的状态。

此时 readme的状态为?,说明它还未加到版本控制中。

将文件readme加到版本控制,等待提交到版本库。

查看工作副本中的状态

此时 readme的状态为A,它意味着这个文件已经被成功地添加到了版本控制中。

为了把 readme 存储到版本库中,使用 commit -m 加上注释信息来提交。

如果你忽略了 -m 选项, SVN会打开一个可以输入多行的文本编辑器来让你输入提交信息。

现在 readme 被成功地添加到了版本库中,并且修订版本号自动增加了1。

SVN 版本回退


当我们想放弃对文件的修改,可以使用 SVN revert 命令。

svn revert 操作将撤销任何文件或目录里的局部更改。

我们对文件 readme 进行修改,查看文件状态。

这时我们发现修改错误,要撤销修改,通过 svn revert 文件 readme 回归到未修改状态。

再查看状态。

进行 revert 操作之后,readme 文件恢复了原始的状态。 revert 操作不单单可以使单个文件恢复原状, 而且可以使整个目录恢复原状。恢复目录用 -R 命令,如下。

但是,假如我们想恢复一个已经提交的版本怎么办。

为了消除一个旧版本,我们必须撤销旧版本里的所有更改然后提交一个新版本。这种操作叫做 reverse merge。

首先,找到仓库的当前版本,现在是版本 22,我们要撤销回之前的版本,比如版本 21。

本文分享自微信公众号 - Java帮帮(javahelp),作者:奋斗蒙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 04.SVN查看历史/分支/标签

    04.SVN查看历史/分支/标签 SVN 查看历史信息 ---- 通过svn命令可以根据时间或修订号去除过去的版本,或者某一版本所做的具体的修改。以下四个命令可...

    Java帮帮
  • 每人应知的 23 个比特币和区块链名言

    尽管比特币和区块链仍处于起始阶段,但由于专家们正就其影响进行探索,它们如今已成为街谈巷议的话题。

    Java帮帮
  • Java微信支付【面试+工作】

    Java微信支付【面试+工作】 微信支付文档上有刷卡支付,扫码支付,公众号支付,APP支付等各种支付手段。本次就微信内打开的网页支付为例子,用java进行实现一...

    Java帮帮
  • Python基础知识4:文件操作

    文件的知识:打开文件、操作文件、关闭文件 1、关于打开文件: f.open('text','r')#r代表只读 f.open('text','w')#w代表只写...

    企鹅号小编
  • Python 3.5 读写文件

    在Python中读写文件不需要像Java或.Net一样要另外导入io"包",可直接使用open方法

    py3study
  • 生信菜鸟团博客2周年精选文章集(6)三个最基础生信软件教程

    其实我现在已经不写软件教程了! fastqc对原始测序reads质控 NCBI的blast++软件使用说明书 SRA工具sratoolkit把原始测序数据转为...

    生信技能树
  • 探究 Android 签名机制和原理

    最近在调研一个测试工具的使用,在使用中发现被测试工具处理过的apk文件经安装后打开就会崩溃,分析崩溃日志后原因是签名不一致导致的。

    用户5521279
  • 美团如何查询附近商家

    我们日常电脑美团或者饿了么点外卖,附近的商家几乎都是秒回的,最简单的理解,我们可以用经纬度来计算。

    三哥
  • HTTP强制跳转HTTPS的方法

    所有的http请求全部都自动重定向为https,只需要在nginx上添加相应配置即可。 使用rewrite方法

    KEVINGUO_CN
  • 打开文件open()函数的使用方法详解

    头文件:#include <sys/types.h>    #include <sys/stat.h>    #include <fcntl.h> 定义函数...

    _gongluck

扫码关注云+社区

领取腾讯云代金券