From f38d7b2603ad225bf4e43480470956db9d8dc0f5 Mon Sep 17 00:00:00 2001
From: Mark Hall <mark.hall@work.room3b.eu>
Date: Thu, 12 Mar 2020 10:07:45 +0000
Subject: [PATCH] Handle merge errors more cleanly

---
 CHANGES.md                 |  2 ++
 editor/views/repository.py | 16 ++++++++++------
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index 0c70ac6..944a7ae 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 1dd45c2..8b6da68 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)
-- 
GitLab