Browse Source

Sujith :) ->
1. Handled small stash apply use cases

sujith 1 month ago
parent
commit
5b340ca371

+ 11 - 1
Assets/Better Git/Arbitrator/Editor/GUI/ArbitratorController.cs

@@ -326,6 +326,7 @@ namespace Terra.Arbitrator.GUI
                     FinishOperation();
                     Refresh();
                     EditorApplication.UnlockReloadAssemblies();
+                    AssetDatabase.Refresh();
                 });
         }
 
@@ -437,6 +438,7 @@ namespace Terra.Arbitrator.GUI
         private void HandleOperationError(Exception ex)
         {
             ErrorMessage = $"Operation Failed: {ex.Message}";
+            Debug.LogException(ex);
         }
         
         private void FinishOperation()
@@ -559,15 +561,18 @@ namespace Terra.Arbitrator.GUI
             GitService.AnalyzeStashConflicts()
                 .Then(analysisResult =>
                 {
+                    Debug.Log($"Any conflicts? {analysisResult.HasConflicts}");
                     FinishOperation();
                     if (analysisResult.HasConflicts)
                     {
+                        
                         var conflictSource = new StashConflictSource();
                         GitService.GetStashedFiles().Then(stashedFiles =>
                         {
                             var conflictingChanges = stashedFiles
                                 .Where(sf => analysisResult.ConflictingFiles.Contains(sf.FilePath))
                                 .ToList();
+                            Debug.Log($"Found {conflictingChanges.Count} conflicting files. Showing window.");
                             ConflictResolutionWindow.ShowWindow(this, conflictingChanges, conflictSource);
                         });
                     }
@@ -583,7 +588,12 @@ namespace Terra.Arbitrator.GUI
                     }
                 })
                 .Catch(HandleOperationError)
-                .Finally(FinishOperation);
+                .Finally(() =>
+                {
+                    FinishOperation();
+                    Refresh();
+                    AssetDatabase.Refresh();
+                });
         }
         
         private bool CancelOperationIfUnsavedScenes()

+ 3 - 1
Assets/Better Git/Arbitrator/Editor/Services/GitExecutors.cs

@@ -266,7 +266,9 @@ namespace Terra.Arbitrator.Services
                     return;
                 }
 
-                var stashedChanges = new HashSet<string>(repo.Diff.Compare<TreeChanges>(stash.Base.Tree, stash.Index.Tree).Select(c => c.Path));
+                var workTreeChanges = repo.Diff.Compare<TreeChanges>(stash.Base.Tree, stash.WorkTree.Tree).Select(c => c.Path);
+                var indexChanges = repo.Diff.Compare<TreeChanges>(stash.Base.Tree, stash.Index.Tree).Select(c => c.Path);
+                var stashedChanges = new HashSet<string>(workTreeChanges.Union(indexChanges));
 
                 var localChanges = new HashSet<string>(repo.RetrieveStatus().Where(s => s.State != FileStatus.Ignored).Select(s => s.FilePath));