前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Mac上轻松使用SVN

如何在Mac上轻松使用SVN

作者头像
码农编程进阶笔记
发布2022-08-18 08:49:30
3.1K0
发布2022-08-18 08:49:30
举报

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

1.安装svn 命令:

mac:

代码语言:javascript
复制
brew install svn

centos:

代码语言:javascript
复制
yum -y install subversion

2、验证是否安装成功

代码语言:javascript
复制
 svn --version

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

3.拉取仓库文件

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

代码语言:javascript
复制
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
复制
svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码

3.添加文件

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

代码语言:javascript
复制
svn add file

#等同于

git add file

4.提交文件到svn

代码语言:javascript
复制
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
复制
 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
复制
#来源:公众号【码农编程进阶笔记】
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
复制
svn status path

#相当于

git status
代码语言:javascript
复制
[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
复制
#方法一:删除和提交操作
svn delete path -m "delete test fle"

#方法二:先删除再提交

svn delete 1.log

svn commit -m “”

9.查看日志

代码语言:javascript
复制
svn log path

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

10.查看文件详细信息

代码语言:javascript
复制
svn info path

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

代码语言:javascript
复制
svn merge -r m:n path

12.SVN 帮助

代码语言:javascript
复制
svn help

13.比较文件版本差异

代码语言:javascript
复制
svn diff file  

命令可以简写为svn di

代码语言:javascript
复制
[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
复制
[root@s145 svntest]# svn resolved 2.log
Resolved conflicted state of ‘2.log’
[root@s145 svntest]# svn commit -m “” 2.log
Sending 2.log
Transmitting file data .
Committed revision 9.

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

代码语言:javascript
复制
[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
复制
svn list 命令简写svn li
代码语言:javascript
复制
[root@s145 svntest]# svn list ./
1.log
2.log
testdir/
testfile.txt

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

代码语言:javascript
复制
svn cat file

18. 新建分支

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

20.svn提交文件流程

代码语言:javascript
复制
(1)首次提交文件
svn add file
svn commit -m 'msg' file

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

21.git 提交文件流程

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档