1
0
Fork 0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-11-17 19:30:10 +00:00

feat(update): allow updating from branch set up on install

Closes #8788

Co-authored-by: Nikolas Garofil <nikolas@garofil.be>
This commit is contained in:
Marc Cornellà 2021-09-09 12:57:59 +02:00
parent 7ded6752fd
commit 098bcda691
No known key found for this signature in database
GPG key ID: 0314585E776A9C1B
2 changed files with 37 additions and 22 deletions

View file

@ -53,7 +53,7 @@ KEEP_ZSHRC=${KEEP_ZSHRC:-no}
command_exists() { command_exists() {
command -v "$@" >/dev/null 2>&1 command -v "$@" >/dev/null 2>&1
} }
fmt_error() { fmt_error() {
@ -65,27 +65,27 @@ fmt_underline() {
} }
fmt_code() { fmt_code() {
# shellcheck disable=SC2016 # backtic in single-quote # shellcheck disable=SC2016 # backtick in single-quote
printf '`\033[38;5;247m%s%s`\n' "$*" "$RESET" printf '`\033[38;5;247m%s%s`\n' "$*" "$RESET"
} }
setup_color() { setup_color() {
# Only use colors if connected to a terminal # Only use colors if connected to a terminal
if [ -t 1 ]; then if [ -t 1 ]; then
RED=$(printf '\033[31m') RED=$(printf '\033[31m')
GREEN=$(printf '\033[32m') GREEN=$(printf '\033[32m')
YELLOW=$(printf '\033[33m') YELLOW=$(printf '\033[33m')
BLUE=$(printf '\033[34m') BLUE=$(printf '\033[34m')
BOLD=$(printf '\033[1m') BOLD=$(printf '\033[1m')
RESET=$(printf '\033[m') RESET=$(printf '\033[m')
else else
RED="" RED=""
GREEN="" GREEN=""
YELLOW="" YELLOW=""
BLUE="" BLUE=""
BOLD="" BOLD=""
RESET="" RESET=""
fi fi
} }
setup_ohmyzsh() { setup_ohmyzsh() {
@ -114,6 +114,8 @@ setup_ohmyzsh() {
-c fsck.zeroPaddedFilemode=ignore \ -c fsck.zeroPaddedFilemode=ignore \
-c fetch.fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \
-c receive.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \
-c oh-my-zsh.remote=origin \
-c oh-my-zsh.branch="$BRANCH" \
--depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || {
fmt_error "git clone of oh-my-zsh repo failed" fmt_error "git clone of oh-my-zsh repo failed"
exit 1 exit 1
@ -157,9 +159,9 @@ setup_zshrc() {
sed "/^export ZSH=/ c\\ sed "/^export ZSH=/ c\\
export ZSH=\"$ZSH\" export ZSH=\"$ZSH\"
" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp " "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp
mv -f ~/.zshrc-omztemp ~/.zshrc mv -f ~/.zshrc-omztemp ~/.zshrc
echo echo
} }
setup_shell() { setup_shell() {

View file

@ -66,10 +66,20 @@ git config rebase.autoStash true
local ret=0 local ret=0
# repository settings
remote=${"$(git config --local oh-my-zsh.remote)":-origin}
branch=${"$(git config --local oh-my-zsh.branch)":-master}
# repository state
last_head=$(git symbolic-ref --quiet --short HEAD || git rev-parse HEAD)
# checkout update branch
git checkout -q "$branch" -- || exit 1
# branch commit before update (used in changelog)
last_commit=$(git rev-parse "$branch")
# Update Oh My Zsh # Update Oh My Zsh
printf "${BLUE}%s${RESET}\n" "Updating Oh My Zsh" printf "${BLUE}%s${RESET}\n" "Updating Oh My Zsh"
last_commit=$(git rev-parse HEAD) if git pull --rebase --stat $remote $branch; then
if git pull --rebase --stat origin master; then
# Check if it was really updated or not # Check if it was really updated or not
if [[ "$(git rev-parse HEAD)" = "$last_commit" ]]; then if [[ "$(git rev-parse HEAD)" = "$last_commit" ]]; then
message="Oh My Zsh is already at the latest version." message="Oh My Zsh is already at the latest version."
@ -103,6 +113,9 @@ else
printf "${RED}%s${RESET}\n" 'There was an error updating. Try again later?' printf "${RED}%s${RESET}\n" 'There was an error updating. Try again later?'
fi fi
# go back to HEAD previous to update
git checkout -q "$last_head" --
# Unset git-config values set just for the upgrade # Unset git-config values set just for the upgrade
case "$resetAutoStash" in case "$resetAutoStash" in
"") git config --unset rebase.autoStash ;; "") git config --unset rebase.autoStash ;;