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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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编程运行原理