mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
package/scripts/postinstall: avoid writing to ~/.gitconfig
We can eliminate permission issues by not touching `~/.gitconfig` at all. Fixes #17067.
This commit is contained in:
parent
a21c71fa97
commit
b516fda8be
@ -21,35 +21,15 @@ 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
|
# use `git -c key=value` to avoid writing to Git's global config
|
||||||
set_git_safe_directory() {
|
# https://github.com/Homebrew/brew/issues/17067
|
||||||
if git config --global --get-all safe.directory | grep -q "${1}"
|
git=(git -c "safe.directory=${homebrew_directory}")
|
||||||
then
|
|
||||||
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[@]}" 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}"
|
|
||||||
|
|
||||||
# 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 +39,8 @@ 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
|
"${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
|
|
||||||
else
|
else
|
||||||
mkdir -vp /usr/local/bin
|
mkdir -vp /usr/local/bin
|
||||||
mv "${homebrew_directory}" "/usr/local/Homebrew/"
|
mv "${homebrew_directory}" "/usr/local/Homebrew/"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user