diff options
| author | Mike McQuaid | 2016-08-25 11:40:18 +0100 |
|---|---|---|
| committer | Mike McQuaid | 2016-08-25 11:45:59 +0100 |
| commit | 46a3003a2f48f9feb595c318446402af35021b83 (patch) | |
| tree | 7fc7de706ec19c0aeb789610d811e704611fdc2d /Library | |
| parent | df21e5717963f89352b2821edeab8aa3e8d4a549 (diff) | |
| download | brew-46a3003a2f48f9feb595c318446402af35021b83.tar.bz2 | |
update.sh: reset pre-stash, die if stash fails.
A `git reset --hard` without stashing first risks nuking in-progress
work. A `git reset --mixed` should allow stashing to occur more often
on e.g. merge conflicts.
Fixes #766.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/update.sh | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/Library/Homebrew/cmd/update.sh b/Library/Homebrew/cmd/update.sh index 7b57bde24..b052631fe 100644 --- a/Library/Homebrew/cmd/update.sh +++ b/Library/Homebrew/cmd/update.sh @@ -226,9 +226,18 @@ merge_or_rebase() { fi git merge --abort &>/dev/null git rebase --abort &>/dev/null - git -c "user.email=brew-update@localhost" \ - -c "user.name=brew update" \ - stash save --include-untracked "${QUIET_ARGS[@]}" + git reset --mixed "${QUIET_ARGS[@]}" + if ! git -c "user.email=brew-update@localhost" \ + -c "user.name=brew update" \ + stash save --include-untracked "${QUIET_ARGS[@]}" + then + odie <<EOS +Could not `git stash` in $DIR! +Please stash/commit manually if you need to keep your changes or, if not, run: + cd $DIR + git reset --hard origin/master +EOS + fi git reset --hard "${QUIET_ARGS[@]}" STASHED="1" fi |
