linux svn常用命令总结

2 篇文章 0 订阅

linux下常用的svn命令总结如下:


1.将文件检出到本地目录(svn checkout)

 svn checkout SVN服务器仓库的目录 [本地目录] --username 用户名

例如:

svn checkout https://PC-IZAR:8443/svn/test/ /home/test --username izar

注意:

  1. 本地目录不写的话会checkout到当前目录
  2. username前是两个连续的横线- -
  3. 用户名是你在SVN仓库中添加的用户

2.添加新文件(svn add)

svn add 文件名

例如:

svn add test.c

注意:
这里添加新文件并没有添加到svn repository,svn commit才是提交到svn仓库中
批量添加

svn status|grep ? |awk '{print $2}'|xargs svn add

还有就是命令svn add *会忽略所有已经在版本控制之下的目录

svn add *

有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的–force递归到版本化的目录下:

svn add * --force

3.提交(svn commit)

svn commit -m "版本更改注释/提交注释"

例如:

svn commit -m "修改了testfun函数"

4.批量删除(svn delete)

svn status|grep ! |awk '{print $2}'|xargs svn del

5.svn版本库修改URL路径

  • windows TortoiseSVN客户端
    在工作复本的根目录上右键->TortoiseSVN->重新定为(Relocate),然后修改URL

  • Linux客户端

svn sw --relocate svn://old_ip/目录 svn://new_ip目录

6.查看版本日志(svn log)

svn log           显示所有的svn版本日志
svn log -l2       显示最近2个版本的svn日志
svn log -v        显示所有的svn版本日志,并附有每个版本的改动内容
svn log -l2 -v    显示最近2个版本的svn日志,并附有每个版本的改动内容
svn log -r versionX:versionY  显示指定版本X到Y之间的,所有版本svn日志

7.版本比较(svn diff)

svn diff -r versionX:versionY  比较版本XY之间的不同

8.版本更新(svn up)

svn up时可能出现以下选项:

(p)  postpone           暂时推后处理,我可能要和那个和我冲突的家伙商量一番
(df) diff-full          把所有的修改列出来,比比看
(e)  edit               直接编辑冲突的文件
(mc) mine-conflict      如果你很有自信可以只用你的修改,把别人的修改干掉
(tc) theirs-conflict    底气不足,还是用别人修改的吧
(s)  show all options   显示其他可用的命令

9.版本回退

有两种方法:svn upsvn merge

svn up -r serversionX     更新到版本X

注意:使用svn up -r X回退到指定版本X时,回退完不能再svn up,因为此时svn up会由更新到最新版本了。

第一种情况:改动没有被提交(commit)。
这种情况下,使用svn revert就能取消之前的修改。
svn revert用法如下:
svn revert [-R] something
其中something可以是(目录或文件的)相对路径也可以是绝对路径。
当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动。
在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。
注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修改。

第二种情况:改动已经被提交(commit)。
这种情况下,用svn merge命令来进行回滚。
回滚的操作过程如下:
1、保证我们拿到的是最新代码:
svn update
假设最新版本号是28。
2、然后找出要回滚的确切版本号:
svn log [something]
假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目
如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something]
3、回滚到版本号25:
svn merge -r 28:25 something
为了保险起见,再次确认回滚的结果:
svn diff [something]
发现正确无误,提交。
4、提交回滚:
svn commit -m “Revert revision from r28 to r25,because of …”
提交后版本变成了29。
将以上操作总结为三条如下:
1. svn update,svn log,找到最新版本(latest revision)
2. 找到自己想要回滚的版本号(rollbak revision)
3. 用svn merge来回滚: svn merge -r : something


10.日志变更

linux下:

$svn propedit -r N --revprop svn:log URL   
$svn propset -r N --revprop svn:log "new log message" URL  

其中N是版本号,URL是代码仓库的路径,URL已经被电脑记录时,URL可略。
注意:如果遇到错误提示信息

DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent 
或
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook

解决办法:
windows 下的VisualSVN Server作为SVN的服务器。打开VisualSVN Server的管理界面,选择版本库,右击->properties->Hooks ->Pre revision property change hook,如图:
修改hooks
点击Edit,输入下面的内容,然后保存

SET REPOS="%1"
SET REV="%2"
SET USER="%3"
SET PROPNAME="%4"
SET ACTION="%5"
IF %ACTION% == "M" (IF %PROPNAME% == "svn:log" (EXIT 0))
ECHO "Changing revision properties %PROPNAME% is prohibited" >&2
EXIT 1

如图:
编辑Pre revision property change hook
点击ok,然后就可以修改已经提交的log内容了!

如果在windows下,使用TortoiseSVN客户端,选中代码目录,右键点击show log,然后在列出的日志中,选择要修改的那个版本右键选择Edit log message

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

izar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值