diff --git a/.gitignore b/.gitignore
index ef7f8a307b3ae1a51d78bae4aac8cb9515af48bb..a2e5dcfcfc1c5eb136803444559ada488839329a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,6 +43,7 @@ project.lock.json
 /HttpSysServer/
 /IISIntegration/
 /Identity/
+/IdentityService/
 /JsonPatch/
 /KestrelHttpServer/
 /Localization/
diff --git a/makefile.shade b/makefile.shade
index d4f8a897c9b8db6c225dd9e79acaa0265a0c4307..123cc37d816cdd0e99e6344f6184bc11e9dde087 100644
--- a/makefile.shade
+++ b/makefile.shade
@@ -92,10 +92,24 @@ var buildTarget = "compile"
 
 #update
     @{
+        var errors = new List<string>();
         Parallel.ForEach(repositories, repo =>
         {
-            Git("pull --ff-only", repo);
+            try
+            {
+                Git("pull --ff-only", repo);
+            }
+            catch
+            {
+                errors.Add(repo);
+            }
         });
+
+        if (errors.Count > 0)
+        {
+            Log.Info("Failed to pull: " + string.Join(", ", errors));
+            throw new InvalidOperationException("update failed");
+        }
     }
 
 #sync-commits
@@ -562,13 +576,13 @@ var buildTarget = "compile"
 
 #git-clean description='REMOVE ALL CHANGES to the working directory'
     @{
-        Console.WriteLine("This runs `git clean -xfd` in all non-Universe repos.");
-        Console.WriteLine("This should REMOVE ALL CHANGES to the working directory.");
-        Console.Write("***** Are you sure? ***** (Y or anything else)? ");
-        if (Console.ReadLine() != "Y")
-        {
-            throw new Exception("git-clean cancelled");
-        }
+        // Console.WriteLine("This runs `git clean -xfd` in all non-Universe repos.");
+        // Console.WriteLine("This should REMOVE ALL CHANGES to the working directory.");
+        // Console.Write("***** Are you sure? ***** (Y or anything else)? ");
+        // if (Console.ReadLine() != "Y")
+        // {
+        //     throw new Exception("git-clean cancelled");
+        // }
         foreach(var repo in repositories)
         {
             GitClean(repo);