diff options
author | Alexander Sulfrian <alexander.sulfrian@fu-berlin.de> | 2012-07-16 18:07:09 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander.sulfrian@fu-berlin.de> | 2012-07-16 18:07:09 +0200 |
commit | f56cbb49ea403b61662ae501c1e78cbf98969adf (patch) | |
tree | 0a204052d0b3062b380d50719d83b6c2dd480cf2 /bashrc/main.sh | |
parent | 7cf492945368ecaf37815744f4cc756aac455c31 (diff) | |
download | dotfiles-f56cbb49ea403b61662ae501c1e78cbf98969adf.tar.gz dotfiles-f56cbb49ea403b61662ae501c1e78cbf98969adf.tar.xz dotfiles-f56cbb49ea403b61662ae501c1e78cbf98969adf.zip |
bashrc/main: use rebase to preserve local commits
Diffstat (limited to 'bashrc/main.sh')
-rw-r--r-- | bashrc/main.sh | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/bashrc/main.sh b/bashrc/main.sh index 01ca309..9883ca9 100644 --- a/bashrc/main.sh +++ b/bashrc/main.sh @@ -44,12 +44,13 @@ _self_update() { echo -ne "\033[31m*\033[0m dotfile updates found, merge now? (Y/n) " read _merge; if [[ $_merge != 'n' ]]; then - _local_commits="$(git rev-list old-origin..HEAD | xargs echo)" _local_changes="$(git status | grep '^# Change')" + _old_origin="$(git rev-list old-origin | head -n1)" + _old_head="$(git rev-list HEAD | head -n1)" - if [[ -n "$_local_commits" ]]; then - echo -e "\033[31m*\033[0m You have some local commits. I will now try to use the new origin/master" - echo " and apply the extra commits afterwards." + if [[ "$_old_origin" != "$_old_head" ]]; then + echo -e "\033[31m*\033[0m You have some local commits. I will now try to rebase them" + echo " onto the new origin/master." fi if [[ -n "$_local_changes" ]]; then @@ -64,9 +65,9 @@ _self_update() { git tag -d old-origin >/dev/null 2>&1 git tag old-origin origin-master >/dev/null 2>&1 - if [[ -n "$_local_commits" ]]; then - echo -e "\033[33m*\033[0m cherry-pick: $_local_commits" - git cherry-pick $_local_commits >/dev/null || return + if [[ "$_old_origin" != "$_old_head" ]]; then + echo -e "\033[33m*\033[0m git rebase --onto HEAD $_old_origin $_old_head" + git rebase --onto origin/master $_old_origin $_old_head || return fi if [[ -n "$_local_changes" ]]; then |