Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在Mac上轻松使用SVN

如何在Mac上轻松使用SVN

作者头像
码农编程进阶笔记
发布于 2022-08-18 00:49:30
发布于 2022-08-18 00:49:30
4.8K07
代码可运行
举报
运行总次数:7
代码可运行

大家都知道,在Mac或Linux环境下使用git比较方便,但有时候根剧项目要求又不得不使用SVN,在windows系统上面有我们最为熟悉的小乌龟(TortoiseSVN,下载链接:https://tortoisesvn.net/downloads.zh.html)在mac系统上面则很少svn的工具,本文就带大家对比Git,介绍如何在Mac上轻松使用命令行进行操作SVN,同时提升开发人员的格调。

1.安装svn 命令:

mac:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew install svn

centos:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install subversion

2、验证是否安装成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 svn --version

出现以下内容表示安装成功

3.拉取仓库文件

通过svn checkout命令检出资源, svn checkout 可以使用缩写svn co

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn checkout svn://xxxxxx
例子:
[root@s145 tmp]# svn checkout svn://192.168.0.146:18080/repos /tmp/svntest --username=testuser

#等同于
git clone    git@gitlab.*.com:gituser/*.com.git (fetch)

格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码

3.添加文件

使用svn add命令添加前要求文件已存在,添加新文件只是告诉SVN,并没有真实提交,需要使用commit提交。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn add file

#等同于

git add file

4.提交文件到svn

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)

#等同于

git commit -m 'init提示信息' filepath

#-m参数为必选,可以为空,用于备注说明

#commit前必须先svn add添加文件到版本控制库。

#svn commit可以缩写为svn ci

5.加锁/解锁(很少用到)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 svn lock -m "LockMessage" [--force] PATH
 svn unlock PATH

#例如
[root@s145 svntest]# svn lock 2.log
‘2.log’ locked by user ‘wuhs’.

[root@s145 svntest]#svn unlock 2.log
‘2.log’ unlocked.

[root@s145 svntest]# svn lock -m “锁定2.log” 2.log
‘2.log’ locked by user ‘wuhs’.

6.更新svn资源到某个版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#来源:公众号【码农编程进阶笔记】
1.svn update -r m 

2.svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
#相当于 git pull 

3.svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
#相当于
git  reset  052e           # 回退到指定版本

4.svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)

svn update #更新整个版本库

svn update -r 修正版本 文件名 #回退指定文件

svn update 文件名 ##更新指定文件

版本号可以通过svn log查看

7.查看文件或者目录状态

svn status 命令简写svn st

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn status path

#相当于

git status
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# svn status 2.log
M 2.log
[root@s145 svntest]# svn status 3.log
[root@s145 svntest]# svn status -v testdir/
5 1 wuhs testdir

?:不在svn的控制中;

M:内容被修改;

C:发生冲突;

A:预定加入到版本库;

K:被锁定

8.删除文件

通过svn delete删除文件后需要执行提交操作才会真正删除。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#方法一:删除和提交操作
svn delete path -m "delete test fle"

#方法二:先删除再提交

svn delete 1.log

svn commit -m “”

9.查看日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn log path

#查看某个文件的日志
svn log 2.log

10.查看文件详细信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn info path

11.将两个版本之间的差异合并到当前文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn merge -r m:n path

12.SVN 帮助

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn help

13.比较文件版本差异

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn diff file  

命令可以简写为svn di

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# /opt/csvn/bin/svn diff 2.log
[root@s145 svntest]# ll
total 0
-rw-r–r-- 1 root root 0 Feb 11 17:06 2.log
-rw-r–r-- 1 root root 0 Feb 11 17:35 3.log
drwxr-xr-x 2 root root 6 Feb 11 17:03 testdir
-rw-r–r-- 1 root root 0 Feb 11 17:03 testfile.txt
[root@s145 svntest]# echo “2-test” > 2.log
[root@s145 svntest]# /opt/csvn/bin/svn diff 2.log
Index: 2.log
===================================================================2.log (revision 5)
+++ 2.log (working copy)
@@ -0,0 +1 @@
+2-test

14.解决冲突

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# svn resolved 2.log
Resolved conflicted state of2.log’
[root@s145 svntest]# svn commit -m “” 2.log
Sending 2.log
Transmitting file data .
Committed revision 9.

15.创建纳入版本控制下的新目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# svn mkdir abc
A abc

[root@s145 svntest]# ls
2.log 3.log abc testdir testfile.txt

[root@s145 svntest]# svn commit -m “新增目录” ./
Adding abc
Committed revision 11.

16.版本库下的文件和目录列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn list 命令简写svn li
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# svn list ./
1.log
2.log
testdir/
testfile.txt

17.不更新情况下查看SVN文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
svn cat file

18. 新建分支

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# svn mkdir branches

A branches
[root@s145 svntest]# svn copy svn://192.168.0.146:18080/repos/testdir svn://192.168.0.146:18080/repos/branches -m “新建分支测试”

Committed revision 12.

19.递归清理工作拷贝

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@s145 svntest]# svn cleanup
#递归清理工作拷贝,删除未完成的操作锁定。
如果你得到一个“工作拷贝已锁定”的错误,
运行这个命令可以删除无效的锁定,
让你的工作拷贝再次回到可用的状态。
命令语法是svn cleanup [PATH],如果没有传递路径则使用默认值"."

20.svn提交文件流程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)首次提交文件
svn add file
svn commit -m 'msg' file

(2)非首次提交文件
svn commit -m 'second' file

21.git 提交文件流程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add file    #每次提交时都需要add添加
git commit -m 'msg'
git push origin dev
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ubuntu16.04 svn配置「建议收藏」
虽然目前最流行的项目托管平台是github,其分布式的存储思想非常先进,对于项目的敏捷开发也非常有好处。
全栈程序员站长
2022/09/30
4990
SVN常用命令之checkout
官方解释,请参考:http://www.subversion.org.cn/svnbook/nightly/svn.ref.svn.c.checkout.html
全栈程序员站长
2022/07/07
4.7K0
SVN常用命令
SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。
阳光岛主
2019/02/19
2.9K0
SVN利用钩子post-commit自动更新到线上测试服务器
使用svnadmin create 创建一个版本库: svnadmin create cqzn_server 每个版本库的目录下有一个hooks目录: # ls /home/svn/cqzn_server/ conf dav db format hooks locks README.txt 在每个版本库下有hooks文件夹,里面有很多钩子程序: # ls -l hooks/ total 40 -rwxr-xr-x 1 www-data www-data 332 2010-05-30 16:47 post-commit -rw-r–r– 1 www-data www-data 2000 2010-05-30 15:22 post-commit.tmpl -rw-r–r– 1 www-data www-data 1663 2010-05-29 23:28 post-lock.tmpl -rw-r–r– 1 www-data www-data 2322 2010-05-29 23:28 post-revprop-change.tmpl -rw-r–r– 1 www-data www-data 1592 2010-05-29 23:28 post-unlock.tmpl -rw-r–r– 1 www-data www-data 3488 2010-05-29 23:28 pre-commit.tmpl -rw-r–r– 1 www-data www-data 2410 2010-05-29 23:28 pre-lock.tmpl -rw-r–r– 1 www-data www-data 2796 2010-05-29 23:28 pre-revprop-change.tmpl -rw-r–r– 1 www-data www-data 2100 2010-05-29 23:28 pre-unlock.tmpl -rw-r–r– 1 www-data www-data 2830 2010-05-29 23:28 start-commit.tmpl
星哥玩云
2022/06/30
4040
SVN 常用命令
最好的办法,不知道命令,用个svn的插件,图形界面处理一次,然后记住console里面的命令就行了。 设置HTTP代理 个人使用的方法是直接修改配置文件。Mac配置文件在 用户目录下的.subversion中,执行以下命令: vi ~/.subversion/servers 添加如下配置: http-proxy-host =proxy.xxx.com http-proxy-port =8080 忽略文件,不加入版本 svn propedit svn:ignore . 说明,第一步先要cd到要忽略的文件的父目
子勰
2018/05/22
1.1K0
详解Linux命令行下常用svn命令
1、Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、Linux命令行下往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3、Linux命令行下将改动的文件提交到版本库 svn commit -m “Log
李海彬
2018/03/23
6.8K0
一篇搞懂Git 和 SVN 的区别【原理篇】
Git和SVN都是版本管理系统,但是他们 命令区别后面会简单进行一个对比,我们先从原理的角度分析
火狼1
2022/03/22
3K0
一篇搞懂Git 和 SVN 的区别【原理篇】
CentOS7安装配置SVN及SVN Hook实战
一、概述 1、何为svn? Apache Subversion(简称SVN,svn),一个开放源代码的版本控制系统;用来管理文档,程序代码等文档的版本;svn相对git来说有点古老,是一个中心控制的版
星哥玩云
2022/07/13
1.1K0
CentOS7安装配置SVN及SVN Hook实战
代码管理工具——SVN 原
版本控制的作用:记录若干文件内容变化,以便将来查阅特定版本修订情况。 版本管理工具发展简史,cvs-->svn-->Git(参考:http://luckypoem14.github.io/test/2012/04/24/scm-history/ )。 svn全称subversion,是一个开源版本控制系统(C/S架构),始于2000年;git(gitlab/GitHub)是linux创始人linus发起的,2005年发布,最初目的是更好管理linux内核代码, gitlab可以认为是一个开源的github,两者没有直接关系;git和svn不同在于git不需要依赖服务端就可以工作,即git是分布式的。
阿dai学长
2019/04/03
1.6K0
Ubuntu下SVN安装和配置
Ubuntu下SVN安装和配置 一、SVN安装 1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home/xiaozhe/svn/ $ sudo mkdir mypro 3.创建svn文件仓库 $ sudo svnadmin create /home/xiaozhe/svn/mypro 4.导入项目到svn文件仓库 (可有可无) $ sudo svn imp
用户1212940
2018/01/23
2.8K0
Mac下SVN基本操作和常见错误
svn copy http://…/sdk/trunk http://…/sdk/branches/branch1 -m ‘create branch1’
全栈程序员站长
2022/07/07
6720
svn 基础架构介绍
一、初识svn 当大家谈论到代码管理平台的时候,会直接把它认为就是一个放代码的地方,类似于FTP直接上传到指定位置就可以了。对于网站来说,这是对的!但是对于一个业务来说,他需要不断的去更新,当然此过程不是想象的那么简单,上传即可,这个是需要开发组一点点去编辑(当然开发不是一个人去完成的是一个团队,不同的成员去编辑去修改,这个就是所谓的协同开发)–测试(第一版,第二版,第三版。。)–合成,最后推送到指定的业务中去。 版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况 版本管理工具发展简史,cvs →
老七Linux
2018/05/09
1.8K0
代码管理平台SVN部署实战
Subversion(SVN) 是一个开源的版本控制系統, 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
星哥玩云
2022/07/13
6200
史上最全SVN使用总结,建议先收藏后观看
最近在公司又开始玩SVN啦,这里给大家总结一下,基本上在公司不是用git就是用SVN进行代码管理,作为程序员,这些工具的使用还是需要熟悉了解一下的,本期孙叫兽给大家分享一下SVN相关的知识点,做到会用即可。不懂得可以查查相关文档。
孙叫兽
2021/07/29
2.7K1
史上最全SVN使用总结,建议先收藏后观看
盘点Linux常用运维工具(四)-版本控制篇之SVN
#实验环境 一台:svn+http服务器 一台:client server客户端服务器
老油条IT记
2020/03/26
1.9K0
一、Linux下的SVN服务器搭建
3.创建版本库目录,可以再chenjy目录上放置多个项目,不必为每个项目创建一个版本库。下面是我的版本库
全栈程序员站长
2022/09/09
2K0
一、Linux下的SVN服务器搭建
SVN钩子的一些简单说明
最近由于在看、SvnServer同步生产环境代码相关,特意了解了一下SVN的钩子。 1、SVN的hooks start-commit 提交前触发事务 pre-commit 提交完成前触发事务 post-commit 提交完成时触发事务 pre-revprop-change 版本属性修改前触发事务 post-revprop-change 版本属性修改后触发事务 通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。 SVN命令详解【转】 1、将文件checkout到本地目录 svn checkout
小柒2012
2018/04/13
9410
SVN入门安装配置与适用
[toc] 0x00 快速入门 什么是SVN? 答:Apache Subversion 通常被缩写成 SVN,是一个开源的中心服务器版本控制系統,Subversion 在 2000 年由 Collab
全栈工程师修炼指南
2020/10/23
7940
SVN入门安装配置与适用
python学习-SVN常用命令
SVN命令参考:http://riaoo.com/subpages/svn_cmd_reference.html
py3study
2020/01/08
1.8K0
通俗易懂|用好Git 和 SVN ,轻松驾驭版本管理
本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高频率使用到的 Git 常用命令。
用户6543014
2020/02/14
9050
通俗易懂|用好Git 和 SVN ,轻松驾驭版本管理
相关推荐
ubuntu16.04 svn配置「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验