转载学习笔记:Linux下svn命令基础讲解

高风亮节 2022年09月30日 1,570次浏览

----原文来自fasteda.cn 作者:张长瑞
svn help

Bash
svn help — 求助!
svn import

svn import — 递归提交一个路径的拷贝到版本库。

例子:

Bash
svn import -m “New import” myproj http://IP地址/repos/trunk/misc
svn checkout

svn checkout (co)— 从版本库取出一个工作拷贝。

例子:

1.取出一个工作拷贝到本地目录:

Bash
svn checkout file:///var/svn/repos/test
2. 检出两个目录到两个单独的工作拷贝:

Bash
svn checkout file:///var/svn/repos/test file:///var/svn/repos/quiz
3. 支持断点续传,Ctrl+c后,执行同样的命令,继续传输数据。

  1. 检出某已版本的数据:

Bash
svn checkout -r 2 file:///var/svn/repos/test
svn commit

svn commit(ci) — 将修改从工作拷贝发送到版本库。

例子:

Bash
svn ci –m “” file:///var/svn/repos/test
-m参数为输入的日志记录信息

svn add

svn add — 添加文件、目录或符号链。

例子:

Bash
svn add [file/dir]
可以只添加一个目录而不包括其内容:

Bash
svn add --depth=empty [otherdir]
添加所有的文件内容:

Bash
svn add * --force
A for.c
A something/test/flash.v
A otherdir/docs/baz.doc
svn delete

svn delete(del, remove, rm) — 从工作拷贝或版本库删除一个项目。

例子:

1.删除一个文件

Bash
svn delete myfile
#D myfile
svn commit -m “Deleted file ‘myfile’.”
2.直接删除一个URL,你需要提供一个日志信息:

Bash
svn delete -m “Deleting file ‘yourfile’” file:///var/svn/repos/test/yourfile
3. 强制删除本地已修改文件的例子:

Bash
svn delete --force over-there
svn merge

svn merge —工作拷贝回退到指定版本。

例子:

Bash
svn merge -r rHEAD:109 file:///var/svn/repos/test/yourfile
**rHEAD:109 从当前最新版本回退到109版。操作完成后本地的工作拷贝会更新到109版。

svn copy

svn copy(cp) — 拷贝工作拷贝的一个文件或目录到版本库。

你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。

+commit

svn move

svn move(mv, rename, ren) — 移动一个文件或目录。

+commit

svn update

svn update(up) — 更新到某个版本。

例子:

svn update后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本 。

Bash
svn update -r 200 test.php
(将版本库中的文件test.php还原到版本200)

svn diff

svn diff(di) — 比较两条路径的区别。

例子:

  1. 比较BASE和你的工作拷贝(svn diff最经常的用法):
    

Bash
svn diff COMMITTERS
2. 查看文件COMMITTERS在修订版本9115修改的内容:

Bash
svn diff -c 9115 COMMITTERS
3. 察看你的工作拷贝对旧的修订版本的修改:

Bash
Svn diff -r 3900 COMMITTERS
4. 修订版本3000和35000比较:

Bash
svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS
svn export

svn export — 导出一个干净的目录树。

例子:

Bash
svn export file:///var/svn/repos my-export
svn list

svn list(ls) — 列出版本库目录的条目。列出库的相应目录中有哪些文件。

+上(-v)后显示详细内容内容:

最后一次提交的修订版本号

最后一次提交的作者

如果锁定,字符为“O”(更多细节见svn info)

大小(单位字节)

最后提交的日期时间

svn log

svn log — 显示提交日志信息。

例子:

1.可以在顶级目录运行svn log看到工作拷贝中所有修改的路径的日志信息:

Bash
svn log
2. 检验一个特定文件所有的日志信息:

Bash
svn log foo.c
3. 如果你手边没有工作拷贝,你可以查看一个URL的日志

Bash
svn log http://svn.xxx.com/repos/test/foo.c
svn status

svn status(stat, st) — 打印工作拷贝文件和目录的状态。

’ ’ 没有修改。

‘A’ 项目预定添加

‘D’ 项目预定删除

‘M’ 项目已经修改了。

‘R’ 项目在工作拷贝中已经被替换了。这意味着文件预定要删除,然后有一个同样名称的文件要在同一个位置替换它。

‘C’ 项目的内容(相对于属性)与更新得到的数据冲突了。

‘?’ 项目不在版本控制之下。

例子:

1.查看项目所有文件的更新信息(包括mv掉的项目)

Bash
svn status --show-updates (-u) wc
#没有-u 则简单的查看当前文件状态

#(-v)更详细的显示信息,包括版本库的修订版本号与修改人名

svn info

svn info — 显示本地或远程条目的信息。

显示:名称、路径、Repository root、版本库的UUID、版本号、类型(文件或目录)、上次修改人,上次修订版本,上次修改日期等

可以直接查库(链接)

svn cat

svn cat — 输出特定文件或URL的内容。

Bash
svn cat [file]
场景一:

功能要切回到之前的某一个版本。

有两种方法可以实现:

方法1: 用svn merge

  1. 先 svn up,保证更新到最新的版本,如20;

  2. 然后用 svn log ,查看历史修改,找出要恢复的版本,如10 。如果想要更详细的了解情况,可以使用svn diff -r 10:20 [文件或目录];

  3. 回滚到版本号10:svn merge -r 20:10 [文件或目录],注意版本号之间的顺序,这个叫反向合并;

  4. 查看当前工作版本中的文件,如test.cpp和版本号10中文件的差别:svn diff -r 10 test.cpp, 有差别则手动改之;

  5. 若无差别,则提交:svn ci -m“back to r 10,xxxxx” [文件或目录]。这时svn库中会生成新的版本,如21。

方法2: 用svn up

前2步如方法1,然后直接 svn up -r 10。当前的工作版本就是版本10了。但是注意,这时svn库中会并不会生成新的版本,下次在本地svn up之后,还是会回到之前的版本。