Resolve using mine causes erroneous warning and deletion of documents
0
We recently migrated our project to git versioning (Mendix version 9.24.1 – we can’t upgrade to 10 right now). In any merge conflicts where I attempt to ‘Resolve conflict using my whole document’ the below pop-up displays. It seems to think we’ve moved the document in question to/from a module but that is not the case. So it deletes the original and creates a duplicate, excluded document named: [original name]_RECOVERED. So we have to take additional steps when resolving conflicts ‘using my whole document’: Select ‘Restore as excluded duplicate’ from the pop-up (otherwise it won’t merge) Revert the deletion of the original document that Mendix deleted In doing this there is a Mendix error pop-up (see end of question) Delete the _RESTORED version Doing this series of steps seems to work but it doesn’t feel great since it’s very manual and seems very close to losing work. Does anyone else experience this even when they haven’t moved a document between modules? Is this a bug or do I just not understand git? The mendix error (doesn’t seem to be the cause just another symptom): System.InvalidOperationException: Collection was modified; enumeration operation may not execute. at System.Collections.Generic.List`1.Enumerator.MoveNextRare() at Mendix.Modeler.Projects.FolderBase.GetDocuments(Boolean recursive, Boolean includeExcluded)+MoveNext() in Mendix.Modeler.Core\Projects\Modules\FolderBase.cs:line 38 at Mendix.Modeler.Projects.FolderBase.GetDocuments(Boolean recursive, Boolean includeExcluded)+MoveNext() in Mendix.Modeler.Core\Projects\Modules\FolderBase.cs:line 39 at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Linq.Enumerable.CastIterator[TResult](IEnumerable source)+MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items) at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source) at Mendix.Modeler.Common.Identifier`1.VerifySingle[T](IEnumerable`1 _namedObjects) in Mendix.Modeler.Core\Common\Usages\IdentifierOfT.cs:line 49 at Mendix.Modeler.Common.IdentifierWithParent`3.ResolveUntypedUncached(IHasContext context) in Mendix.Modeler.Core\Common\Usages\IdentifierWithParent.cs:line 85 at Mendix.Modeler.Common.Identifier`1.ResolveUncached(IHasContext context) in Mendix.Modeler.Core\Common\Usages\IdentifierOfT.cs:line 29 at Mendix.Modeler.Common.ResolveCache.DoResolve[T](IIdentifier`1 targetId, IHasContext context) in Mendix.Modeler.Core\Common\Problems\ResolveCache.cs:line 131 at Mendix.Modeler.Common.ResolveCache.Resolve[T](IIdentifier`1 targetId, IHasContext context) in Mendix.Modeler.Core\Common\Problems\ResolveCache.cs:line 106 at Mendix.Modeler.Projects.Project.Resolve[T](IIdentifier`1 identifier) in Mendix.Modeler.Core\Projects\Project.cs:line 199 at Mendix.Modeler.Common.IdentifierUtil.Resolve[T](IIdentifier`1 identifier, IHasContext context) in Mendix.Modeler.Core\Common\Usages\IdentifierUtil.cs:line 17 at Mendix.Modeler.Microflows.MicroflowCall.get_Callee() in Mendix.Modeler.Microflows\Common\MicroflowCall.cs:line 17 at Mendix.Modeler.Microflows.Actions.MicroflowCallAction.get_Variable() in Mendix.Modeler.Microflows\Actions\Calls\MicroflowCallActions\MicroflowCallAction.cs:line 23 at Mendix.Modeler.Microflows.VariableSourceUtil.GetVariableDefinition(Object obj) in Mendix.Modeler.Microflows\Common\VariableSourceUtil.cs:line 16 at Mendix.Modeler.Microflows.VariableSourceUtil.GetVariableDefinition(Object obj) in Mendix.Modeler.Microflows\Common\VariableSourceUtil.cs:line 16 at Mendix.Modeler.Microflows.ScopeAlgorithm.CalculateScopeVariables(IMicroflowObject obj, Dictionary`2 infos, IEnumerable`1 incomingScope) in Mendix.Modeler.Microflows\ScopeAlgorithm.cs:line 154 at Mendix.Modeler.Microflows.ScopeAlgorithm.CalculateScopeVariables(IMicroflowObject obj, Dictionary`2 infos, IEnumerable`1 incomingScope) in Mendix.Modeler.Microflows\ScopeAlgorithm.cs:line 166 at Mendix.Modeler.Microflows.ScopeAlgorithm.CalculateScopeVariables(IMicroflowObject obj, Dictionary`2 infos, IEnumerable`1 incomingScope) in Mendix.Modeler.Microflows\ScopeAlgorithm.cs:line 166 at Mendix.Modeler.Microflows.ScopeAlgorithm.CalculateScopeVariables(IMicroflowObject obj, Dictionary`2 infos, IEnumerable`1 incomingScope) in Mendix.Modeler.Microflows\ScopeAlgorithm.cs:line 166 at Mendix.Modeler.Microflows.ScopeAlgorithm.CalculateScopeVariables(IMicroflowObjectCollection collection, Dictionary`2 infos, List`1 currentScope) in Mendix.Modeler.Microflows\ScopeAlgorithm.cs:line 125 at Mendix.Modeler.Microflows.ScopeAlgorithm.CalculateScopeVariables() in Mendix.Modeler.Microflows\ScopeAlgorithm.cs:line 49 at Mendix.Modeler.Projects.Postprocessing.Postprocessor.<>c.<ApplyPostprocessRecursively>b__10_0(IPostprocess obj) in Mendix.Modeler.Core\Projects\Postprocessing\Postprocessor.cs:line 83 at Mendix.Modeler.Storage.TypeWalks.TypeWalk.CollectObjects(IStorageObject root, Func`2 shouldVisitChildren, Boolean skipExcludedObjects)+MoveNext() in Mendix.Modeler.Storage\TypeWalks\TypeWalk.cs:line 63 at System.Linq.Enumerable.CastIterator[TResult](IEnumerable source)+MoveNext() at Mendix.Modeler.Storage.StorageUtil.ForEachStorageObjectDo[T](IStorageObject root, Func`2 work, Boolean skipExcludedObjects) in Mendix.Modeler.Storage\StorageUtil.cs:line 140 at Mendix.Modeler.Common.ResolveCache.TrackResolves(Action code) in Mendix.Modeler.Core\Common\Problems\ResolveCache.cs:line 100 at Mendix.Modeler.Projects.Postprocessing.Postprocessor.PostprocessDocument(IDocument document) in Mendix.Modeler.Core\Projects\Postprocessing\Postprocessor.cs:line 75 at Mendix.Modeler.Projects.Changes.ChangedDocumentsProcessor`1.<>c__DisplayClass6_0.<ProcessChangedDocuments>g__DoProcess|2(IDocument document) in Mendix.Modeler.Core\Projects\Changes\ChangedDocumentsProcessor.cs:line 90 at Mendix.Common.Util.EnumerableUtil.ForEach[T](IEnumerable`1 source, Action`1 action) in Mendix.Common\Util\EnumerableUtil.cs:line 51 at Mendix.Modeler.Projects.Changes.ChangedDocumentsProcessor`1.ProcessChangedDocuments(IProject project, ProjectChanges projectChanges, Func`2 processDocument) in Mendix.Modeler.Core\Projects\Changes\ChangedDocumentsProcessor.cs:line 84 at Mendix.Modeler.Projects.Postprocessing.Postprocessor.<>c__DisplayClass5_0.<PostprocessWithChanges>b__1() in Mendix.Modeler.Core\Projects\Postprocessing\Postprocessor.cs:line 39 at Mendix.Modeler.Common.ResolveCache.WithCache[T](IProject project, Func`1 action) in Mendix.Modeler.Core\Common\Problems\ResolveCache.cs:line 62 at Mendix.Modeler.Projects.Postprocessing.Postprocessor.<>c__DisplayClass5_0.<PostprocessWithChanges>b__0() in Mendix.Modeler.Core\Projects\Postprocessing\Postprocessor.cs:line 38 at Mendix.Modeler.ProtectedModules.ProtectedModulesUnlocker.ExecuteInContext[T](Boolean unlockImplementation, Func`1 code) in Mendix.Modeler.Core\ProtectedModules\ProtectedModulesUnlocker.cs:line 48 at Mendix.Modeler.Projects.Postprocessing.Postprocessor.PostprocessWithChanges(IProject project, ProjectChanges changes) in Mendix.Modeler.Core\Projects\Postprocessing\Postprocessor.cs:line 37 at Mendix.Modeler.Projects.Postprocessing.Postprocessor.PostprocessProject(IProject project) in Mendix.Modeler.Core\Projects\Postprocessing\Postprocessor.cs:line 32 at Mendix.Modeler.Core.ProjectManager.Postprocess() in Mendix.Modeler.Core\Core\ProjectManager.cs:line 120 at Mendix.Modeler.Core.ProjectManager.DoRaiseStructureChanged() in Mendix.Modeler.Core\Core\ProjectManager.cs:line 112 at Mendix.Modeler.Core.ProjectManager.<ProjectOnStructureChanged>b__39_0() in Mendix.Modeler.Core\Core\ProjectManager.cs:line 89 at Mendix.Modeler.Controls.GuiThreadExecutor.<>c__DisplayClass5_0.<WrapActionWithRethrowHack>b__0() in Mendix.Modeler.Controls\GuiThreadExecutor.cs:line 43 --- End of stack trace from previous location --- at Mendix.Modeler.Controls.GuiThreadExecutor.Rethrow(Exception ex) in Mendix.Modeler.Controls\GuiThreadExecutor.cs:line 74 at Mendix.Modeler.Controls.GuiThreadExecutor.<>c__DisplayClass5_0.<WrapActionWithRethrowHack>b__0() in Mendix.Modeler.Controls\GuiThreadExecutor.cs:line 43 at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)