天天看点

linux svn常用命令总结

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

    • 1.将文件检出到本地目录(svn checkout)
    • 2.添加新文件(svn add)
    • 3.提交(svn commit)
    • 4.批量删除(svn delete)
    • 5.svn版本库修改URL路径
    • 6.查看版本日志(svn log)
    • 7.版本比较(svn diff)
    • 8.版本更新(svn up)
    • 9.版本回退
    • 10.日志变更

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

例如:

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

注意:

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

2.添加新文件(svn add)

svn add 文件名
           

例如:

注意:

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

批量添加

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

svn add *
           

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

3.提交(svn commit)

例如:

4.批量删除(svn delete)

5.svn版本库修改URL路径

  • windows TortoiseSVN客户端

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

  • Linux客户端

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

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

7.版本比较(svn diff)

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

8.版本更新(svn up)

svn up

时可能出现以下选项:

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

9.版本回退

有两种方法:

svn up

svn 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,如图:

linux svn常用命令总结

点击Edit,输入下面的内容,然后保存

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

如图:

linux svn常用命令总结

点击ok,然后就可以修改已经提交的log内容了!

如果在windows下,使用TortoiseSVN客户端,选中代码目录,右键点击

show log

,然后在列出的日志中,选择要修改的那个版本右键选择

Edit log message

继续阅读