git.zsh
1 #- 2 # Copyright (c) 2023-2025 The HardenedBSD Project 3 # 4 # Redistribution and use in source and binary forms, with or without 5 # modification, are permitted provided that the following conditions 6 # are met: 7 # 1. Redistributions of source code must retain the above copyright 8 # notice, this list of conditions and the following disclaimer. 9 # 2. Redistributions in binary form must reproduce the above copyright 10 # notice, this list of conditions and the following disclaimer in the 11 # documentation and/or other materials provided with the distribution. 12 # 13 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 # SUCH DAMAGE. 24 # 25 # Author: Shawn Webb <shawn.webb@hardenedbsd.org> 26 27 function clean_src() { 28 ( 29 local name 30 31 name=${BRANCH} 32 33 cd ${SRCDIR} 34 if [ ${QUARTERLY} -eq 1 ]; then 35 name=$(get_quarterly_branch_name) 36 fi 37 38 git reset --hard origin/${name} 39 git clean -fxxd 40 git reset --hard 41 ) 42 } 43 44 function fetch_src() { 45 clean_src 46 47 ( 48 set -ex 49 50 cd ${SRCDIR} 51 if [ ${QUARTERLY} -eq 1 ]; then 52 name=$(get_quarterly_branch_name) 53 git fetch 54 if ! git branch -r | grep -q ${name}; then 55 echo "[-] Quarterly branch ${name} does not exist" 56 exit 1 57 fi 58 if ! git branch --show-current | grep -q ${name}; then 59 git checkout -b ${name} origin/${name} 60 fi 61 # One final git pull for good measure 62 git pull 63 else 64 ${GIT} pull 65 fi 66 git clean -fxxd 67 ) 68 69 return ${?} 70 }