* Add namespace to name lookup index
* Fix name index queries
* More instances for paths
* Sqlite changes
* Redundant import
* Update api transcripts
* Use GLOB for proper query optimization on namespace search
* Slight optimization
* Rename namespace size to match old name
* Clean up docs and parsers for read/write remote namespaces for share
* Revive deprecated git parser so old unisonConfig's still work
* Don't hide git errors
* Fix CodeserverURI -> URI conversion
* Reflect the provided port in CodeserverURI
* Focus messaging around primary action
* Rename Branch.Hash -> Branch.CausalHash for clarity.
* WIP simplifying types for Causals and hashes
* Single type for causal hashes.
* Remove vestigial function
* Clean up some rogue hashes
* Formatting
* Fix tests
* Add namespace hash migration
* Cleanup
* Finish writing migration for bad branches, add some sanity checks too.
* Keep hash_object mappings up to date.
* Working migration
* More checks
* Dependency-order migration WIP
* Finish first draft of crawled migration strategy
* Improve speed and reliability of migration.
* Better migration logging
* Perform integrity checks once after all migrations are done.
* Considerably speed up migration by only re-hashing branches which have
the same causal hash as value hash.
* Clarify migration docs
* Move 'differing causal value hash' check to integrity checks
* Bump schema version for new codebases
* PR cleanup
* Remove commented out migration
* PR feedback cleanup
* Add integrity check for hash_objects.
* Correctly set 'changes' key
* Don't check hash object integrity in migrations
Some codebases (like mine) are borked in this area and we'll need to fix
them later on.
* Correct final migration number
* Check namespace hash even if branch has no children
* Rehash every branch regardless
* Use v4 of base.
- Use logarithmic lookups rather than O(n^2) algorithm for restrictDom/Ran
- Remove some duplication by defining some functions in terms of each other, using swap
- subtractDom/Ran avoids traversing the whole relation, O(k log k)
- Use Map.intersectWith for intersection, rather than scanning either relation