Skip to content

Releases: koordinates/kart

v0.6.0

19 Nov 01:04
Compare
Choose a tag to compare

Major changes in this release

  • The working copy can now be a PostgreSQL / PostGIS database (previously only GPKG working copies were supported). The commands init, clone and create-workingcopy now all accept working copy paths in the form postgresql://[HOST]/DBNAME/SCHEMA #267
    • Read the documentation at docs/POSTGIS_WC.md
  • Newly created Sno repositories no longer have git internals visible in the main folder - they are hidden away in a '.sno' folder. #147
  • Patches that create or delete datasets are now supported in Datasets V2 #239

Minor features / fixes:

  • apply and import no longer create empty commits unless you specify --allow-empty #243, #245
  • apply can now apply patches to branches other than HEAD #294
  • apply, commit and merge commands now optimise repositories after committing, to avoid poor repo performance. #250
  • commit now checks that the diff to be committed matches the schema, and rejects diffs that do not - this is possible in working copy formats that have relatively lax type enforcement, ie GPKG #300
  • Added GPKG support for Sno types that GPKG doesn't support - they are approximated as strings. #304
  • schema.json no longer stores attributes that are null - a missing attribute has the same meaning as that attribute being present and null. #304
  • data ls now accepts an optional ref argument
  • meta get now accepts a --ref=REF option
  • clone now accepts a --branch option to clone a specific branch.
  • switch BRANCH now switches to a newly created local branch that tracks BRANCH, if BRANCH is a remote branch and not a local branch #259
  • gc command added (delegates to git gc)
  • Bugfix - don't drop the user-supplied authority from the supplied CRS and generate a new unrelated one. #278
  • Bugfix - generated CRS numbers are now within the user range: 200000 to 209199 #296

v0.5.0

02 Sep 23:06
Compare
Choose a tag to compare

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

v0.4.1

05 Jul 22:34
Compare
Choose a tag to compare

Overview

0.4.1 fixes some packaging issues in the 0.4.0 release

Packaging fix:

  • packaging: Fix issue with broken git component paths in packages on macOS and Linux (#143)
  • packaging: Exclude dev dependency in macOS package

Minor features / fixes:

  • Added a sno meta get command for viewing dataset metadata (#136)
  • merge, commit, init, import commands can now take commit messages as files with [email protected]. This replaces the sno commit -F option (#138)
  • import: Added --table-info option to set dataset metadata, when it can't be autodetected from the source database (#139)
  • pull, push, fetch, clone commands now show progress - disabled with --quiet (#144)
  • import now works while on an empty branch (#149)

v0.4.0

23 Jun 03:29
Compare
Choose a tag to compare

Overview

0.4.0 adds basic support for resolving merge conflicts, imports from postgres databases, and a variety of other minor features

Major changes in this release

  • Basic conflict resolution:
    • sno merge now puts the repo in a merging state when there are conflicts (#80)
    • Added sno conflicts to list conflicts (#84)
    • Added sno resolve (#101)
    • Added sno merge --continue (#94)
  • Major improvements to sno import and sno init --import:
    • Can now import from postgres databases (#90)
    • Multiple tables can be imported at once (#118)
  • Added sno show: shows a commit. With -o json generates a patch (#48)
  • Added sno apply to apply the patches generated by sno show -o json (#61)

Minor features / fixes:

  • add a changelog (here!)
  • sno import enhancements (in addition to major changes above):
    • GPKG database paths no longer need GPKG: prefix
    • now takes table names as separate arguments
    • Added --primary-key=FIELD to override primary key field name
    • Added --message to customize the commit message
    • --list no longer requires a repository
  • sno init --import enhancements:
    • imports are much faster (#55)
    • now imports all tables from database, doesn't allow table to be specified
  • Many JSON output improvements:
    • JSON output is specified with -o json instead of --json (#98)
    • Added syntax highlighting to JSON output when viewed in a terminal (#54)
    • sno diff JSON output layout has changed - features are now flat objects instead of GeoJSON objects. This is much more compact (#71)
    • Added JSON output option for most commands
    • Added --json-style option to several commands to control JSON formatting (#70)
  • sno diff:
    • a..b now refers to the same changes as sno log a..b (#116)
    • can now diff against tree objects, particularly the empty tree (#53)
    • can now view some subset of the changes by supplying filter args, ie [dataset[:pk]]
  • sno commit:
    • can now commit some subset of the changes by supplying filter args, ie [dataset[:pk]] (#69)
  • removed import-gpkg command; use import instead (#85)
  • Error messages now go to stderr instead of stdout (#57)
  • Error conditions now use exit codes to indicate different types of errors (#46)

Compatibility

Repositories created with Sno v0.2 onwards are compatible with v0.4. For assistance upgrading any v0.1 repositories, please read our upgrade guide.

v0.3.1

27 Mar 13:39
Compare
Choose a tag to compare

This is a minor update to v0.3.

Changes in this release

  • Sno is now available on Windows 🎉. Download the .msi installer below for Windows 8.1+ / Server 2016+ (64-bit).
  • Updates to continuous integration — installers/archives are now built and tested with every commit for every platform.
  • For macOS users, a homebrew "tap" is now available: brew cask install koordinates/sno/sno
  • Several bug fixes

Upgrading

There are no upgrade requirements or compatibility issues from v0.3.0.

v0.3

04 Mar 15:06
Compare
Choose a tag to compare

Welcome to the first public preview release of Sno! Thanks to all our private testers who have given it a spin up until now.

Major changes in this release

  • Sno is now publicly available under the GPL open source license.
  • Sno now has a website at sno.earth
  • Standalone builds and packaging for Linux and macOS. Windows won't be far behind
  • Refactoring to support alternative database working copies
  • Dependency upgrades (GDAL; Git; Pygit2; Proj; Libgit2; Sqlite; and others)
  • Several bug fixes

Upgrading

If you were running a preview release, remove it before installing the new release:

$ brew uninstall sno
$ brew untap koordinates/sno

Repository Hosting

We have an initial preview available of our Sno repository hosting. This allows you & your team to push and pull Sno repositories. Please contact [email protected] with your Github username and we can get you set up. There is no cost for this service.

Compatibility

Please note that compatibility for 0.x releases (software or repositories) isn't guaranteed. Sno is evolving quickly and things will change. However, we aim to provide the means to upgrade existing repositories between 0.x versions and to 1.0

Repositories created with Sno v0.2 are compatible with v0.3. For assistance upgrading any v0.1 repositories, please read our upgrade guide.

v0.2

20 Dec 00:57
Compare
Choose a tag to compare

Welcome to the second preview release!

Major changes in this release

  • First and foremost, the name — we're now called Sno!
  • A new repository structure/layout, which has better performance and a smaller on-disk size
  • Data imports are now orders of magnitude faster
  • Support for multiple datasets in a single Sno repository
  • Support for non-spatial datasets
  • Increased test coverage including end-to-end tests
  • Improved macOS Homebrew packaging with CI testing.
  • Prototype support for spatial-indexing and a sno query command for spatial lookups.
  • Diffs across branches/commits, and a GeoJSON diff format.
  • Numerous bug fixes

Repository Hosting

We have an initial preview available of our Sno repository hosting. This allows you & your team to push and pull Sno repositories.

Please contact [email protected] with your Github username (even if you’re a Sno user already) and we’ll get you set up. There is no cost for this service.

Compatibility

Please note that compatibility for 0.x releases (software or repositories) isn't guaranteed. Sno is evolving quickly and things will change. However, we aim to provide the means to upgrade existing repositories between 0.x versions and to 1.0

Repositories created with older Sno versions are not compatible with v0.2. For assistance upgrading your repositories, please read our upgrade guide

Note that some command names and argument syntax have changed. Please consult the documentation for more information.