Zettelkasten-Team / Zettelkasten

Zettelkasten-Developer-Builds
http://zettelkasten.danielluedecke.de
GNU General Public License v3.0
730 stars 92 forks source link

Anfügen von Zettelkästen mit ID-Dopplungen ist unzuverlässig #215

Closed Elmari closed 2 years ago

Elmari commented 4 years ago

Wenn man zkx3 Dateien importieren will und sich IDs in den beiden Dokumenten doppeln, sollten Dopplungen, nach Codedoku, gelöscht werden, um die Eindeutigkeit der IDs beizubehalten. Tatsächlich bleibt bei mir aber gefühlt jeder zweite oder dritte Zettel mit identischer ID bestehen.

Doppelte IDs entstanden in dem konkreten Fall durch Verwendung einer Zettelkasten-"Vorlage", also ein Zettelkasten mit angelegten Zetteln, aber leerem Inhalt. Das Template wurde dann kopiert, befüllt und die Kopien anschließend zusammengefügt.

Vorschlag:

RalfBarkow commented 4 years ago

@Elmari Vielleicht könnten wir zum Beispiel die SHA-256 checksum eines Zettels berechnen und diese als ID verwenden? (Stichworte dabei sind: Checksum-Based Storage, Web Architecture: Generic Resources)

Elmari commented 4 years ago

Ich denke da würden sich besser UUIDs eignen (z.B. v4), SHA-256 checksums würden sich ja bei verändertem Content auch wieder ändern. Aktuell hab ich's jetzt erstmal so gelöst, dass eine neue ID auf dem bisherigen Schema generiert wird (basierend auf dem Timestamp mit Millisekundenauflösung), ich denke aber auch, dass wir in Zukunft andere IDs verwenden sollten. Auch wenn die Wahrscheinlichkeit nicht besonders groß ist, dass zwei zusammengeführte Zettel zur gleichen Millisekunde erstellt wurden, ist die Wahrscheinlichkeit bei alternativen ID-Formen noch geringer. @RalfBarkow hättest du Zeit dir mal #217 anzuschauen :)? Wenn das soweit von dir aus passt, würde ich den Mergekonflikt noch eben lösen und dann in develop überführen.

RalfBarkow commented 3 years ago

Cherry picking ed5eaa9 broke the release/v3.2.8 build

/Users/rgb/Projects/Zettelkasten/src/main/java/de/danielluedecke/zettelkasten/tasks/importtasks/ImportFromZkx.java:400:58 java: cannot find symbol symbol: method retrieveAllZettelAsMap(org.jdom2.Document) location: class de.danielluedecke.zettelkasten.util.Tools