Login
Changes To home
Login

Changes to "home" between 2019-09-02 10:40:57 and 2021-02-06 03:49:49

1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
22
23
24
25
26
27
28

29
30
31
32
33
34
35
1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
35













-
+













-
+







<strong>Achtung: RSI has effectively removed this project's maintainer from the programming world, and this project is no longer maintained. Since the SHA-related changes in Fossil, this library is no longer compatible with fossil (and getting it to work with fossil requires an as-yet-unknown amount of effort). Nonetheless, this library provides (IMO) a solid starting point (or at least a reference point) for anyone interested in starting a port-fossil-to-a-library effort.</strong>

<h1>libfossil: Fossil SCM Library API</h1>

See also: [download], [building], [f-tools],
[DbFunctions], [SQLSnippets], [HackersGuide],
[http://fossil.wanderinghorse.net/repos/libfossil/doxygen/|doxygen docs] (refreshed from current sources relatively frequently), [https://docs.google.com/document/d/13gRSl6-bj3LV-OKgE-BsqvqF33UFYW3oa3A2OJC5QSY/view|"s2" script bindings]


This source code repository houses an in-development library API for the [http://fossil-scm.org|Fossil SCM]. The primary goal is to port existing behaviour into a library form (the v1 app is extremely monolithic in nature). This effort, officially called "libfossil", intends to introduce no breaking changes, and the intention is to provide an alternative interface into fossil repositories, as opposed to a replacement for the core fossil application.

This code currently doesn't do much which would interest non-Fossil hackers. It might be of interest to those wanting to follow or participate in the design of libfossil.

<strong>License:</strong> same as Fossil: the "2-Clause BSD" a.k.a. "FreeBSD License" with the same license holder ([http://en.wikipedia.org/wiki/D._Richard_Hipp|D. Richard Hipp], the primary author and architect of [http://sqlite.org|sqlite] and [http://fossil-scm.org|Fossil]). To keep this code as "license clean" as possible vis-a-vis Fossil, code contributions require having a Fossil copyright waiver on file. All Fossil committers (those who have a signed a license waiver on file with DRH, whether or not they actually commit code to Fossil) are unreservedly welcomed as libfossil contributors - email your preferred user name to get an account: sgbeal@googlemail.com. Getting a waiver is a simple matter of [http://www.fossil-scm.org/index.html/doc/trunk/www/copyright-release.html|filling it out and sending it off to DRH] at the address shown on the form (please attach a note indicating that the waiver is for libfossil (as opposed to fossil), so that he knows no additional effort is necessary on his part!). Those without a waiver may of course contribute in other ways (ideas, discussions, docs, ...).
<strong>License:</strong> same as Fossil: the "2-Clause BSD" a.k.a. "FreeBSD License".

<h2>Status, TODOs, and Whatnot</h2>

All of this code is an <em>experiment</em>, and it does not represent a commitment by anyone that any of this code will some day end up living under the umbrella of the larger Fossil SCM project. If all goes well, that's the eventual goal, though. It is alpha quality. What's there works but is subject to change and there is still a great deal of the higher-level SCM bits left to port in and refactor to make them usable via library-style interfaces. Anyone looking for a project roadmap/timeline is asked respectfully to look elsewhere - there is no timebox on nor schedule for this project/experiment. That said: the [f-tools] demonstrate what functionality is working.

The code changes can be followed via [/timeline | the timeline].

The current public (and documented) API can be found in [/dir?name=include/fossil-scm | the header files], and occasionally that gets [http://fossil.wanderinghorse.net/repos/libfossil/doxygen/|exported to doxygen].

TODOs, design discussions, etc... you might want to get a coffee/tee/beer before starting through [https://docs.google.com/document/d/12g0s5A2TPX7-y47Nsw235rvsjcuh49TnHfMDB4ASvlo/view|the list].

<h2>"Rules" for Code Contributors</h2>

   *  All code contributors must have a license waiver on file with DRH, as the hope is to eventually release this code as the next generation of Fossil. Non-code contributions are happily accepted from anyone.
   *  <s>All code contributors must have a license waiver on file with DRH, as the hope is to eventually release this code as the next generation of Fossil. Non-code contributions are happily accepted from anyone.</s> (No longer needed!)
   *  When working on bits which themselves write to the repository, e.g. creating checkins, please be exceedingly careful not to corrupt the db :-D.
   *  Please try to conform to the overall coding style (as laid out by Fossil v1). We're not picky about whether or not spaces belong before/after an <tt>if</tt>, but the general overall style should be uniform.
   *  Please build with the highest possible warning level and enable fatal warnings (in GCC and similar compilers: <tt>-Wall -Werror</tt>).
   *  Don't bother using branches unless you really want to - the trunk has no stability guarantees and is very much in flux, so feel free to work there instead of a branch if you like.

There is nothing holy or sacred about this repo, so feel free to hack at will. Most of the library's sanity tests are packaged in <tt>[/finfo?name=f-apps/f-sanity.c|f-sanity.c]</tt>. See <tt>[/finfo?name=include/fossil-scm/fossil-cli.h|fossil-cli.h]</tt> for a mini-framework to bootstrap new apps and [f-tools].