svn(subversion)初学者总结

假设你安装好了Subversion 命令行客户工具svn,和管理工具svnadmin。用以下指令验证

[root@localhost ~]# svn --version 
svn, version 1.7.14 (r1542130)
   compiled Nov 26 2013, 21:44:01

Copyright (C) 2013 The Apache Software Foundation.

...

...

如果未安装,请在网上查找安装方法,在fedora后期的系统都自带svn工具。

下面简单介绍如何使用svn:

首先要创建一个新的资料库:

[root@localhost svn]# svnadmin create /root/svn/repos ---创建资料库

[root@localhost svn]# cd repos/  ---进入到资料库

[root@localhost repos]# ls -a  ---查看资料库里面的文件
.  ..  conf  db  format  hooks  locks  README.txt

[root@localhost ~]# svn import /root/li/project file:///root/svn/repos -m  ---将自己的新建的或者已有的工程导入资料库,此语句有问题,如下提示,说 -m 缺少一个参数

svn: missing argument: m


[root@localhost ~]# svn import /root/li/project file:///root/svn/repos -m "initial import" ---这个语句是正确的,"Initial import" 就是 -m的参数。
Adding         li/project/lgj-0.1

...

...

Adding         li/project/lgj-0.1/configure.ac


Committed revision 1. ---导入完成,此时之前的新建的或已有的工程已经没用,因为svn不认识,以后要从svn/repos中下载工作副本,然后再工作副本修改、提交...


[root@localhost ~]# mkdir project ----新建一个文件夹,用于存放工作副本(用ls查看是空的)

[root@localhost ~]# svn checkout file:///root/svn/repos/ project/     --- 将svn资料库中的子版本下载到刚新建的project中(即:工作副本)。
A    project/lgj-0.1
A    project/lgj-0.1/config.log
A    project/lgj-0.1/config.status

...

...

A    project/lgj-0.1/Makefile.in
Checked out revision 1.

[root@localhost ~]# cd project/
[root@localhost project]# ls
lgj-0.1 --- 可以看出,已经将工作副本下载成功,


status命令

查看本地工作副本的状态,如果工作副本是与资料库是一致的,那么输入status命令,则没有什么提示,如下;

[root@localhost project]# svn status 

[root@localhost project]# 


那么下面随便修改本地工作副本中的一个文件“good.txt”,然后保存。然后输入svn status命令:

[root@localhost project]# svn status 
M       lgj-0.1/src/good.txt --- M表示modified

commit命令

本地工作副本的修改上传到资料庫; 而在每次 commit 的時候, 可以順便附帶一個訊息, 表示這次 commit 時修正了什麼地方, 以方便之後在找尋的時候, 除了透過時間及作者外。還能有一些其他的資訊. 我們稱這個訊息為 commit log , 建議最好要填寫, 就算是只有一行五六個字, 也勝於什麼都沒有寫. 若您的 commit log 只有一行, 可以直接透過 -m "<your commit log>" 加在 commit 後面, 如:

svn commit -m "modify good.text"
 

[root@localhost project]# svn commit -m "modify good.text"
Sending        lgj-0.1/src/good.txt
Transmitting file data .
Committed revision 2. ---版本号已经变成2

add命令

新增文件或文件夹到本地副本,然后通过add上传到资料库。

[root@localhost li]# cp -a cpp /root/project/ --- 复制一个已有的文件夹到本地副本
[root@localhost li]# cd
[root@localhost ~]# cd project/ 
[root@localhost project]# ls ---查看本地副本中已经复制进来“cpp”文件夹
cpp  lgj-0.1
[root@localhost project]# svn status --- 查看本地工作副本的状态
?       cpp --- 前面加问号的表示还未上传到资料库

[root@localhost project]# svn add cpp --- 上传到版本库
A         cpp
A         cpp/name.cpp
A         cpp/yardstolb.cpp
A         cpp/main.cpp
A         cpp/ttimes.cpp
A         cpp/name.h
A  (bin)  cpp/a.out
A         cpp/yardstolb.h
A         cpp/ttimes.h

[root@localhost project]# svn status --- 现在再用status命令,发现"?"已经变成了"A"
A       cpp
A       cpp/a.out
A       cpp/main.cpp
A       cpp/name.cpp
A       cpp/name.h
A       cpp/ttimes.cpp
A       cpp/ttimes.h
A       cpp/yardstolb.cpp
A       cpp/yardstolb.h

若要在這底下创建新的目錄, 可以通过 `svn mkdir <dir name>` , 或是先開好目錄, 再透過 `svn add <dir name>` 亦可.


export命令:

如果想查看之前某个版本的代码,就得从服务器资料库导出指定版本的代码,就要用到export这个命令。

[root@localhost project]# svn export [-r REV] URL[@PEGREV] [PATH]

从 URL 指定的版本库,导出一个干净的目录树到 PATH。如果有指定REV 的话,内容即为该版本的,否则就是 HEAD 版本。如果 PATH被省略的话,URL的最后部份会被用来当成本地的目录名称


查看SVN修改历史及版本:

1.查看各个版本修改的信息:

#:svn log -r r1:r4

------------------------------------------------------------------------
r1 | root | 2014-05-15 23:12:08 +0800 (Thu, 15 May 2014) | 1 line


initial import-----还记得commit命令 -m “********” 自己写的log信息吗?在这里显示的就是-m后面引号里面自己写的内容。
------------------------------------------------------------------------
r2 | root | 2014-05-16 21:20:49 +0800 (Fri, 16 May 2014) | 1 line


modify good.text
------------------------------------------------------------------------
r3 | root | 2014-06-17 22:42:25 +0800 (Tue, 17 Jun 2014) | 1 line


modify main.c-add enum
------------------------------------------------------------------------
r4 | root | 2014-07-15 21:58:15 +0800 (Tue, 15 Jul 2014) | 1 line


cpp file make
------------------------------------------------------------------------

2.查看不同版本中具体文件差异:svn diff

#:svn diff -r 2:3 rule.txt,就是用来比较svn工作版本中版本号2和3的这个文件的变化;

3. 查看某版本中具体文件的内容:svn cat

如果只是希望检查一个过去版本,不希望查看他们的区别,可使用svn cat

#:svn cat -r 2 rule,txt  ,就是用来查看版本2中rule.txt的内容

4.查看版本库中文件list:svn list


常见错误:

1. commit 错误之“is scheduled for addition, but is missing”:

svn: E155010: Commit failed (details follow):
svn: E155010: '/root/project/cpp/a.out' is scheduled for addition, but is missing

原因:有一个文件已经加入到版本库中,但是后来在文件系统中又移除了这个文件,所以不能够提交。

 解决方法:# svn revert /root/project/cpp/a.out------执行revert命令
                   Reverted 'cpp/a.out'-----显示Reverted,即表示成功。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值