svn常用快捷命令集合。

  在把分支merge回主干的时候,有时候需要只提交自己修改过的文件,但是很多文件其实分支上没动过,但却显示有变化,这个其实是属性发生了变化。svn通过svn:mergeinfo来记录merge的记录。所以有时候需要把只有属性变化的文件给revert掉。这个时候可以用下面的命令:

        -v:简介。-m:接受我的冲突。-t:接受他的冲突.-r:revert
        svnopc:显示只有属性冲突的文件。可接受参数-v,-m,-t.
        svnopm:显示只有属性发生变化的文件。可接受参数-r.
        svnc:显示所有冲突文件。可接受-m,-t.
        svnmm:merge主干
        svnmb:接受一个分支url参数,将分支merge回主干。
        mysvnhelp:显示此段话。

  注意的是,svn树冲突不支持用resolve -tc,resolve -mc的选项。需要

svn st | gawk ‘/^ M/{print $0}‘| gawk ‘{print $NF}‘ | xargs svn revert

从svn help st可以看到第二栏目标的是属性变化,如果你没有更改过文件的属性,那么可以通过这个命令可以把只有属性变化的文件revert掉。

  但是如果文件名含有‘@‘的话,需要再文件名后添加个‘@‘。因此svn st 可以改成

svn st | gawk ‘/@/{print $0"@"} !/@/{print $0}‘

  有时候需要查看一下都有哪些冲突文件,可以通过以下命令

svn st | gawk  --re-interval ‘!/^[^C]{7,7}/{ print $0}‘

svn st 第一栏的显示的是内容的状态,第二栏是属性状态,第七栏则是树冲突。

  如果查看只有属性冲突的文件可以用svn st | gawk ‘/^[^C]C/{print $0}‘

  可以用alias 把这些常用的命令写成一个快捷的命令,写在~/.bash_profile里面。

我写了几个常用的快捷命令。支持以下几个功能。svnmm需要自己设定下主干的位置,其实是可以通过 svn log -v --stop-on-copy来截取出主干位置,但不如直接设定成一个固定命令。svnmm和svnmb都直接使用--accept p。svn属性冲突的内容会写在confictfilename.prej里面。这边用svnopc -v可以查看属性冲突文件的前两行。通常前两行就是概括冲突原因.

        -v:简介。-m:接受我的冲突。-t:接受他的冲突.-r:revert
        svnopc:显示只有属性冲突的文件。可接受参数-v,-m,-t.
        svnopm:显示只有属性发生变化的文件。可接受参数-r.
        svnc:显示所有冲突文件。可接受-m,-t.
        svnmm:merge主干
        svnmb:接受一个分支url参数,将分支merge回主干。
        mysvnhelp:显示此段话。

截几个图显示一下。svnopc -v

svnc -t

export PATH=/opt/subversion/bin:$PATH
master="http:yoursvn"
function myhelp_fn(){

    echo ‘
        -v:简介。-m:接受我的冲突。-t:接受他的冲突.-r:revert
        svnopc:显示只有属性冲突的文件。可接受参数-v,-m,-t.以及具体的文件名,如果是具体的文件名就会把.prej文件一起打出来。
        svnopm:显示只有属性发生变化的文件。可接受参数-r.
        svnc:显示所有冲突文件。可接受-m,-t.
        svnmm:merge主干
        svnmb:接受一个分支url参数,将分支merge回主干。
        mysvnhelp:显示此段话。

    ‘

}
alias mysvnhelp=myhelp_fn
alias svnstat="svn st | gawk ‘/@/{print \$0\"@\"} !/@/{print \$0}‘"
function svnopc_fn(){
    IFS=$‘\n‘
    local pcFiles=`svn st | gawk ‘/^[^C]C/{print $0}‘`
    if [ $# -eq 0 ] ; then
        printf ‘%s\n‘ "${pcFiles[@]}"
    fi
    if [ $# -eq 1 ] && [ $1 == ‘-v‘ ] ; then
        for i in "${pcFiles[@]}"
        do
            printf ‘%s \n‘ $i | gawk ‘{print $NF".prej"}‘ | xargs head -n 2
        done
    fi
    if [ $# -eq 1 ] && [ $1 == ‘-m‘ ] ; then
        printf ‘%s\n‘ "${pcFiles[@]}" | gawk ‘{print $NF}‘ | xargs svn resolve --accept mc
    fi
    if [ $# -eq 1 ] && [ $1 == ‘-t‘ ] ; then
        printf ‘%s\n‘ "${pcFiles[@]}" | gawk ‘{print $NF}‘ | xargs svn resolve --accept tc
    fi

    if [ $# -eq 1 ] && [ -a $1 ] && [ -a "$1.prej" ]; then
        cat $1".prej"
    fi
    unset IFS
}
alias svnopc=svnopc_fn
function svnopm_fn(){
    if [ $# -eq 0 ] ; then
        svn st | gawk ‘/^ M/{print $0}‘
    fi
    if [ $# -eq 1 ] && [ $1 == ‘-r‘ ] ; then
        svn stat | gawk ‘/^ M/{print $0}‘| gawk ‘{print $NF}‘ | xargs svn revert
    fi

}

alias svnopm=svnopm_fn
function svnc_fn(){
    if [ $# -eq 0 ] ; then
        svn st | gawk  --re-interval ‘!/^[^C]{7,7}/{ print $0}‘
    fi

    if [ $# -eq 1 ] && [ $1 == ‘-m‘ ] ; then
        svnstat | gawk --re-interval ‘!/^[^C]{7,7}/{print $NF}‘ |  xargs svn resolve --accept mc
    fi
    if [ $# -eq 1 ] && [ $1 == ‘-t‘ ] ; then
        svnstat | gawk --re-interval ‘!/^[^C]{7,7}/{print $NF}‘ |  xargs svn resolve --accept tc
    fi

}
alias svnc=svnc_fn
alias svnmm=‘echo $master | xargs bash -c "echo \$0 &&svn merge \$0 --accept p " ‘
alias svnmb=‘svn merge --accept p --reintegrate‘
alias sourceup=‘source ~/.bash_profile‘
时间: 2024-11-06 00:50:38

svn常用快捷命令集合。的相关文章

Sublime Text常用快捷命令整理

时间:2014.05.23 地点:基地 --------------------------------------------------------------------------------- 一.常用快捷键 1.Tools下的Command Palette 快捷键就是:Ctrl+Shift+P 输入命令回车后便可执行. 2.文件切换 Ctrl+P 3.快速跳转到相应的函数 Ctrl+R (用Ctrl+P后跟@也可,其实Ctrl+R只是会自动在文本框里加上@而已,不过个人喜欢用Ctrl

Eclipse常用快捷命令

1.VS.Chrome.Eclipse调试命令对比: VS: F5: 继续运行 F10: 单步执行 F11: 进入函数内部 Shift + F11: 由函数内部返回调用处 Chrome: F8: 继续运行 F10: 单步执行 F11: 进入函数内部 Shift + F11: 由函数内部返回调用处 Eclipse: F5: 进入函数内部 F6: 单步执行 F7: 由函数内部返回调用处 F8: 运行至下一个断点 F11: 调试运行 Ctrl + F11: 直接运行 2.Eclipse常用快捷命令 窗

VIM常用快捷命令

Since the 70′s, vi and vim are very popular text editors among programmers. 5 years ago, I wrote an article named "100 vim commands every programmer should know" and here is a reworked, updated version. Enjoy! Basics :e filename Open filename fo

SVN常用的命令

SVN是一个开源的版本控制系统,它是一种集中式的版本控制系统,工作时需要联网:而现在比较流行的Git是一种分布式的版本控制系统,关于两者的比较可以参考SVN和Git的比较 下面只是来介绍下SVN中常用的命令,我安装的版本是Ubuntu 12.04 SVN 1.7 一.如果不清楚SVN可以使用哪些命令,只要help就会列出所有的命令,但常用的命令只有几个而已 svn help - Help! 别名:?,h 描述:显示帮助信息 访问库:否. eg: [email protected]:~/D/dzt

svn常用维护命令

公司版本管理同时用的svn和gitlab,有互补作用 这边写一写慢慢积累自己用过的svn常用维护 查看版本范围之间的变化: [[email protected] mnt]# svn log -r 4500:4501 -v svn://192.168.2.82/zhuanti/ ------------------------------------------------------------------------ r4500 | weiliangliang | 2016-08-17 10:

vi常用快捷命令大全

现在越来越多的智能IDE出现在工作当中,想必很少有人使用vi了吧,不过在某些场合下 ,vi还是一个必不可少的工具,其中就包括了许多好用的快捷命令,而且有些IDE如Qt还集成了vi.大家都知道,vi有三种模式:一般模式.编辑模式和指令模式,下面总结vi在这三种模式下的快捷命令. 1.一般模式 光标移动-- h.j.k.l:作用分别与键盘左.上.下.右键一样,光标左右移动一个字符或者上下移动一行,前面可加一个正数n,表示光标左右移动n个字符或者上下移动n行. Ctrl + f:作用同PgDn键,向下

windows常用快捷命令

打开控制面板 control.exe 1.操作中心 wscui.cpl 2.Windows防火墙 Firewall.cpl 3.设备管理器 hdwwiz.cpl 4.Internet属性 inetcpl.cpl 5.屏幕分辨率 desk.cpl 6.鼠标属性 main.cpl 7.声音mmsys.cpl 8.电源选项 powercfg.cpl 9.日期和时间 timedate.cpl 10.区域和语言 intl.cpl 11.程序和功能 appwiz.cpl 12.笔和触摸 TabletPC.c

notepad++常用快捷命令

Notepad++常用命令: 1.      Ctrl-D 复制当前行 2.      Ctrl-L 删除当前行3.      Ctrl-T 将当前行与前一行互换4.      Ctrl-Shift-Down下移当前行5.      Ctrl-G 跳转6.      Ctrl+F 键查找对话框启动7.      Ctrl+F3 选定查找下一个8.      Ctrl+shift+F3 选定查找上一个9.      Shift+上下左右  块选择10.  Ctrl+Shift+S 保存所有文件11

svn 常用控制台命令解析

参数说明 :serverPath:表示服务器的文件路径 ,  localPath:表示本地的文件路径  , num 表示数字 , edition1:表示工程已经跟新的版本1 , edition2:表示工程已经跟新的版本2 , 1.从服务端导出相应的工程与文件夹: 步骤:先在本地进入想要导出到的目录下,然后执行命令:svn checkout serverPath 说明:使用此方式导出的工程文件受到svn版本控制与版本库保持关联,工程中存在隐藏文件.svn,可以进行svn的其他操作. 2.从服务器导