前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SVN 基础记录

SVN 基础记录

作者头像
orientlu
发布2018-09-13 10:56:40
6680
发布2018-09-13 10:56:40
举报
文章被收录于专栏:orientluorientlu

@(版本控制)[svn]

前言

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

准备

同 git 简单对比

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

安装

ubuntu 下安装

代码语言:javascript
复制
$ sudo apt-get install subversion subversion-tools

创建仓库

这个操作日常比较少。

代码语言:javascript
复制

日常命令

checkout(co) 检出

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

代码语言:javascript
复制
$ 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 差不多,如果不指定版本号,默认导出最新

代码语言:javascript
复制
$ svn export [-r 版本号] svn_repor_path local_patch --username xx
add 添加文件

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

代码语言:javascript
复制
$ svn add file_name
commit(ci) 提交

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

代码语言:javascript
复制
$ svn commit  -m "msg" file1 dir1 file2...
delete(del) 和 remove(rm) 删除
  1. delete 命令用于删除文件,不再追踪
代码语言:javascript
复制
$ svn del test.c
$ svn ci -m "del test.c"
  1. remove 命令用于删除分支
update(up) 更新本地仓库

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

代码语言:javascript
复制
$ svn update  #目录下所有文件更新到最新
$ svn update -r 120 test.c # test.c 还原到 revision 120

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

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

lock/unlock 加锁解锁

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

代码语言:javascript
复制
$ svn lock -m "备注信息" [--forec] file_name
$ svn unlock file_name
diff 比较差异

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

代码语言:javascript
复制
$ svn diff file_name # 当前文件同基础版本比较
$ svn diff -r m:n file_name # 比对 版本 n 和 m 的差异
status 查看状态

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

代码语言:javascript
复制
$ svn status
log 查看日志

查看提交的日志

代码语言:javascript
复制
$ svn log  # 查看所有提交日志
$ svn log file # 查看指定对象提交日志
$ svn log -l n # 查看最后 n 条提交日志
info 查看信息

查看信息

代码语言:javascript
复制
$ svn info [path_name]
revert 恢复到上个版本

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

代码语言:javascript
复制
$ svn revert test.c
$ svn revert --recursive ./ # 回退目录下所有文件

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

resolved 解决冲突

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

cp 创建新的分支

用于创建新分支

代码语言:javascript
复制
$ svn svn:xxxx_/trunk svn:xxxx_/branch/xxx -m "从trunk 创建分支 xxx"
merge 合并

合并不同版本文件,分支

代码语言:javascript
复制
$ svn merge -r m:n file_name # 将合并文件版本 m 和 n 差异到当前文件
$ svn merge svn:/xxxx svn:/aaa # 合并分支
switch 变更 URL

改变了提交的目录库

代码语言:javascript
复制
svn switch new_url

参考

1.svn book

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.05.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 准备
    • 同 git 简单对比
      • 安装
        • 创建仓库
          • 日常命令
            • checkout(co) 检出
            • export 导出
            • add 添加文件
            • commit(ci) 提交
            • delete(del) 和 remove(rm) 删除
            • update(up) 更新本地仓库
            • lock/unlock 加锁解锁
            • diff 比较差异
            • status 查看状态
            • log 查看日志
            • info 查看信息
            • revert 恢复到上个版本
            • resolved 解决冲突
            • cp 创建新的分支
            • merge 合并
            • switch 变更 URL
        • 参考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档