Re-syncing with Jef's upstream..

Linus Torvalds torvalds at linux-foundation.org
Thu May 7 15:57:34 PDT 2020


Ok, so I've just spent several hours re-synchronizing our subsurface
branch with Jef's upstream.

The most trivial part of that was to just pull the changes from Jef's
tree - they merged cleanly, nothing odd there.

But then I tried to basically re-base all our changes on top of Jef's
unmodified tree, to see what all our changes actually are these days.

This resulted in two different things:

 (a) a number of trivial updates to the 'Subsurface-NG' branch itself

 (b) the actual new branch itself.

That (a) is basically stuff I noticed while doing the rebasing, and
where I decided that the differences to Jef's upstream should be
minimized rather than carried forward. So this is things like just
unnecessary left-overs from other development that just isn't relevant
any more. Some of it was literally just plain whitespace differences.

And (b) is basically "throw out all of our history, and try to
re-create the exact same end result as we got in (a)".

Dirk, I'm not exactly sure what you think is the best option here.
Both branches are in the usual places, I called the new branch DS9
(I'm not sure if your "NG" naming was a Star Trek reference, but I
decided it was, and that the "new new generation" is thus "deep space
nine").

You can see them both at github:

    https://github.com/subsurface/libdc/tree/Subsurface-NG
    https://github.com/subsurface/libdc/tree/Subsurface-DS9

and the important part here is that the DS9 branch should _not_ be
pulled into the NG branch - the two have exactly the same tree
content-wise, but they have very different history. The DS9 branch has
thrown out all our old history, and is just a linear series of 27
commits on top of what is Jef's upstream as of today:

    Update compiler flags and dc version suffix for Subsurface-NG
    Fix up .gitignore file
    Clean up 'dc_tankvolume_t' type and make it 'dc_tankinfo_t'
    Add generic field cache and string field infrastructure
    Add time-to-surface sample type
    Add string event sample type
    Extend on the event flag type with severity and types
    Add 'usbstorage' iostream
    Add backend for Garmin Descent Mk1
    Add support for the Deepblu Cosmiq+ dive computer
    Suunto Eon Steel: sort the dive list properly
    Use the extended parsing facilities for the Suunto EON Steel backend
    Atomics Cobalt: use the new DC string fields
    Make custom iostream read/write wrapper more rebust
    Add back Mares BlueLink Pro bluetooth support tweaks
    Add serial number to parser creation for ostc, atom2, shearwater
and suunto d9
    Heinrichs Weikamp OSTC: add extended information parsing
    Suunto D9 family: add extended information parsing
    Oceanic Atom2: add extended string information parsing
    Oceanic: when encountering an unknown device, report the version string
    i770R: parse tank pressure and water salinity like the i750tc
    Mark Aqualung i750TC as Bluetooth capable
    Cressi: mark Cartesio and Goa as supporting BLE
    Shearwater Petrel: make the hardware ID decoding a bit easier to read
    Shearwater Teric: add support for the TAG INFO_EVENT
    Shearwater: fix (again) per-cell ppO2 reporting
    Shearwater: add extended information parsing

while our "real" history (in Subsurface-NG) right now is 114 commits
of development, and 28 merges..

So the DS9 branch is very much a simplified history that tries to make
it much more obvious exactly what we've changed.

In contrast, the commits in our current NG branch are a mix of
development (ie you can see the history of how some of the backends
have been developed), and updates that Jef has taken and merged back
(sometimes in different versions), and various updates related to
interface changes (either the libdivecomputer iostream changes, or
just our own cleanups to unify the field cache and string helpers.

Jef - that "Suunto Eon Steel: sort the dive list properly" commit is
very much a bug-fix. You should take it, regardless of any subsurface
interface issues. So is the BlueLink Pro thing, for that matter.

The rest is mostly either new backends (ie the Garmin Descent and the
Deeplu Cosmiq), or the extended string interface support.

Anyway, exactly *because* the new tree is bit-for-bit identical
between the NG and DS9 branches, there's no difference on a code level
between the two, and the only real difference is that DS9 makes it
much easier to see what the changes are from Jef's point.

Dirk, I'm not sure you care deeply. I decided to do it mainly because
I wanted to know what our state was. It's not too bad. The only really
annoying thing I found was the 'unsigned int serial' number
differences to the parser creation fucntions, but those haven't been
much of a pain lately.

But if you think that switching over to the DS9 branch makes sense,
that would make it (possibly) easier to do any backporting of our work
(or, alternatively, just do this kind of rebase again in a couple of
years, to keep track of our differences wrt Jef's upstream and never
let them become too overwhelming).

                Linus


More information about the subsurface mailing list