37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
-
+
+
|
- **Add [SPDX-style](https://spdx.dev/) license attribution** to all source files.
- **Header file restructuring.** The current separation of the APIs into many `include/fossil-scm/*.h` files is somewhat confusing. The initial intent was to keep my low-end development system of the time from choking on syntax highlighting on one large file, but those days are largely behind me. It may make sense to combine those into 1 public API file, 1 internal API file, and the auto-generated config file(s).
- **Stop using char as booleans**. This tree historically uses `char` type for booleans. We should use `int` instead or switch to C99, which has a `bool` type.
# Maybe TODO
# Maybe (and Maybe Not) TODO
- **Undo** support.
- **Symlinks**. i have always disagreed with the addition of symlink support into fossil: platform-specific constructs simply have no place in the core of any SCM. For platforms which don't support symlinks, fossil stores/manages them as plain text files with a single line holding the name of the referenced file. This is *very likely* the route the library will take, especially since the hassles symlink handling caused fossil in late 2020 (long story). Probably the only way the library will support proper symlinks is if someone who uses that feature adds it.
- **Backlinks**. Crosslinking "should" update the internal list of backlinks from certain text fields, but doing so requires parsing wiki/markdown-format text. See [`backlink.c` in the fossil tree](https://fossil-scm.org/home/file?name=src/backlink.c&ci=trunk) for the gory details.
- **Ticket support**. Ticket handling is surprisingly complicated, due largely to the customizability of the ticket database schema. If fossil-compatible ticket supports gets added to libfossil, it will very likely be because someone other than myself adds it!
# Remote Synchronization
- This will be implemented in terms of abstract streaming APIs, very possibly the ones the library already uses for the majority of its file I/O and abstracting output streaming (e.g. it uses an abstract output stream for diff output, rather than writing directly to a buffer).
- This will almost certainly be one of the last major features.
|