/ lib / git.zsh
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  }