diff --git a/update_repos b/update_repos
index 01edc325507f1ee104284fa6a5f0eb7790bdb41e..27c9261e55033745c53c5f67ff0daf048daeee3e 100755
--- a/update_repos
+++ b/update_repos
@@ -22,6 +22,7 @@ GIT_CLONE_CMD = 'git clone %s %s %s'
 GIT_CLONE_API_URL = 'https://%s@github.com/%s'
 GIT_SHA_CMD = 'git rev-parse --short %s'
 GIT_FETCH_CMD = 'git fetch'
+GIT_CHECK_REMOTE_CMD = 'git ls-remote'
 
 USER_DETAILS_PATH = '/users/%s'
 
@@ -166,10 +167,22 @@ class CodeRepo(object):
         print("- " + get_color_str(branch, Color.GREEN) + " @ " \
                 + self.get_sha_str(branch, directory) + ' ..'),
 
-    def update(self):
+    def update(self, fatal_remote_errors = True):
         if self.try_clone(False):
             return
 
+        # Check if the remote is still there before fetching
+        return_code = system_exec(GIT_CHECK_REMOTE_CMD, self.target_directory, show_output=False, ignore_error=True).return_code
+        if return_code != 0:
+            # Is it fatal?
+            if fatal_remote_errors:
+                error_message = get_color_str("ERROR: Repo for %s seems to have been deleted. Skipping update." % self.full_name, Color.RED)
+                print error_message
+                raise Exception(error_message)
+            else:
+                print get_color_str("WARNING: Repo for %s seems to have been deleted. Skipping update." % self.full_name, Color.GREEN)
+                return
+
         self.print_start_sha(self.default_branch, self.target_directory)
         system_exec(GIT_FETCH_CMD, self.target_directory, False)
         print self.get_sha_str(self.default_branch, self.target_directory)
@@ -200,6 +213,9 @@ class WikiRepo(CodeRepo):
         # GitRepo clone code, but allow it to fail.
         return CodeRepo.try_clone(self, True)
 
+    def update(self):
+        super(WikiRepo, self).update(fatal_remote_errors = False)
+
 class JsonRepo(object):
     def __init__(self, gh_repo, api_url, config, content=None):
         self.config = config