Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 23:06

sno v0.5 introduces a new repo layout, which is the default, dubbed 'Datasets V2'

Existing commands are backward compatible with V1 datasets, however some new functionality is only supported in repositories upgraded to the new layout.

Datasets V2

  • Entire repositories can be upgraded from V1 to V2 using sno upgrade EXISTING_REPO NEW_REPO.
  • V2 should support everything V1 supports
  • All new repositories use the new layout by default. To opt out, use the --repo-version=1 flag for sno init
  • A future release will drop support for v1 repositories

New features for V2 repositories only

  • Most schema changes now work
    • this includes column adds, drops, renames and reordering.
    • Notably, changing the primary key field of a dataset are not yet supported.
  • Meta changes are now supported (title, description and XML metadata for each dataset)
  • import now has a --replace-existing flag to replace existing dataset(s).

Missing functionality in Datasets V2

  • String primary keys and tables without primary keys are not yet supported. #212
  • Changing the primary key column is not yet supported. #238
  • Patches which create or delete datasets are not supported. #239
  • Schema changes might not be correctly interpreted if too many changes are made at once (eg adding a new column with the same name as a deleted column - sno may incorrectly assume it is the same column).
    • It is safest to commit schema changes to any existing columns, then commit schema changes adding any new columns, then commit any feature changes.

Breaking changes in this release

  • New structure to sno diff output:
    • Text output: Features are now labelled as <dataset>:feature:<primary_key>, consistent with meta items that are labelled as <dataset>:meta:<meta_item_name>
    • JSON output also uses "feature" and "meta" as keys for the different types of changes, instead of "featureChanges" and "metaChanges".
  • sno show -o json header key changed to sno.show/v1, which is not an applyable patch. Use sno create-patch to create a patch.
  • sno upgrade now only takes two arguments: sno upgrade EXISTING_REPO NEW_REPO. No other arguments are required or accepted, exactly how to upgrade the repository is detected automatically.

Other changes in this release

  • Added sno create-patch <refish> - creates a JSON patch file, which can be applied using sno apply #210
  • Added sno data ls - shows a list of datasets in the sno repository #203
  • sno help [command] is a synonym for sno [subcommand] --help #221
  • sno clone now support shallow clones (--depth N) to avoid cloning a repo's entire history #174
  • sno log now supports JSON output with --output-format json #170
  • sno meta get now prints text items as text (not encoded as JSON) #211
  • sno meta get without arguments now outputs multiple datasets #217
  • sno diff and sno show now accept a --crs parameter to reproject output #213
  • Streaming diffs: less time until first change is shown when diffing large changes. #156
  • Working copies are now created automatically. #192
  • Commands which are misspelled now suggest the correct spelling #199
  • Bugfix: operations that should immediately fail due to dirty working copy no longer partially succeed. #181
  • Bugfix: some column datatype conversion issues during import and checkout.
  • Linux: Add openssh client dependency into rpm & deb packages. #121
  • Windows: Fix missing PROJ data files in packages. #235

External contributors