diff --git a/CHANGES.md b/CHANGES.md index 0c70ac62046a1078716d3a9acae73aac2dcf08a5..944a7ae80b5f5e22ba59dfd78aad514bdf3a62cc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,8 @@ ## Development (): +* **Bugfix**: Handle git merge errors more cleanly + ## 0.9.4 (11.03.2020): * **New**: Added support for marking up signatures diff --git a/editor/views/repository.py b/editor/views/repository.py index 1dd45c27f7db9a6589d701ffd77369767f2913e3..8b6da686fcf14cc337c172f931080e557ef089c2 100644 --- a/editor/views/repository.py +++ b/editor/views/repository.py @@ -51,6 +51,7 @@ def repository(request, rid): repo.remotes.origin.fetch() repo.remotes.origin.pull() except: + repo.git.checkout('--') errors.append({'msg': _('Fetching changes failed'), 'level': 'alert'}) try: @@ -107,10 +108,13 @@ def local_merge(request, rid): repository.heads.master.checkout() repository.remotes.origin.pull() repository.heads[request.user.username].checkout() - # Merge them in - repository.git.merge('master') - # Pull any branch changes - repository.remotes.origin.pull() - # Push all changes - repository.remotes.origin.push() + try: + # Merge them in + repository.git.merge('master') + # Pull any branch changes + repository.remotes.origin.pull() + # Push all changes + repository.remotes.origin.push() + except: + repository.git.merge('--abort') return HttpResponse('', status=200)