Feature request: ability to serialize & dehydrate patch changes
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
La solicitud se refiere a los tipos Patch y PatchEntryChanges; comienza revisando su estructura pública y las restricciones actuales de colección y serialización. Define una representación round-trip para un Patch y sus entradas, y luego verifica que los datos serializados puedan restaurarse con cambios equivalentes; en el issue no se mencionan archivos ni pruebas específicos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
This isn't a bug - this is a feature request for an app I've written, using libgit2sharp: diff-buddy (https://github.com/fluffynuts/diff-buddy) which aims to help on larger reviews which are difficult to impossible on GitHub - the page just falls over.
diff-buddy is able to give an overview, show the diff for one file, or run in review mode where someone can go through the files of interest, store commentary, and copy that to the PR once done. diff-buddy stores state so a review doesn't have to be completed all at once.
Currently, for review purposes, the review UI steps through each file, applying exclusions (eg ignore files with a certain path, ignore files where the only changes are added / removed using statements, etc) to get the review down to the most interesting files. Stepping through files is slow, and the most time is spent, expecially on a really large diff, in re-diffing the tree every time we step - as the actual diff work is done in a sub-process. This is not a criticism of libgit2sharp - the whole reason for using diff-buddy is that the overall changes are vast - too vast for the GH web interface to provide a useful review interface to.
Yes, I could re-work the architecture a bit - call directly in and apply some in-memory caching, but a seemingly simple way was to just save a JSON blob of the Patch state somewhere in a cache folder & re-use that - however, I can't because Patch implements the read-only collection IEnumerable interface. I wouldn't even mind if I had to some of the lifting - enumerate through all diffs, store & re-hydrate manually, but I can't do that either as PatchEntryChanges aren't individually serializable.
The ability to serialize and deserialize this info may also be useful for other client-server operations (eg where a server could do the actual diffing and a client could do work with it) - which was another approach I considered, but, of course, if I can't serialize/deserialize, I can't pass that across the wire either.
- Lenguaje dominante
- C#
- Estrellas
- 3.5k
- Forks
- 925
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de libgit2/libgit2sharp
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
libgit2/libgit2sharp#2193 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
libgit2/libgit2sharp#2192 · 1 comentario ·
-
Website is down Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
libgit2/libgit2sharp#2191 · 2 reacciones ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
libgit2/libgit2sharp#2189 · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
libgit2/libgit2sharp#2187 · 2 comentarios ·
Todos los issues de libgit2/libgit2sharp
Issues similares
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
azurenoops/spin_agent#975 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Dificultad 2/5 1-3 horas Aptitud para principiantes 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SubtitleEdit/subtitleedit#15108 · 1 comentario ·