gerrit_bash_commands.sh

https://github.com/tomwys/gerrit-bash-commands

 

gerrit_bash_commands.sh

复制代码
# Author: Tomasz Wysocki <tomasz@wysocki.info>
function workonbranch {
    if [ "$1" = "" ]
    then
        echo "Usage: workonbranch [branch name]"
        return 1
    fi
    if [ "$CURRENT_BRANCH" != "" ]
    then
        deactivatebranch
    fi
    _WORKONBRANCH_OLD_PS1="$PS1"
    CURRENT_BRANCH="$1"
    PS1="[$CURRENT_BRANCH]$PS1"
}

function deactivatebranch {
    _branch_check_if_active || return 1

    PS1="$_WORKONBRANCH_OLD_PS1"
    unset CURRENT_BRANCH
}

function _branch_check_if_active {
    if [ "$CURRENT_BRANCH" = "" ]
    then
        echo "No branch activated"
        return 1
    fi
    return 0
}

function branch_push_for {
    OPTIND=0
    RECIVE_PACK='git receive-pack'
    while getopts "r:" O; do
        case "$O" in
          r)
            RECIVE_PACK="$RECIVE_PACK --reviewer $OPTARG"
            ;;
          c)
            RECIVE_PACK="$RECIVE_PACK --cc $OPTARG"
            ;;
        esac
    done;
    shift $((OPTIND-1));
    _branch_check_if_active || return 1
    git push --receive-pack="$RECIVE_PACK" origin "HEAD:refs/for/$CURRENT_BRANCH" $@
}

function branch_push_heads {
    _branch_check_if_active || return 1
    git push origin "HEAD:refs/heads/$CURRENT_BRANCH" $@
}

function branch_push_drafts {
    _branch_check_if_active || return 1
    git push origin "HEAD:refs/drafts/$CURRENT_BRANCH" $@
}

function branch_checkout {
    if [ "$1" != "" ]
    then
        workonbranch $1
    fi
    _branch_check_if_active || return 1
    git fetch -p && git checkout "origin/$CURRENT_BRANCH"
}

function close_branch {
    if [ "$1" = "" ]
    then
        echo "close_branch [branch name]"
        exit 1
    fi
    branch_checkout master && git merge origin/$1 --no-ff && branch_push_heads && git push origin :refs/heads/$1
}

_complete_branch() {
    # bash-completion for branch name
    # based on: http://devmanual.gentoo.org/tasks-reference/completion/index.html
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts=$(git branch -r| grep origin | grep -v HEAD | sed 's/  origin\///')

    if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
_complete_user() {
    # bash-completion for git user
    # based on: http://devmanual.gentoo.org/tasks-reference/completion/index.html
    local cur prev opts
    COMPREPLY=()
    prev="${COMP_WORDS[$COMP_CWORD-1]}"
    cur="${COMP_WORDS[$COMP_CWORD]}"

    if [ "$prev" = "-r" -o "$prev" = "-c" ] ; then
        opts=$(git log --pretty=format:'%ae' | sort | uniq)
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _complete_branch workonbranch
complete -F _complete_branch branch_checkout
complete -F _complete_branch close_branch
complete -F _complete_user branch_push_for
复制代码

 

posted @   行走的思想  阅读(235)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示