SVN 基础记录

@(版本控制)[svn]

前言

毕业后在 mz 版本控制一直用 git, 这段时间换到 tx, 使用的 svn,开始还是有些不习惯。 所以整理记录下 svn 的一些基本使用,方便工作。

准备

同 git 简单对比

svn 全名 subversion, 使用服务端-客户端结构,不同于 git 的分布式,svn 提交修改获取版本记录信息等操作都需要连接到服务器。当然 git 也有一个集中的版本库,但是每台机器上克隆了一个自己的版本库,拥有所有版本信息,实际开发都是先提交到自己的版本库,再推到集中版本库。 在 svn 中,分支是一个完整的目录,相对于 trunk (svn 主分支目录名), 这个目录拥有实际的目录文件。git 的分支简单很多,在实际开发不同特性,我觉得挺方便的。

安装

ubuntu 下安装

$ sudo apt-get install subversion subversion-tools

创建仓库

这个操作日常比较少。

日常命令

checkout(co) 检出

和 git checkout 一样, 检出代码库到本地

$ svn co svn_repor_path  local_path --username xxx --password sss
$ svn co http:192.168.1.2/test/trunk --username orient

export 导出

导出一个不带 .svn 文件夹的干净目录, 命令格式和 checkout 差不多,如果不指定版本号,默认导出最新

$ svn export [-r 版本号] svn_repor_path local_patch --username xx

add 添加文件

新加入文件到版本库追踪,之后 commit 提交到版本库服务器

$ svn add file_name

commit(ci) 提交

将改动文件提交到版本库,

$ svn commit  -m "msg" file1 dir1 file2...

delete(del) 和 remove(rm) 删除

  1. delete 命令用于删除文件,不再追踪
$ svn del test.c
$ svn ci -m "del test.c"
  1. remove 命令用于删除分支

update(up) 更新本地仓库

获取服务器版本库更新到本地

$ svn update  #目录下所有文件更新到最新
$ svn update -r 120 test.c # test.c 还原到 revision 120

提交代码的时候提示过期冲突,需要先 update 修改的文件, 清除 svnresolved,在 commit。

svn 下修改了文件后想要清除掉,一般做法可以直接把修改的文件删除,然后执行 up 恢复原来的文件。或者使用 revert 实现

lock/unlock 加锁解锁

为了保证自己修改文件的时候不会被别人修改,带来冲突覆盖的问题,可以使用加锁功能。

$ svn lock -m "备注信息" [--forec] file_name
$ svn unlock file_name

diff 比较差异

用于比对文件与库版本的差别

$ svn diff file_name # 当前文件同基础版本比较
$ svn diff -r m:n file_name # 比对 版本 n 和 m 的差异

status 查看状态

查看目录下文件的状态, M:修改了的文件 ?不存在控制中,需要删除或者添加, C:有冲突 A:新增 K:锁定 详细状态标记

$ svn status

log 查看日志

查看提交的日志

$ svn log  # 查看所有提交日志
$ svn log file # 查看指定对象提交日志
$ svn log -l n # 查看最后 n 条提交日志

info 查看信息

查看信息

$ svn info [path_name]

revert 恢复到上个版本

此命令将本地修改删除,回退到原始未改变的文件

$ svn revert test.c
$ svn revert --recursive ./ # 回退目录下所有文件

注意,执行该操作,无法恢复被删除的目录

resolved 解决冲突

当尝试提交时发生冲突,冲突文件会对应多个副本, file.mine, file.otehr_rev... 解决冲突后,运行下 svn resolved,删除冲突文件,修正版本库数据记录。

cp 创建新的分支

用于创建新分支

$ svn svn:xxxx_/trunk svn:xxxx_/branch/xxx -m "从trunk 创建分支 xxx"

merge 合并

合并不同版本文件,分支

$ svn merge -r m:n file_name # 将合并文件版本 m 和 n 差异到当前文件
$ svn merge svn:/xxxx svn:/aaa # 合并分支

switch 变更 URL

改变了提交的目录库

svn switch new_url

参考

1.svn book

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者常至

Hibernate 的一级缓存

15020
来自专栏挖坑填坑

Asp.net+Vue2构建简单记账WebApp之三(使用Vue-cli构建vue.js应用)

16130
来自专栏Java帮帮-微信公众号-技术文章全总结

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

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

1.2K50
来自专栏linux系统运维

rsync通过服务同步,linux系统日志,screen工具

22640
来自专栏运维小白

12.5 Nginx介绍

Nginx介绍 Nginx官网 nginx.org,最新版1.13,最新稳定版1.12 (stable版本) //这个软件是有俄国人开发的,因为对静态文件的...

19960
来自专栏云计算教程系列

如何在Ubuntu上安装ionCube

ionCube是一个PHP模块扩展,可加载加密的PHP文件并加速网页。ionCube Encoder可以把PHP源代码转换成ByteCode。进行加密授权处理后...

17200
来自专栏醉码

cetnos 7.4 kafa本地环境搭建

38360
来自专栏决胜机器学习

RabbitMQ(六) ——RPC模式

RabbitMQ(六)——RPC模式 (原创内容,转载请注明来源,谢谢) 一、概述 RabbitMQ的RPC模式,支持生产者和消费者不在同一个系统中,即允许远程...

40750
来自专栏决胜机器学习

PHP网络技术(六)——session及与cookie的比较

PHP网络技术(六) ——session及与cookie的比较 (原创内容,转载请注明来源,谢谢) 一、概念 session是持续的、双向性的...

40570
来自专栏smy

windows下操作linux虚拟机映射网络驱动器中文件提示chmod权限不足解决方案

为了方便操作,linux虚拟机会通过windows下连接网络驱动器的方式共享自己的文件,对于前端来说,我想把gulp放在windows磁盘,操作虚拟机中的php...

22630

扫码关注云+社区

领取腾讯云代金券