基本操作
更新代码:
svn up
提交代码: 先执行add再commit,就是同git类似:
svn add file
, 之后svn commit -m "LogMessage" file
删除文件:先delete再commit,
svn delete test.php
然后再svn ci -m 'delete test file'
。这样就解除了SVN对这个文件的管理,但是svn 删除某文件前,应当保证该文件的修改已经提交,否则会删除失败未提交代码时,取消对代码修改:如果在当前目录下,要撤销某文件的修改:
svn revert file.cpp
如果撤销本目录所有文件修改:svn revert -R .
,撤销成功会有提示,否则就是失败查看提交历史:
svn log file.cpp
,查看目录的历史也是这个,但版本可能是不连续的,因为某些版本只改一个文件,文件夹的版本没有改变查看工作目录的SVN信息:Win或Linux系统下,在工作目录下,打开命令行执行
svn info
,可用于relocate或update前后确认目录是否更新。
更改SVN默认编辑器
一般在Linux上,SVN用的是nano编辑器,非常不方便,修改使用命令svn update-alternatives --config editor
星号标出了当前使用的编辑器,选择4就改成了VIM
还原到某个版本
先用svn log
查看文件的提交历史,找到需要的版本,比如我们打算把test.cpp
从966版本退回到955
目前有三个版本:1
2
3
4
5
6
7
8
9
10
11
12
13 svn log test.cpp
-------------------------------
r966 | user | 2019-03-25 09:31:29 +0800 (一, 2019-03-25) | 1 行
3
-------------------------------
r965 | user | 2019-03-25 09:31:16 +0800 (一, 2019-03-25) | 1 行
2
-------------------------------
r950 | user | 2019-03-22 11:19:08 +0800 (五, 2019-03-22) | 1 行
------------------------------------------------------------------------
先看一个常见的 错误用法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16svn up test.cpp -r 950
#正在升级 'test.cpp':
U test.cpp
#更新到版本 950。
cat test.cpp // 950版本的内容
#111111111
// 这样返回到旧版本,但修改后再提交会失败
vim test.cpp // 做修改
svn ci test.cpp -m "4" //再提交
# ---------结果会报错---------
# 正在发送 test.cpp
# 传输文件数据 .svn: E155011: 提交失败(细节如下):
# svn: E155011: 文件“/home/user/work/workspace/src/test.cpp” 已经过时
# svn: E170004: File '/workspace/src/test.cpp' is out of date
正确做法
- 先更新到最新版本, 版本966
反向合并到旧版本
现在内容是950,但版本是966现在修改文件再提交,版本就是967了
同样地,反向合并目录下所有改动过的文件: svn merge -r 966:950 .
查看文件和目录的状态
svn status path
,?
不在svn的控制中;M
内容被修改;C
发生冲突;A
预定加入到版本库;K
被锁定
最好除了?外不要有其他标志
删除分支
右击已经存在的SVN项目->repo browser,弹出框的左边选择需要删除的分支右击->delete
锁定服务器文件
有的特殊文件不适合修改,所以锁定,防止各个客户端的提交修改,使用命令svn lock file
命令行实现relocate
命令:1
svn sw --relocate Old_Path New_Path
会要求输入用户名和密码
参考:命令行重定位SVN地址
查看目录下所有状态异常的文件
在目录下使用svn status
查看即可,如果只看冲突标志,使用 svn status | grep -P '^(?=.{0,6}C)'