Code change:
Locally I have an empty cell at the bottom of my notebook because I executed the last cell When I try to merge in a change that has new cells, I get a merge conflict that requires I open the ipynb in a text editor to resolve. !
We can explore how to handle this gracefully in the serializer.
not sure what needs to be done in the serializer here. can you provide more information, i would have thought this was purely an issue with merge conflicts.
Can this please be solved? It's hard to work collaboratively within a team using Jupyter notebooks and VS Code if we can't sort out merge conflicts.
I suggest there be an option to disable the notebook renderer temporarily in all editors. git operates at the text level and when merge conflict happens, it will likely produce a malformed JSON file. We now have an error message to notify users to fallback to text editor, but "resolve in merge editor" button still don't work. !
Note: When there are merge conflicts, one will always have to open a plain text (json) editor to resolve the merge confligs I.e. its not possible to use Notebook UI to resolve merge conflicts (at least not yet) Steps to test Ensure you have merge conflicts in a Notebook document Open the SCM view, and click on the IPYNB file, and verify you can see the merge conflicts in plain text editor view Click on the button and verify you get the merge editor (again plain text), see here When you have merge conflicts, try opening the ipynb file from the explorer view, if this fails verify you are displayed with an error message with the option to open the file in plain text view

Related discussion:
text: import { NotebookOutputRendererInfo, NotebookStaticPreloadInfo as NotebookStaticPreloadInfo } from 'vs/workbench/contrib/notebook/common/notebookOutputRenderer'; import { NotebookEditorDescriptor, NotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookProvider'; import { INotebookSerializer, INotebookService, SimpleNotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookService'; <del> import { DiffEditorInputFactoryFunction, EditorInputFactoryFunction, EditorInputFactoryObject, IEditorResolverService, IEditorType, RegisteredEditorInfo, RegisteredEditorPriority, UntitledEditorInputFactoryFunction } from 'vs/workbench/services/editor/common/editorResolverService'; </del> <ins> import { DiffEditorInputFactoryFunction, EditorInputFactoryFunction, EditorInputFactoryObject, IEditorResolverService, IEditorType, RegisteredEditorInfo, RegisteredEditorPriority, UntitledEditorInputFactoryFunction, type MergeEditorInputFactoryFunction } from 'vs/workbench/services/editor/common/editorResolverService'; </ins> import { IExtensionService, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { InstallRecommendedExtensionAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { INotebookDocument, INotebookDocumentService } from 'vs/workbench/services/notebook/common/notebookDocumentService'; <ins> import { MergeEditorInput } from 'vs/workbench/contrib/mergeEditor/browser/mergeEditorInput'; import type { EditorInputWithOptions, IResourceMergeEditorInput } from 'vs/workbench/common/editor'; </ins> export class NotebookProviderInfoStore extends Disposable {