Merge pull request #17068 from Homebrew/pkg-no-writing-to-gitconfig

package/scripts/postinstall: avoid writing to `~/.gitconfig`
This commit is contained in:
Mike McQuaid 2024-04-11 15:47:11 +01:00 committed by GitHub
commit e8b142da0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 25 deletions

View File

@ -146,6 +146,9 @@ jobs:
with: with:
name: "${{ needs.build.outputs.installer_path }}" name: "${{ needs.build.outputs.installer_path }}"
- name: Unset global Git safe directory setting
run: git config --global --unset-all safe.directory
- name: Remove existing Homebrew installations - name: Remove existing Homebrew installations
run: | run: |
sudo rm -rf brew /{usr/local,opt/homebrew}/{Cellar,Caskroom,Homebrew/Library/Taps} sudo rm -rf brew /{usr/local,opt/homebrew}/{Cellar,Caskroom,Homebrew/Library/Taps}

View File

@ -21,35 +21,18 @@ fi
# add Git to path # add Git to path
export PATH="/Library/Developer/CommandLineTools/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:${PATH}" export PATH="/Library/Developer/CommandLineTools/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:${PATH}"
# helpers for setting/unsetting Git's safe directory setting # avoid writing to user's global config file by overriding HOME
set_git_safe_directory() { # https://git-scm.com/docs/git-config#SCOPES
if git config --global --get-all safe.directory | grep -q "${1}" unset XDG_CONFIG_HOME
then export HOME="${homebrew_directory}"
return
fi
SET_GIT_SAFE_DIRECTORY="${1}"
git config --global --add safe.directory "${1}"
}
unset_git_safe_directory() {
if [[ -z "${SET_GIT_SAFE_DIRECTORY-}" ]]
then
return
fi
git config --global --unset safe.directory "${1}" || git config --global --unset-all safe.directory
if [[ ${SET_GIT_SAFE_DIRECTORY-} == "${1}" ]]
then
unset SET_GIT_SAFE_DIRECTORY
fi
}
# reset Git repository # reset Git repository
cd "${homebrew_directory}" cd "${homebrew_directory}"
set_git_safe_directory "${homebrew_directory}" git config --global --add safe.directory "${homebrew_directory}"
git reset --hard git reset --hard
git checkout --force master git checkout --force master
git branch | grep -v '\*' | xargs -n 1 git branch --delete --force || true git branch | grep -v '\*' | xargs -n 1 git branch --delete --force || true
unset_git_safe_directory "${homebrew_directory}" rm "${homebrew_directory}/.gitconfig"
# move to /usr/local if on x86_64 # move to /usr/local if on x86_64
if [[ $(uname -m) == "x86_64" ]] if [[ $(uname -m) == "x86_64" ]]
@ -59,10 +42,11 @@ then
cp -pRL "${homebrew_directory}/.git" "/usr/local/Homebrew/" cp -pRL "${homebrew_directory}/.git" "/usr/local/Homebrew/"
mv "${homebrew_directory}/cache_api" "/usr/local/Homebrew/" mv "${homebrew_directory}/cache_api" "/usr/local/Homebrew/"
set_git_safe_directory /usr/local/Homebrew export HOME="/usr/local/Homebrew"
git config --global --add safe.directory /usr/local/Homebrew
git -C /usr/local/Homebrew reset --hard git -C /usr/local/Homebrew reset --hard
git -C /usr/local/Homebrew checkout --force master git -C /usr/local/Homebrew checkout --force master
unset_git_safe_directory /usr/local/Homebrew rm /usr/local/Homebrew/.gitconfig
else else
mkdir -vp /usr/local/bin mkdir -vp /usr/local/bin
mv "${homebrew_directory}" "/usr/local/Homebrew/" mv "${homebrew_directory}" "/usr/local/Homebrew/"