SVN 命令

本文最后更新于:2024年9月8日 晚上

SVN 命令

checkout/co

  • 用来完整下载版本库中的全部内容。
1
$ svn checkout svn://ip/svn/project_repo --username=username ./
  • 以上命令将产生如下结果:
1
2
3
4
5
$ svn checkout svn://192.168.0.1/helloworld --username=user01 ./
A helloworld/trunk
A helloworld/branches
A helloworld/tags
Checked out revision 1.
  • 检出成功后在当前目录下生成名为helloworld的工作副本。
  • 版本控制相关操作都需要在工作副本目录下执行,例如:提交,更新等等这样的操作。
  • 为了保证工作副本能够正常和服务器进行交互,请不要删除或修改.svn目录中的内容。

status

  • 查看工作副本的状态。
1
2
$ svn status
? hello.txt
  • 如果状态为 ? ,则说明它还未加到版本控制中。
  • 如果状态为A,则说明它已经加到版本控制中。

add

  • 添加文件到版本库。
1
$ svn add hello.txt
  • 此时 hello.txt 的状态为 A,意味着这个文件已经被成功地添加到了版本控制中。

commit/ci

  • 提交修改到版本库中。
1
$ svn commit -m "message"
  • commit -m:注释信息,如果你忽略了-m选项,SVN会打开一个可以输入多行的文本编辑器来让你输入提交信息。

log

  • 用来展示svn版本的版本作者,日期,路径等信息。
1
2
$ svn log
$ svn log -r 开始版本号:结束版本号。
  • -r:如果只希望查看特定的某两个版本之间的信息,可以携带 -r 开始版本:结束版本 参数。

list

  • 在不下载文件到本地目录的情况下来查看版本库中的文件:
1
2
3
4
5
$ svn list http://192.168.0.1/helloworld
README
branches/
clients/
tags/

cat

  • 显示在该版本号下的该文件内容。
1
$ svn cat -r 版本号 rule.txt

diff

  • 用来检查历史修改的详情。

检查本地修改

  • 如果用 svn diff,不带任何参数,它将会比较你的工作文件与缓存在.svn的原始拷贝。
1
2
3
4
5
6
7
8
9
10
$ svn diff
Index: rules.txt
===================================================================
--- rules.txt (revision 3)
+++ rules.txt (working copy)
@@ -1,4 +1,5 @@
Be kind to others
Freedom = Responsibility
Everything in moderation
-Chew with your mouth open

比较工作拷贝和版本库

  • 比较你的工作拷贝和版本库中版本号为 3 的文件 rule.txt
1
$ svn diff -r 3 rule.txt

比较版本库与版本库

  • 通过 -r(revision)传递两个通过冒号分开的版本号,这两个版本会进行比较。
  • 比较 svn 工作版本中版本号2和3的这个文件的变化。
1
$ svn diff -r 2:3 rule.txt

update/up

  • 把服务器端文件所产生的所有修改下载到本地。
1
$ svn up

revert

  • 撤销任何文件或目录里的局部更改。
1
2
$ svn revert 文件名。
$ svn revert -R 目录名。

实例

  • 对文件 readme 进行修改,查看文件状态。
1
2
$ svn status
M readme
  • 这时发现修改错误,要撤销修改,通过revert回归到未修改状态。
1
2
$ svn revert readme
Reverted 'readme'

merge

  • 对于已经提交的修改,我们需要使用 merge 命令撤销旧版本里的所有更改然后提交一个新版本,同时需要携带 -r 参数。
1
$ svn merge -r 最新版本号:目标版本号目录名或文件名。

实例

  • 首先,找到仓库的当前版本,现在是版本 22,我们要撤销回之前的版本,比如版本 21
1
svn merge -r 22:21 readme

copy

  • 拷贝工作副本的一个文件或目录到版本库。
1
svn copy SRC DST
  • 拷贝工作拷贝的一个文件或目录到版本库,SRCDST既可以是工作拷贝(WC)路径也可以是URL:
    • WC -> WC:拷贝并且预定一个添加的项目(包含历史)
    • WC -> URL:将WC或URL的拷贝立即提交。
    • URL -> WC:检出URL到WC,并且加入到添加计划。
    • URL -> URL:完全的服务器端拷贝,通常用在分支和标签。
  • 注意:你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!