一、前言

  日常工作中我们使用SVN都是在图形化操作系统下使用,实际上图形化的操作在软件内部都是对应的命令。我们在Linux shell环境下也可以使用svn,这需要我们熟悉SVN相关命令。当然又方便又快捷的图形化工具使用,我们不必执着于命令的使用。博文实验环境如下:

  • 操作系统:centos7.6
  • SVN server版本:1.7.14
  • SVN客户端版本:1.8.19

二、SVN常用命令

1、svn检出

[root@s145 tmp]# /opt/csvn/bin/svn checkout svn://192.168.0.146:18080/repos /tmp/svntest --username=wuhs
在这里插入图片描述
#svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码
#svn checkout可以使用缩写svn co

2、添加新文件

[root@s145 svntest]# touch 1.log 2.log
[root@s145 svntest]# /opt/csvn/bin/svn add *.log
A 1.log
A 2.log
#使用svn add命令添加前要求文件已存在,添加新文件只是告诉SVN,并没有真实提交,需要使用commit提交。

3、提交版本库

[root@s145 svntest]# /opt/csvn/bin/svn commit -m “日志提交” *.log
在这里插入图片描述
#svn commit可以缩写为svn ci
#-m参数为必选,可以为空,用于备注说明
#commit前必须先svn add添加文件到版本控制库。

4、更新文件

[root@s145 svntest]# /opt/csvn/bin/svn update
Updating ‘.’:
D 3.log
D 4.log
Updated to revision 5.
在这里插入图片描述
#svn update ##更新整个版本库
#svn update -r 修正版本 文件名 ##回退指定文件
#svn update 文件名 ##更新指定文件
#版本号可以通过svn log查看

5、删除文件

[root@s145 svntest]# /opt/csvn/bin/svn delete 1.log
D 1.log
[root@s145 svntest]# /opt/csvn/bin/svn ci -m “”
Deleting 1.log

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

6、加锁/解锁

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

7、比较差异

[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
#命令可以简写为svn di
在这里插入图片描述

8、查看文件或者目录状态

[root@s145 svntest]# /opt/csvn/bin/svn status 2.log
M 2.log
[root@s145 svntest]# /opt/csvn/bin/svn status 3.log
[root@s145 svntest]# /opt/csvn/bin/svn status -v testdir/
5 1 wuhs testdir
#命令简写svn st

  • ?:不在svn的控制中;
  • M:内容被修改;
  • C:发生冲突;
  • A:预定加入到版本库;
  • K:被锁定

9、查看日志

[root@s145 svntest]# /opt/csvn/bin/svn log 2.log
------------------------------------------------------------------------
r2 | wuhs | 2022-02-11 17:09:53 +0800 (Fri, 11 Feb 2022) | 1 line

日志提交
------------------------------------------------------------------------

10、解决冲突

[root@s145 svntest]# /opt/csvn/bin/svn resolved 2.log
Resolved conflicted state of ‘2.log’
[root@s145 svntest]# /opt/csvn/bin/svn commit -m “” 2.log
Sending 2.log
Transmitting file data .
Committed revision 9.

11、创建纳入版本控制下的新目录

[root@s145 svntest]# /opt/csvn/bin/svn mkdir abc
A abc
[root@s145 svntest]# ls
2.log 3.log abc testdir testfile.txt
[root@s145 svntest]# /opt/csvn/bin/svn commit -m “新增目录” ./
Adding abc

Committed revision 11.

12、版本库下的文件和目录列表

[root@s145 svntest]# /opt/csvn/bin/svn list ./
1.log
2.log
testdir/
testfile.txt
#命令简写svn li

13、不更新情况下查看SVN文件

在这里插入图片描述

14、新建分支

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

Committed revision 12.

15、递归清理工作拷贝

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

16、获取子命令帮助

[root@s145 svntest]# /opt/csvn/bin/svn help switch
#svn子命令很多,每个子命令还可以加参数,如果我们想了解子命令的用法可以通过svn help command的方式获取帮助

有效子命令有如下,括号内为命令简写:

  • add
  • blame (praise, annotate, ann)
  • cat
  • changelist (cl)
  • checkout (co)
  • cleanup
  • commit (ci)
  • copy (cp)
  • delete (del, remove, rm)
  • diff (di)
  • export
  • help (?, h)
  • import
  • info
  • list (ls)
  • lock
  • log
  • merge
  • mergeinfo
  • mkdir
  • move (mv, rename, ren)
  • patch
  • propdel (pdel, pd)
  • propedit (pedit, pe)
  • propget (pget, pg)
  • proplist (plist, pl)
  • propset (pset, ps)
  • relocate
  • resolve
  • resolved
  • revert
  • status (stat, st)
  • switch (sw)
  • unlock
  • update (up)
  • upgrade
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐