├── .github └── workflows │ └── build.yaml ├── .gitignore ├── .mvn ├── formatter.xml ├── maven.config └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE.txt ├── NOTICE.txt ├── README.md ├── RELEASE_NOTES.md ├── build ├── eclipse │ └── codetemplates.xml └── jenkins │ └── build.sh ├── doc ├── .gitignore ├── build_all.sh ├── manpages │ ├── Makefile │ ├── make.bat │ └── source │ │ ├── add.rst │ │ ├── apply.rst │ │ ├── branch.rst │ │ ├── cat.rst │ │ ├── checkout.rst │ │ ├── cherrypick.rst │ │ ├── clean.rst │ │ ├── clone.rst │ │ ├── commit.rst │ │ ├── conf.py │ │ ├── config.rst │ │ ├── diff.rst │ │ ├── fetch.rst │ │ ├── formatpatch.rst │ │ ├── geogig.rst │ │ ├── geojson.rst │ │ ├── geojsonexport.rst │ │ ├── geojsonimport.rst │ │ ├── geopkg.rst │ │ ├── geopkgdescribe.rst │ │ ├── geopkgexport.rst │ │ ├── geopkgimport.rst │ │ ├── geopkglist.rst │ │ ├── geopkgpull.rst │ │ ├── help.rst │ │ ├── index.rst │ │ ├── indexcreate.rst │ │ ├── indexdrop.rst │ │ ├── indexing.rst │ │ ├── indexlist.rst │ │ ├── indexrebuild.rst │ │ ├── indexupdate.rst │ │ ├── init.rst │ │ ├── log.rst │ │ ├── ls.rst │ │ ├── merge.rst │ │ ├── pg.rst │ │ ├── pgdescribe.rst │ │ ├── pgexport.rst │ │ ├── pgimport.rst │ │ ├── pglist.rst │ │ ├── pull.rst │ │ ├── push.rst │ │ ├── rebase.rst │ │ ├── remote.rst │ │ ├── remoteadd.rst │ │ ├── remotelist.rst │ │ ├── remoteremove.rst │ │ ├── remove.rst │ │ ├── reset.rst │ │ ├── revert.rst │ │ ├── show.rst │ │ ├── shp.rst │ │ ├── shpexport.rst │ │ ├── shpimport.rst │ │ ├── status.rst │ │ └── tag.rst ├── manual │ ├── Makefile │ ├── make.bat │ ├── source │ │ ├── conf.py │ │ ├── data │ │ │ ├── adding.rst │ │ │ ├── checkout.rst │ │ │ ├── committing.rst │ │ │ ├── diffs.rst │ │ │ ├── exporting.rst │ │ │ ├── history.rst │ │ │ ├── import.rst │ │ │ ├── index.rst │ │ │ ├── patches.rst │ │ │ ├── picking.rst │ │ │ ├── rebasing.rst │ │ │ ├── referencing.rst │ │ │ ├── reverting.rst │ │ │ └── updating.rst │ │ ├── img │ │ │ ├── arrow.png │ │ │ ├── branched.png │ │ │ ├── branches.png │ │ │ ├── configure-geogig-auto-indexing.png │ │ │ ├── configure-geogig-repo-store-addNew.png │ │ │ ├── configure-geogig-repo-store-existing.png │ │ │ ├── configure-geogig-repo-store-import.png │ │ │ ├── configure-layer-declared-srs.png │ │ │ ├── configure-new-geogig-repo.png │ │ │ ├── create-new-geogig-repo-directory-chooser.png │ │ │ ├── create-new-geogig-repo-directory.png │ │ │ ├── create-new-geogig-repo-postgres.png │ │ │ ├── create-new-geogig-repo.png │ │ │ ├── ecosystem.png │ │ │ ├── geogig-config-edit.png │ │ │ ├── geogig-publish-layer.png │ │ │ ├── geogig-repo-config.png │ │ │ ├── geogig-store.png │ │ │ ├── geogig_cache_jconsole.png │ │ │ ├── geogig_workflow.png │ │ │ ├── geogig_workflow_remotes.png │ │ │ ├── geogig_workflow_remotes1.png │ │ │ ├── geoserver-api-create-repo.png │ │ │ ├── geoserver_geogig_settings_page.png │ │ │ ├── import-existing-geogig-repo-directory.png │ │ │ ├── import-existing-geogig-repo-postgres.png │ │ │ ├── import-existing-geogig-repo.png │ │ │ ├── linear.png │ │ │ ├── merged.png │ │ │ ├── partial_clone_mapping.png │ │ │ ├── partial_clone_mapping_2.png │ │ │ ├── placeholder_commit.png │ │ │ ├── qgis_exported_geopackage.png │ │ │ ├── qgis_osm.png │ │ │ ├── shallow_clone.png │ │ │ ├── shallow_deeper_with_branches.png │ │ │ ├── shallow_origin.png │ │ │ ├── shallow_orphan_branch.png │ │ │ ├── sparse_clone.png │ │ │ ├── sparse_clone_2.png │ │ │ ├── sparse_clone_and_commit.png │ │ │ ├── sparse_clone_ids.png │ │ │ ├── sparse_moving_out.png │ │ │ └── svg │ │ │ │ ├── commits.svg │ │ │ │ └── workflow.svg │ │ ├── index.rst │ │ ├── interaction │ │ │ ├── geoserver_ui.rst │ │ │ ├── geoserver_web-api.rst │ │ │ ├── index.rst │ │ │ ├── networking.rst │ │ │ ├── web-api-async-tasks.rst │ │ │ ├── web-api-commands.rst │ │ │ ├── web-api-conflict-resolution.rst │ │ │ ├── web-api-geopackage.rst │ │ │ ├── web-api-indexing.rst │ │ │ ├── web-api-issues.rst │ │ │ ├── web-api-overview.rst │ │ │ ├── web-api-postgis.rst │ │ │ ├── web-api-repository-management.rst │ │ │ └── web-api-transactions.rst │ │ ├── license │ │ │ ├── apache-v2.0-license.rst │ │ │ ├── edl-v1.0-license.rst │ │ │ ├── index.rst │ │ │ └── jquery-license.rst │ │ ├── repo │ │ │ ├── branches.rst │ │ │ ├── commandaliases.rst │ │ │ ├── config.rst │ │ │ ├── elements.rst │ │ │ ├── exploring.rst │ │ │ ├── geogig_postgres.sql │ │ │ ├── history.rst │ │ │ ├── hooks.rst │ │ │ ├── index.rst │ │ │ ├── init.rst │ │ │ ├── logging.rst │ │ │ ├── merging.rst │ │ │ ├── partialcloning.rst │ │ │ ├── remotes.rst │ │ │ └── storage.rst │ │ └── start │ │ │ ├── img │ │ │ └── parks_layer.png │ │ │ ├── index.rst │ │ │ ├── installation.rst │ │ │ ├── introduction.rst │ │ │ ├── runtime.rst │ │ │ └── tutorial.rst │ └── svg │ │ ├── ecosystem.svg │ │ ├── shallow_clone.svg │ │ └── sparse_clone.svg ├── technical │ ├── Makefile │ ├── img │ │ ├── autoformat_save.png │ │ ├── formatter.png │ │ └── import_eclipse.png │ ├── make.bat │ └── source │ │ ├── conf.py │ │ ├── developers.rst │ │ ├── geogig-binary.rst │ │ ├── geogig-merge-conflicts.rst │ │ ├── geogig-network-sync.rst │ │ ├── geopkg-interchange.rst │ │ ├── index.rst │ │ ├── osm-log.rst │ │ ├── osm.rst │ │ ├── osm_dev_ideas.rst │ │ ├── plumbing_commands.rst │ │ └── sparse-clone.rst ├── themes │ └── geogig_docs │ │ ├── layout.html │ │ ├── static │ │ ├── Boundless_Logo.png │ │ ├── Boundless_Logo@2x.png │ │ ├── arrow_up.png │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.js │ │ ├── custom.css │ │ ├── custom.less │ │ ├── favicon.ico │ │ ├── jquery-migrate-min.js │ │ ├── jquery.js │ │ ├── logo.png │ │ ├── logo_hover.png │ │ ├── offcanvas.css │ │ ├── offcanvas.less │ │ ├── print.css │ │ ├── screen.css │ │ ├── searchtools.js │ │ ├── ticks.png │ │ ├── ticks_@2X.png │ │ └── underscore.js │ │ └── theme.conf ├── upgrade │ ├── Makefile │ ├── img │ │ ├── advancedOptions.png │ │ ├── branchConfig.png │ │ ├── cacheConfig.png │ │ ├── geomName.png │ │ └── repoNameSQL.png │ ├── make.bat │ └── source │ │ ├── Upgrade_1.0_to_1.1.rst │ │ ├── Upgrade_1.1.1_to_1.2.rst │ │ ├── Upgrade_1.1_to_1.1.1.rst │ │ ├── conf.py │ │ └── index.rst └── workshops │ ├── Makefile │ ├── img │ ├── 10011.png │ ├── add_feature.png │ ├── adding_feature.png │ ├── aerialways.png │ ├── attribute_table.png │ ├── bing_buildings.png │ ├── buildings_layer.png │ ├── create_pg_database.png │ ├── create_role.png │ ├── create_role2.png │ ├── create_role3.png │ ├── drag_drop_files.png │ ├── drag_layer_to_canvas.png │ ├── geogig_db_connections.png │ ├── geogig_db_with_tables.png │ ├── identify.png │ ├── import_pg_dialog.png │ ├── install_ol.png │ ├── new_connection.png │ ├── new_feature_attributes.png │ ├── new_role.png │ ├── opengeo_explorer.png │ ├── openlayers.png │ ├── pgadmin.png │ ├── pgadmin_03.png │ ├── pgadmin_03a.png │ ├── qgis.png │ ├── qgis_browser.png │ ├── save_edits.png │ ├── sql_query.png │ ├── to_digitize.png │ └── workshop_db.png │ ├── make.bat │ ├── outline │ └── source │ ├── conf.py │ ├── index.rst │ ├── osm_workshop.rst │ └── workshop.rst ├── header.csv ├── headers.sh ├── helping.rst ├── import.xlsx ├── mvnw ├── mvnw.cmd ├── pom.xml ├── spatial-index-attributes.png ├── src ├── .gitignore ├── api │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ ├── base │ │ │ │ ├── Preconditions.java │ │ │ │ └── Strings.java │ │ │ │ ├── feature │ │ │ │ ├── Feature.java │ │ │ │ ├── FeatureDelegate.java │ │ │ │ ├── FeatureImpl.java │ │ │ │ ├── FeatureType.java │ │ │ │ ├── FeatureTypes.java │ │ │ │ ├── Name.java │ │ │ │ └── PropertyDescriptor.java │ │ │ │ ├── model │ │ │ │ ├── Bounded.java │ │ │ │ ├── Bucket.java │ │ │ │ ├── CanonicalNodeNameOrder.java │ │ │ │ ├── CanonicalNodeOrder.java │ │ │ │ ├── DiffEntry.java │ │ │ │ ├── FieldType.java │ │ │ │ ├── GeometryCloner.java │ │ │ │ ├── HashObjectFunnels.java │ │ │ │ ├── Node.java │ │ │ │ ├── NodeOrdering.java │ │ │ │ ├── NodeRef.java │ │ │ │ ├── ObjectId.java │ │ │ │ ├── PriorityService.java │ │ │ │ ├── Ref.java │ │ │ │ ├── RevCommit.java │ │ │ │ ├── RevCommitBuilder.java │ │ │ │ ├── RevFeature.java │ │ │ │ ├── RevFeatureBuilder.java │ │ │ │ ├── RevFeatureType.java │ │ │ │ ├── RevFeatureTypeBuilder.java │ │ │ │ ├── RevObject.java │ │ │ │ ├── RevObjectFactory.java │ │ │ │ ├── RevObjects.java │ │ │ │ ├── RevPerson.java │ │ │ │ ├── RevPersonBuilder.java │ │ │ │ ├── RevTag.java │ │ │ │ ├── RevTagBuilder.java │ │ │ │ ├── RevTree.java │ │ │ │ ├── RevTreeBuilder.java │ │ │ │ ├── ServiceFinder.java │ │ │ │ ├── SymRef.java │ │ │ │ ├── ValueArray.java │ │ │ │ ├── impl │ │ │ │ │ ├── AbstractRevObject.java │ │ │ │ │ ├── AbstractTreeBuilder.java │ │ │ │ │ ├── BaseNodeImpl.java │ │ │ │ │ ├── BucketImpl.java │ │ │ │ │ ├── CanonicalTreeBuilder.java │ │ │ │ │ ├── ExtraData.java │ │ │ │ │ ├── FeatureNode.java │ │ │ │ │ ├── Float32Bounds.java │ │ │ │ │ ├── QuadTreeBuilder.java │ │ │ │ │ ├── README.md │ │ │ │ │ ├── RevCommitImpl.java │ │ │ │ │ ├── RevFeatureImpl.java │ │ │ │ │ ├── RevFeatureTypeImpl.java │ │ │ │ │ ├── RevObjectFactoryImpl.java │ │ │ │ │ ├── RevPersonImpl.java │ │ │ │ │ ├── RevTagImpl.java │ │ │ │ │ ├── RevTreeImpl.java │ │ │ │ │ ├── TreeNode.java │ │ │ │ │ └── ValueArrayImpl.java │ │ │ │ ├── internal │ │ │ │ │ ├── CanonicalClusteringStrategy.java │ │ │ │ │ ├── ClusteringStrategy.java │ │ │ │ │ ├── ClusteringStrategyBuilder.java │ │ │ │ │ ├── DAG.java │ │ │ │ │ ├── DAGNode.java │ │ │ │ │ ├── DAGStorageProvider.java │ │ │ │ │ ├── DAGStorageProviderFactory.java │ │ │ │ │ ├── DAGTreeBuilder.java │ │ │ │ │ ├── HeapDAGStorageProvider.java │ │ │ │ │ ├── HeapDAGStorageProviderFactory.java │ │ │ │ │ ├── NodeId.java │ │ │ │ │ ├── QuadTreeClusteringStrategy.java │ │ │ │ │ ├── Quadrant.java │ │ │ │ │ └── TreeId.java │ │ │ │ └── package-info.java │ │ │ │ ├── repository │ │ │ │ ├── Command.java │ │ │ │ ├── CommandFactory.java │ │ │ │ ├── Conflict.java │ │ │ │ ├── Context.java │ │ │ │ ├── ContextBuilder.java │ │ │ │ ├── DefaultPlatform.java │ │ │ │ ├── DefaultProgressListener.java │ │ │ │ ├── DiffObjectCount.java │ │ │ │ ├── FeatureInfo.java │ │ │ │ ├── Hints.java │ │ │ │ ├── IndexInfo.java │ │ │ │ ├── LocalRemoteRefSpec.java │ │ │ │ ├── Platform.java │ │ │ │ ├── ProgressListener.java │ │ │ │ ├── Remote.java │ │ │ │ ├── Repository.java │ │ │ │ ├── RepositoryConnectionException.java │ │ │ │ ├── RepositoryFinder.java │ │ │ │ ├── RepositoryResolver.java │ │ │ │ ├── StagingArea.java │ │ │ │ ├── SubProgressListener.java │ │ │ │ └── WorkingTree.java │ │ │ │ └── storage │ │ │ │ ├── AbstractStore.java │ │ │ │ ├── AutoCloseableIterator.java │ │ │ │ ├── BlobStore.java │ │ │ │ ├── BulkOpListener.java │ │ │ │ ├── ConfigDatabase.java │ │ │ │ ├── ConfigException.java │ │ │ │ ├── ConfigStore.java │ │ │ │ ├── ConflictsDatabase.java │ │ │ │ ├── DiffObjectInfo.java │ │ │ │ ├── GraphDatabase.java │ │ │ │ ├── IndexDatabase.java │ │ │ │ ├── IndexDuplicator.java │ │ │ │ ├── ObjectDatabase.java │ │ │ │ ├── ObjectInfo.java │ │ │ │ ├── ObjectStore.java │ │ │ │ ├── RefChange.java │ │ │ │ ├── RefDatabase.java │ │ │ │ ├── RevObjectSerializer.java │ │ │ │ ├── Store.java │ │ │ │ └── internal │ │ │ │ ├── AbstractConfigDatabase.java │ │ │ │ └── ObjectStoreDiffObjectIterator.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── org.locationtech.geogig.model.RevObjectFactory │ │ │ └── org.locationtech.geogig.model.internal.DAGStorageProviderFactory │ │ └── test │ │ └── java │ │ └── org │ │ └── locationtech │ │ └── geogig │ │ ├── model │ │ ├── BucketTest.java │ │ ├── CanonicalNodeOrderTest.java │ │ ├── FieldTypeTest.java │ │ ├── HashObjectFunnelsTest.java │ │ ├── NodeRefTest.java │ │ ├── NodeTest.java │ │ ├── ObjectIdTest.java │ │ ├── RefTest.java │ │ ├── RevCommitBuilderTest.java │ │ ├── RevFeatureBuilderTest.java │ │ ├── RevObjectFactoryConformanceTest.java │ │ ├── RevObjectTest.java │ │ ├── RevObjectTestUtil.java │ │ ├── RevPersonBuilderTest.java │ │ ├── RevTreeTest.java │ │ ├── SymRefTest.java │ │ └── impl │ │ │ ├── Float32BoundsTest.java │ │ │ └── RevObjectFactoryImplConformanceTest.java │ │ ├── repository │ │ ├── ConflictTest.java │ │ ├── DefaultPlatformTest.java │ │ ├── DiffEntryTest.java │ │ ├── DiffObjectCountTest.java │ │ ├── FeatureInfoTest.java │ │ ├── HintsTest.java │ │ ├── LocalRemoteRefSpecTest.java │ │ ├── ProgressListenerTest.java │ │ ├── RemoteTest.java │ │ └── RepositoryResolverTestUtil.java │ │ └── storage │ │ ├── AutoCloseableIteratorTest.java │ │ ├── BulkOpListenerTest.java │ │ ├── ConfigExceptionTest.java │ │ └── GraphDatabaseTest.java ├── benchmarks │ ├── .gitignore │ ├── core │ │ ├── .pydevproject │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ ├── model │ │ │ ├── RevTreeBuilderBenchmark.java │ │ │ └── RevTreeBuilderBenchmarkState.java │ │ │ └── plumbing │ │ │ └── diff │ │ │ ├── PreOrderDiffWalkBenchmark.java │ │ │ └── PreOrderDiffWalkBenchmarkState.java │ └── pom.xml ├── cli │ ├── app │ │ ├── README.rst │ │ ├── build-native-image.sh │ │ ├── cli-assembly-dir.xml │ │ ├── cli-assembly-zip.xml │ │ ├── pom.xml │ │ ├── proxies.json │ │ ├── reflections.json │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── cli │ │ │ │ │ ├── app │ │ │ │ │ ├── CLI.java │ │ │ │ │ └── Logging.java │ │ │ │ │ └── storage │ │ │ │ │ ├── ExpandedTabWriter.java │ │ │ │ │ ├── LsRepos.java │ │ │ │ │ ├── PGCreateDDL.java │ │ │ │ │ ├── PGStorageUpgrade.java │ │ │ │ │ └── TableWriter.java │ │ │ └── resources │ │ │ │ ├── META-INF │ │ │ │ └── services │ │ │ │ │ └── org.locationtech.geogig.cli.CLICommand │ │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── cli │ │ │ │ └── app │ │ │ │ └── logback_default.xml │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── cli │ │ │ └── app │ │ │ └── ConsoleTest.java │ ├── core │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── cli │ │ │ │ │ ├── AbstractCommand.java │ │ │ │ │ ├── AnsiDecorator.java │ │ │ │ │ ├── ArgumentTokenizer.java │ │ │ │ │ ├── CLICommand.java │ │ │ │ │ ├── CLISubCommand.java │ │ │ │ │ ├── CommandFailedException.java │ │ │ │ │ ├── Console.java │ │ │ │ │ ├── Geogig.java │ │ │ │ │ ├── GeogigCLI.java │ │ │ │ │ ├── InvalidParameterException.java │ │ │ │ │ ├── VersionProvider.java │ │ │ │ │ ├── annotation │ │ │ │ │ ├── ObjectDatabaseReadOnly.java │ │ │ │ │ ├── ReadOnly.java │ │ │ │ │ ├── RemotesReadOnly.java │ │ │ │ │ └── RequiresRepository.java │ │ │ │ │ ├── plumbing │ │ │ │ │ ├── Cat.java │ │ │ │ │ ├── DiffTree.java │ │ │ │ │ ├── Insert.java │ │ │ │ │ ├── LsTree.java │ │ │ │ │ ├── MergeBase.java │ │ │ │ │ ├── RebuildGraph.java │ │ │ │ │ ├── RevList.java │ │ │ │ │ ├── RevParse.java │ │ │ │ │ ├── ShowRef.java │ │ │ │ │ ├── VerifyPatch.java │ │ │ │ │ └── WalkGraph.java │ │ │ │ │ └── porcelain │ │ │ │ │ ├── Add.java │ │ │ │ │ ├── Apply.java │ │ │ │ │ ├── Blame.java │ │ │ │ │ ├── Branch.java │ │ │ │ │ ├── Checkout.java │ │ │ │ │ ├── CherryPick.java │ │ │ │ │ ├── Clean.java │ │ │ │ │ ├── ColorArg.java │ │ │ │ │ ├── Commit.java │ │ │ │ │ ├── Config.java │ │ │ │ │ ├── Conflicts.java │ │ │ │ │ ├── Diff.java │ │ │ │ │ ├── DiffPrinter.java │ │ │ │ │ ├── FormatPatch.java │ │ │ │ │ ├── Init.java │ │ │ │ │ ├── Log.java │ │ │ │ │ ├── Ls.java │ │ │ │ │ ├── Merge.java │ │ │ │ │ ├── Rebase.java │ │ │ │ │ ├── Remove.java │ │ │ │ │ ├── Reset.java │ │ │ │ │ ├── Revert.java │ │ │ │ │ ├── Show.java │ │ │ │ │ ├── Squash.java │ │ │ │ │ ├── Status.java │ │ │ │ │ ├── Tag.java │ │ │ │ │ └── index │ │ │ │ │ ├── CreateIndex.java │ │ │ │ │ ├── DropIndex.java │ │ │ │ │ ├── IndexCommandProxy.java │ │ │ │ │ ├── ListIndexes.java │ │ │ │ │ ├── RebuildIndex.java │ │ │ │ │ └── UpdateIndex.java │ │ │ └── resources │ │ │ │ ├── META-INF │ │ │ │ └── services │ │ │ │ │ └── org.locationtech.geogig.cli.CLIModule │ │ │ │ └── logback.xml │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── cli │ │ │ │ └── test │ │ │ │ ├── ArgumentTokenizerTest.java │ │ │ │ └── functional │ │ │ │ ├── CLIContext.java │ │ │ │ ├── CLIContextProvider.java │ │ │ │ ├── CLITestContextBuilder.java │ │ │ │ ├── DefaultStepDefinitions.java │ │ │ │ ├── FileRepoUriBuilder.java │ │ │ │ ├── RunGeneralFunctionalIT.java │ │ │ │ ├── RunIndexFunctionalIT.java │ │ │ │ ├── RunPlumbingFunctionalIT.java │ │ │ │ ├── RunPorcelainFunctionalIT.java │ │ │ │ ├── TestFeatures.java │ │ │ │ └── TestRepoURIBuilder.java │ │ │ └── resources │ │ │ └── features │ │ │ ├── general │ │ │ ├── General.feature │ │ │ └── Help.feature │ │ │ ├── index │ │ │ ├── AutomaticIndexUpdating.feature │ │ │ ├── CreateIndex.feature │ │ │ ├── DropIndex.feature │ │ │ ├── ListIndexes.feature │ │ │ ├── RebuildIndex.feature │ │ │ └── UpdateIndex.feature │ │ │ ├── plumbing │ │ │ ├── Cat.feature │ │ │ ├── DiffTree.feature │ │ │ ├── Insert.feature │ │ │ ├── LsTree.feature │ │ │ ├── MergeBase.feature │ │ │ ├── RebuildGraph.feature │ │ │ ├── RevList.feature │ │ │ ├── RevParse.feature │ │ │ ├── ShowRef.feature │ │ │ ├── VerifyPatch.feature │ │ │ └── WalkGraph.feature │ │ │ └── porcelain │ │ │ ├── Add.feature │ │ │ ├── Apply.feature │ │ │ ├── Blame.feature │ │ │ ├── Branch.feature │ │ │ ├── Checkout.feature │ │ │ ├── CherryPick.feature │ │ │ ├── Clean.feature │ │ │ ├── Commit.feature │ │ │ ├── Config.feature │ │ │ ├── Conflicts.feature │ │ │ ├── Diff.feature │ │ │ ├── FormatPatch.feature │ │ │ ├── Init.feature │ │ │ ├── Log.feature │ │ │ ├── Ls.feature │ │ │ ├── Merge.feature │ │ │ ├── Rebase.feature │ │ │ ├── Remove.feature │ │ │ ├── Reset.feature │ │ │ ├── Revert.feature │ │ │ ├── Show.feature │ │ │ ├── Squash.feature │ │ │ ├── Status.feature │ │ │ ├── Tag.feature │ │ │ └── Version.feature │ ├── geotools │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── geotools │ │ │ │ │ └── cli │ │ │ │ │ ├── base │ │ │ │ │ ├── DataStoreDescribe.java │ │ │ │ │ ├── DataStoreExport.java │ │ │ │ │ ├── DataStoreImport.java │ │ │ │ │ └── DataStoreList.java │ │ │ │ │ ├── geojson │ │ │ │ │ ├── AbstractGeoJsonCommand.java │ │ │ │ │ ├── GeoJsonCommandProxy.java │ │ │ │ │ ├── GeoJsonExport.java │ │ │ │ │ └── GeoJsonImport.java │ │ │ │ │ ├── geopkg │ │ │ │ │ ├── GeopkgCommandProxy.java │ │ │ │ │ ├── GeopkgDescribe.java │ │ │ │ │ ├── GeopkgExport.java │ │ │ │ │ ├── GeopkgImport.java │ │ │ │ │ ├── GeopkgList.java │ │ │ │ │ ├── GeopkgPull.java │ │ │ │ │ └── GeopkgSupport.java │ │ │ │ │ ├── postgis │ │ │ │ │ ├── PGCommandProxy.java │ │ │ │ │ ├── PGDescribe.java │ │ │ │ │ ├── PGExport.java │ │ │ │ │ ├── PGImport.java │ │ │ │ │ ├── PGList.java │ │ │ │ │ └── PGSupport.java │ │ │ │ │ └── shp │ │ │ │ │ ├── AbstractShpCommand.java │ │ │ │ │ ├── ShpCommandProxy.java │ │ │ │ │ ├── ShpDescribe.java │ │ │ │ │ ├── ShpExport.java │ │ │ │ │ ├── ShpExportDiff.java │ │ │ │ │ └── ShpImport.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.locationtech.geogig.cli.CLICommand │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── geotools │ │ │ │ └── cli │ │ │ │ ├── geojson │ │ │ │ ├── GeoJsonExportTest.java │ │ │ │ └── GeoJsonImportTest.java │ │ │ │ ├── geopkg │ │ │ │ ├── GeoPackageTestSupport.java │ │ │ │ ├── GeoPkgDescribeTest.java │ │ │ │ ├── GeoPkgExportTest.java │ │ │ │ ├── GeoPkgImportTest.java │ │ │ │ ├── GeoPkgListTest.java │ │ │ │ ├── GeoPkgPullTest.java │ │ │ │ ├── GeoPkgStepDefinitions.java │ │ │ │ ├── MemoryDataStoreWithProvidedFIDSupport.java │ │ │ │ └── RunGeoPkgFunctionalIT.java │ │ │ │ ├── postgis │ │ │ │ ├── PGDescribeTest.java │ │ │ │ ├── PGExportTest.java │ │ │ │ ├── PGImportTest.java │ │ │ │ └── PGListTest.java │ │ │ │ ├── shp │ │ │ │ ├── RunShpFunctionalIT.java │ │ │ │ ├── ShpExportTest.java │ │ │ │ └── ShpImportTest.java │ │ │ │ └── test │ │ │ │ └── functional │ │ │ │ ├── GeoToolsStepDefinitions.java │ │ │ │ ├── IniOracleProperties.java │ │ │ │ ├── IniPGProperties.java │ │ │ │ └── RunGeoToolsFunctionalOnlineIT.java │ │ │ └── resources │ │ │ ├── features │ │ │ ├── geopkg │ │ │ │ ├── GeoPkgDescribe.feature │ │ │ │ ├── GeoPkgExport.feature │ │ │ │ ├── GeoPkgImport.feature │ │ │ │ ├── GeoPkgList.feature │ │ │ │ └── GeoPkgPull.feature │ │ │ ├── online │ │ │ │ ├── PGDescribe.feature │ │ │ │ ├── PGExport.feature │ │ │ │ ├── PGImport.feature │ │ │ │ └── PGList.feature │ │ │ ├── shp │ │ │ │ └── ShpExport.feature │ │ │ └── testdb.sqlite │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── geotools │ │ │ └── cli │ │ │ ├── geojson │ │ │ └── sample.geojson │ │ │ └── shp │ │ │ └── shape.shp │ ├── pom.xml │ ├── remoting │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── cli │ │ │ │ │ └── remoting │ │ │ │ │ ├── Clone.java │ │ │ │ │ ├── Fetch.java │ │ │ │ │ ├── FetchResultPrinter.java │ │ │ │ │ ├── Pull.java │ │ │ │ │ ├── Push.java │ │ │ │ │ ├── RemoteAdd.java │ │ │ │ │ ├── RemoteExtension.java │ │ │ │ │ ├── RemoteList.java │ │ │ │ │ └── RemoteRemove.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.locationtech.geogig.cli.CLICommand │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── cli │ │ │ │ └── test │ │ │ │ └── functional │ │ │ │ └── RunRemoteFunctionalIT.java │ │ │ └── resources │ │ │ └── features │ │ │ └── remote │ │ │ ├── Branch.feature │ │ │ ├── Checkout.feature │ │ │ ├── Clone.feature │ │ │ ├── Fetch.feature │ │ │ ├── Pull.feature │ │ │ ├── Push.feature │ │ │ └── Remote.feature │ └── storage-postgres │ │ └── pom.xml ├── core │ ├── .pydevproject │ ├── NOTICE.txt │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ ├── data │ │ │ │ └── retrieve │ │ │ │ │ ├── BulkFeatureRetriever.java │ │ │ │ │ ├── DiffFeatureBuilder.java │ │ │ │ │ ├── DiffFeatureFlattenedBuilder.java │ │ │ │ │ └── MultiFeatureTypeBuilder.java │ │ │ │ ├── di │ │ │ │ ├── CanRunDuringConflict.java │ │ │ │ ├── ConflictInterceptor.java │ │ │ │ ├── ContextImpl.java │ │ │ │ ├── Decorator.java │ │ │ │ ├── DecoratorProvider.java │ │ │ │ ├── DelegatingContext.java │ │ │ │ ├── PluginsModule.java │ │ │ │ ├── RefDatabaseSnapshot.java │ │ │ │ └── SnapshotContext.java │ │ │ │ ├── dsl │ │ │ │ ├── Blobs.java │ │ │ │ ├── Commands.java │ │ │ │ ├── CommitGraph.java │ │ │ │ ├── Config.java │ │ │ │ ├── Conflicts.java │ │ │ │ ├── Geogig.java │ │ │ │ ├── Indexes.java │ │ │ │ ├── ObjectStores.java │ │ │ │ ├── Objects.java │ │ │ │ ├── Refs.java │ │ │ │ └── TreeWorker.java │ │ │ │ ├── hooks │ │ │ │ ├── CannotRunGeogigOperationException.java │ │ │ │ ├── CommandHook.java │ │ │ │ ├── CommandHookChain.java │ │ │ │ ├── CommandHooksDecorator.java │ │ │ │ ├── Hookable.java │ │ │ │ └── builtin │ │ │ │ │ ├── RefLogCommandHook.java │ │ │ │ │ └── UpdateIndexesHook.java │ │ │ │ ├── plumbing │ │ │ │ ├── CatObject.java │ │ │ │ ├── CheckRefFormat.java │ │ │ │ ├── CheckSparsePath.java │ │ │ │ ├── CleanRefsOp.java │ │ │ │ ├── CommitFromDateOp.java │ │ │ │ ├── DeepCopy.java │ │ │ │ ├── DescribeFeatureType.java │ │ │ │ ├── DiffBounds.java │ │ │ │ ├── DiffCount.java │ │ │ │ ├── DiffFeature.java │ │ │ │ ├── DiffIndex.java │ │ │ │ ├── DiffTree.java │ │ │ │ ├── DiffWorkTree.java │ │ │ │ ├── FindChangedTrees.java │ │ │ │ ├── FindCommonAncestor.java │ │ │ │ ├── FindFeatureTypeTrees.java │ │ │ │ ├── FindOrCreateSubtree.java │ │ │ │ ├── FindTreeChild.java │ │ │ │ ├── ForEachRef.java │ │ │ │ ├── HashObject.java │ │ │ │ ├── LsTreeOp.java │ │ │ │ ├── MapRef.java │ │ │ │ ├── ParseTimestamp.java │ │ │ │ ├── RebuildGraphOp.java │ │ │ │ ├── RefParse.java │ │ │ │ ├── ResolveBranchId.java │ │ │ │ ├── ResolveCommit.java │ │ │ │ ├── ResolveFeatureType.java │ │ │ │ ├── ResolveGeogigURI.java │ │ │ │ ├── ResolveObjectType.java │ │ │ │ ├── ResolveRepository.java │ │ │ │ ├── ResolveRepositoryName.java │ │ │ │ ├── ResolveTree.java │ │ │ │ ├── ResolveTreeish.java │ │ │ │ ├── RevObjectParse.java │ │ │ │ ├── RevParse.java │ │ │ │ ├── UpdateRef.java │ │ │ │ ├── UpdateRefs.java │ │ │ │ ├── UpdateSymRef.java │ │ │ │ ├── UpdateTree.java │ │ │ │ ├── WalkGraphOp.java │ │ │ │ ├── WriteTree.java │ │ │ │ ├── WriteTree2.java │ │ │ │ ├── diff │ │ │ │ │ ├── AttributeDiff.java │ │ │ │ │ ├── AttributeDiffFactory.java │ │ │ │ │ ├── BoundsFilteringDiffConsumer.java │ │ │ │ │ ├── DefaultGeometryDiffImpl.java │ │ │ │ │ ├── DepthTreeIterator.java │ │ │ │ │ ├── DiffCountConsumer.java │ │ │ │ │ ├── DiffMatchPatch.java │ │ │ │ │ ├── DiffPathFilter.java │ │ │ │ │ ├── DiffPathTracker.java │ │ │ │ │ ├── DiffSummary.java │ │ │ │ │ ├── DiffSummaryOp.java │ │ │ │ │ ├── FeatureDiff.java │ │ │ │ │ ├── FeatureTypeDiff.java │ │ │ │ │ ├── GenericAttributeDiffImpl.java │ │ │ │ │ ├── GeometryAttributeDiff.java │ │ │ │ │ ├── LCSGeometryDiffImpl.java │ │ │ │ │ ├── MutableTree.java │ │ │ │ │ ├── Patch.java │ │ │ │ │ ├── PatchSerializer.java │ │ │ │ │ ├── PathFilteringDiffConsumer.java │ │ │ │ │ ├── PostOrderDiffWalk.java │ │ │ │ │ ├── PreOrderDiffWalk.java │ │ │ │ │ ├── TreeDifference.java │ │ │ │ │ ├── VerifyPatchOp.java │ │ │ │ │ └── VerifyPatchResults.java │ │ │ │ ├── index │ │ │ │ │ ├── BuildFullHistoryIndexOp.java │ │ │ │ │ ├── BuildIndexOp.java │ │ │ │ │ ├── CreateIndexInfoOp.java │ │ │ │ │ ├── MaterializedBuilderConsumer.java │ │ │ │ │ └── SimpleTreeBuilderConsumer.java │ │ │ │ ├── merge │ │ │ │ │ ├── CheckMergeScenarioOp.java │ │ │ │ │ ├── ConflictsCheckOp.java │ │ │ │ │ ├── ConflictsCountOp.java │ │ │ │ │ ├── ConflictsQueryOp.java │ │ │ │ │ ├── ConflictsUtils.java │ │ │ │ │ ├── ConflictsWriteOp.java │ │ │ │ │ ├── DiffMergeFeaturesOp.java │ │ │ │ │ ├── MergeFeaturesOp.java │ │ │ │ │ ├── MergeScenarioConsumer.java │ │ │ │ │ ├── MergeScenarioReport.java │ │ │ │ │ ├── MergeStatusBuilder.java │ │ │ │ │ ├── ReadMergeCommitMessageOp.java │ │ │ │ │ ├── ReportCommitConflictsOp.java │ │ │ │ │ ├── ReportMergeScenarioOp.java │ │ │ │ │ └── SaveMergeCommitMessageOp.java │ │ │ │ └── remotes │ │ │ │ │ ├── RemoteAddOp.java │ │ │ │ │ ├── RemoteException.java │ │ │ │ │ ├── RemoteRemoveOp.java │ │ │ │ │ └── RemoteResolve.java │ │ │ │ ├── porcelain │ │ │ │ ├── AddOp.java │ │ │ │ ├── ApplyPatchOp.java │ │ │ │ ├── BlameException.java │ │ │ │ ├── BlameOp.java │ │ │ │ ├── BlameReport.java │ │ │ │ ├── BranchConfig.java │ │ │ │ ├── BranchConfigOp.java │ │ │ │ ├── BranchCreateOp.java │ │ │ │ ├── BranchDeleteOp.java │ │ │ │ ├── BranchListOp.java │ │ │ │ ├── BranchRenameOp.java │ │ │ │ ├── BranchResolveOp.java │ │ │ │ ├── CannotApplyPatchException.java │ │ │ │ ├── CheckoutException.java │ │ │ │ ├── CheckoutOp.java │ │ │ │ ├── CheckoutResult.java │ │ │ │ ├── CherryPickOp.java │ │ │ │ ├── CleanOp.java │ │ │ │ ├── CommitOp.java │ │ │ │ ├── ConfigGet.java │ │ │ │ ├── ConfigOp.java │ │ │ │ ├── ConflictsException.java │ │ │ │ ├── CreatePatchOp.java │ │ │ │ ├── DiffOp.java │ │ │ │ ├── FeatureNodeRefFromRefspec.java │ │ │ │ ├── InitOp.java │ │ │ │ ├── LogOp.java │ │ │ │ ├── MergeConflictsException.java │ │ │ │ ├── MergeOp.java │ │ │ │ ├── NothingToCommitException.java │ │ │ │ ├── RebaseConflictsException.java │ │ │ │ ├── RebaseOp.java │ │ │ │ ├── RemoveOp.java │ │ │ │ ├── ResetOp.java │ │ │ │ ├── RevertAbort.java │ │ │ │ ├── RevertConflictsException.java │ │ │ │ ├── RevertOp.java │ │ │ │ ├── SquashOp.java │ │ │ │ ├── StatusOp.java │ │ │ │ ├── TagCreateOp.java │ │ │ │ ├── TagListOp.java │ │ │ │ ├── TagRemoveOp.java │ │ │ │ ├── ValueAndCommit.java │ │ │ │ ├── VersionInfo.java │ │ │ │ ├── VersionOp.java │ │ │ │ └── index │ │ │ │ │ ├── CreateIndexOp.java │ │ │ │ │ ├── CreateQuadTree.java │ │ │ │ │ ├── DropIndexOp.java │ │ │ │ │ ├── Index.java │ │ │ │ │ ├── IndexUtils.java │ │ │ │ │ ├── UpdateIndexOp.java │ │ │ │ │ └── UpdateIndexesOp.java │ │ │ │ ├── repository │ │ │ │ └── impl │ │ │ │ │ ├── AbstractGeoGigOp.java │ │ │ │ │ ├── ContextBuilderImpl.java │ │ │ │ │ ├── DepthSearch.java │ │ │ │ │ ├── FeatureToDelete.java │ │ │ │ │ ├── FileRepositoryResolver.java │ │ │ │ │ ├── GlobalContextBuilder.java │ │ │ │ │ ├── IniRepositoryFilter.java │ │ │ │ │ ├── RepositoryBusyException.java │ │ │ │ │ ├── RepositoryFilter.java │ │ │ │ │ ├── RepositoryImpl.java │ │ │ │ │ ├── SpatialOps.java │ │ │ │ │ ├── StagingAreaImpl.java │ │ │ │ │ ├── WorkingTreeImpl.java │ │ │ │ │ └── WorkingTreeInsertHelper.java │ │ │ │ ├── storage │ │ │ │ ├── cache │ │ │ │ │ ├── CacheIdentifier.java │ │ │ │ │ ├── CacheKey.java │ │ │ │ │ ├── CacheManager.java │ │ │ │ │ ├── CacheManagerBean.java │ │ │ │ │ ├── CacheStats.java │ │ │ │ │ ├── ObjectCache.java │ │ │ │ │ ├── SharedCache.java │ │ │ │ │ └── SharedCacheBuilder.java │ │ │ │ ├── datastream │ │ │ │ │ ├── DataStreamRevObjectSerializerV1.java │ │ │ │ │ ├── DataStreamRevObjectSerializerV2.java │ │ │ │ │ ├── DataStreamRevObjectSerializerV2_1.java │ │ │ │ │ ├── DataStreamRevObjectSerializerV2_2.java │ │ │ │ │ ├── DataStreamValueSerializerV1.java │ │ │ │ │ ├── DataStreamValueSerializerV2.java │ │ │ │ │ ├── Float32BoundsSerializer.java │ │ │ │ │ ├── FormatCommonV1.java │ │ │ │ │ ├── FormatCommonV2.java │ │ │ │ │ ├── FormatCommonV2_1.java │ │ │ │ │ ├── FormatCommonV2_2.java │ │ │ │ │ ├── RevObjectSerializerProxy.java │ │ │ │ │ ├── ValueSerializer.java │ │ │ │ │ ├── Varint.java │ │ │ │ │ └── Varints.java │ │ │ │ ├── decorator │ │ │ │ │ ├── ForwardingConfigDatabase.java │ │ │ │ │ ├── ForwardingConfigStore.java │ │ │ │ │ ├── ForwardingConflictsDatabase.java │ │ │ │ │ ├── ForwardingGraphDatabase.java │ │ │ │ │ ├── ForwardingIndexDatabase.java │ │ │ │ │ ├── ForwardingObjectDatabase.java │ │ │ │ │ ├── ForwardingObjectStore.java │ │ │ │ │ └── ForwardingRefDatabase.java │ │ │ │ ├── fs │ │ │ │ │ ├── FileBlobStore.java │ │ │ │ │ ├── FileRefDatabase.java │ │ │ │ │ ├── INIFile.java │ │ │ │ │ ├── IniFileConfigDatabase.java │ │ │ │ │ └── IniFileConfigStore.java │ │ │ │ ├── impl │ │ │ │ │ ├── AbstractObjectStore.java │ │ │ │ │ ├── Blobs.java │ │ │ │ │ ├── ConnectionManager.java │ │ │ │ │ ├── INIBlob.java │ │ │ │ │ ├── IndexInfoSerializer.java │ │ │ │ │ ├── ObjectReader.java │ │ │ │ │ ├── ObjectWriter.java │ │ │ │ │ ├── PersistedIterable.java │ │ │ │ │ ├── SimpleLockingRefDatabase.java │ │ │ │ │ └── StagingDbCompositionHelper.java │ │ │ │ ├── memory │ │ │ │ │ ├── Edge.java │ │ │ │ │ ├── Graph.java │ │ │ │ │ ├── HeapBlobStore.java │ │ │ │ │ ├── HeapConfigDatabase.java │ │ │ │ │ ├── HeapConfigStore.java │ │ │ │ │ ├── HeapConflictsDatabase.java │ │ │ │ │ ├── HeapGraphDatabase.java │ │ │ │ │ ├── HeapIndexDatabase.java │ │ │ │ │ ├── HeapObjectDatabase.java │ │ │ │ │ ├── HeapObjectStore.java │ │ │ │ │ ├── HeapRefDatabase.java │ │ │ │ │ ├── MemoryRepositoryResolver.java │ │ │ │ │ ├── Node.java │ │ │ │ │ ├── PathToRootWalker.java │ │ │ │ │ └── ShortestPathWalker.java │ │ │ │ └── text │ │ │ │ │ ├── CrsTextSerializer.java │ │ │ │ │ ├── MapMarshaller.java │ │ │ │ │ ├── Marshaller.java │ │ │ │ │ ├── Marshallers.java │ │ │ │ │ ├── PrimitiveArrayMarshaller.java │ │ │ │ │ ├── TextRevObjectSerializer.java │ │ │ │ │ └── TextValueSerializer.java │ │ │ │ └── transaction │ │ │ │ ├── GeogigTransaction.java │ │ │ │ ├── NamespaceRefDatabase.java │ │ │ │ ├── TransactionBegin.java │ │ │ │ ├── TransactionBlobStore.java │ │ │ │ ├── TransactionBlobStoreImpl.java │ │ │ │ ├── TransactionConflictsDatabase.java │ │ │ │ ├── TransactionEnd.java │ │ │ │ ├── TransactionResolve.java │ │ │ │ └── TransactionStagingArea.java │ │ └── resources │ │ │ └── META-INF │ │ │ ├── native-image │ │ │ └── org.locationtech.geogig │ │ │ │ └── geogig-core │ │ │ │ ├── native-image.properties │ │ │ │ └── reflection-config.json │ │ │ └── services │ │ │ ├── org.locationtech.geogig.hooks.CommandHook │ │ │ ├── org.locationtech.geogig.repository.ContextBuilder │ │ │ └── org.locationtech.geogig.repository.RepositoryResolver │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ ├── data │ │ │ └── retrieve │ │ │ │ ├── BulkFeatureRetrieverTest.java │ │ │ │ └── MultiFeatureTypeBuilderTest.java │ │ │ ├── model │ │ │ ├── impl │ │ │ │ ├── CanonicalTreeBuilderTest.java │ │ │ │ ├── QuadTreeBuilderExpandCollapseTest.java │ │ │ │ ├── QuadTreeBuilderTest.java │ │ │ │ ├── QuadTreeBuilderTestPseudoMercator.java │ │ │ │ ├── QuadTreeBuilderTestWGS84.java │ │ │ │ ├── RevFeatureTest.java │ │ │ │ ├── RevFeatureTypeTest.java │ │ │ │ ├── RevObjectTestSupport.java │ │ │ │ └── RevTreeBuilderTest.java │ │ │ └── internal │ │ │ │ ├── CanonicalClusteringStrategyHeapStorageTest.java │ │ │ │ ├── CanonicalClusteringStrategyTest.java │ │ │ │ ├── DAGNodeTest.java │ │ │ │ ├── NodeIdTest.java │ │ │ │ ├── QuadTreeClusteringStrategyTest.java │ │ │ │ ├── QuadTreeClusteringStrategy_computeIdTest.java │ │ │ │ ├── QuadTreeClusteringStrategy_putTest.java │ │ │ │ ├── QuadTreeTestSupport.java │ │ │ │ └── QuadrantTest.java │ │ │ ├── plumbing │ │ │ ├── CatObjectTest.java │ │ │ ├── CheckRefFormatTest.java │ │ │ ├── DescribeFeatureTypeTest.java │ │ │ ├── DiffBoundsTest.java │ │ │ ├── DiffFeatureTest.java │ │ │ ├── DiffTreeTest.java │ │ │ ├── FindChangedTreesTest.java │ │ │ ├── HashObjectTest.java │ │ │ ├── ParseTimestampTest.java │ │ │ ├── RefParseTest.java │ │ │ ├── ResolveFeatureTypeTest.java │ │ │ ├── ResolveGeogigURITest.java │ │ │ ├── ResolveRepositoryNameTest.java │ │ │ ├── RevParseTest.java │ │ │ ├── TestSerializableObject.java │ │ │ ├── UpdateRefTest.java │ │ │ ├── UpdateSymRefTest.java │ │ │ ├── UpdateTreeTest.java │ │ │ ├── WalkGraphOpTest.java │ │ │ ├── WriteTree2Test.java │ │ │ ├── diff │ │ │ │ ├── AttributeDiffTest.java │ │ │ │ ├── DepthTreeIteratorTest.java │ │ │ │ ├── DiffCountConsumerTest.java │ │ │ │ ├── GeometryDiffTest.java │ │ │ │ ├── MutableTreeTest.java │ │ │ │ ├── PatchSerializationTest.java │ │ │ │ ├── PostOrderDiffWalkTest.java │ │ │ │ ├── PreOrderDiffWalkQuadTreeTest.java │ │ │ │ ├── PreOrderDiffWalkTest.java │ │ │ │ └── TreeDifferenceTest.java │ │ │ ├── index │ │ │ │ ├── BuildFullHistoryIndexOpTest.java │ │ │ │ ├── BuildIndexOpTest.java │ │ │ │ └── IndexTestSupport.java │ │ │ ├── merge │ │ │ │ ├── MergeFeaturesOpTest.java │ │ │ │ └── MergeStatusBuilderDiffEntrySerializerTest.java │ │ │ └── remotes │ │ │ │ ├── RemoteAddOpTest.java │ │ │ │ └── RemoteRemoveOpTest.java │ │ │ ├── porcelain │ │ │ ├── InitOpTest.java │ │ │ ├── RemoveOpTest.java │ │ │ └── index │ │ │ │ ├── CreateIndexOpTest.java │ │ │ │ ├── DropIndexOpTest.java │ │ │ │ ├── UpdateIndexOpTest.java │ │ │ │ └── UpdateIndexesOpTest.java │ │ │ ├── repository │ │ │ └── impl │ │ │ │ ├── AbstractGeoGigOpTest.java │ │ │ │ ├── DepthSearchTest.java │ │ │ │ ├── RepositoryResolverTest.java │ │ │ │ └── SpatialOpsTest.java │ │ │ ├── storage │ │ │ ├── cache │ │ │ │ ├── CacheManagerTest.java │ │ │ │ ├── KeyTest.java │ │ │ │ ├── ObjectCacheTest.java │ │ │ │ └── SharedCacheTest.java │ │ │ ├── datastream │ │ │ │ ├── DataStreamRevObjectSerializerV1Test.java │ │ │ │ ├── DataStreamRevObjectSerializerV2Test.java │ │ │ │ ├── DataStreamRevObjectSerializerV2_1Test.java │ │ │ │ ├── DataStreamRevObjectSerializerV2_2Test.java │ │ │ │ ├── Float32BoundsSerializationTest.java │ │ │ │ ├── FormatCommonV2_1Test.java │ │ │ │ └── VarintTest.java │ │ │ ├── fs │ │ │ │ ├── FileBlobStoreTest.java │ │ │ │ ├── FileRefDatabaseTest.java │ │ │ │ └── IniFileConfigDatabaseTest.java │ │ │ ├── impl │ │ │ │ ├── ConfigDatabaseTest.java │ │ │ │ ├── ConflictsDatabaseConformanceTest.java │ │ │ │ ├── GraphDatabaseTest.java │ │ │ │ ├── INIBlobTest.java │ │ │ │ ├── IndexDatabaseConformanceTest.java │ │ │ │ ├── ObjectDatabaseConformanceTest.java │ │ │ │ ├── ObjectStoreConformanceTest.java │ │ │ │ ├── PersistedIterableTest.java │ │ │ │ └── RevObjectSerializerConformanceTest.java │ │ │ ├── memory │ │ │ │ ├── HeapBlobStoreTest.java │ │ │ │ ├── HeapConfigDatabaseTest.java │ │ │ │ ├── HeapConflictsDatabaseConformanceTest.java │ │ │ │ ├── HeapGraphDatabaseTest.java │ │ │ │ ├── HeapIndexDatabaseConformanceTest.java │ │ │ │ ├── HeapObjectDatabaseConformanceTest.java │ │ │ │ ├── HeapObjectStoreConformanceTest.java │ │ │ │ ├── HeapRefDatabaseTest.java │ │ │ │ └── MemoryRepositoryResolverTest.java │ │ │ └── text │ │ │ │ ├── MapMarshallerTest.java │ │ │ │ ├── MarshallersTest.java │ │ │ │ ├── PrimitiveArrayMarshallerTest.java │ │ │ │ └── TextRevObjectSerializerTest.java │ │ │ ├── test │ │ │ ├── TestData.java │ │ │ ├── TestPlatform.java │ │ │ ├── TestRepository.java │ │ │ ├── TestSupport.java │ │ │ ├── integration │ │ │ │ ├── AddOpTest.java │ │ │ │ ├── ApplyPatchOpTest.java │ │ │ │ ├── BlameOpTest.java │ │ │ │ ├── BranchCreateOpTest.java │ │ │ │ ├── BranchDeleteOpTest.java │ │ │ │ ├── BranchRenameOpTest.java │ │ │ │ ├── CheckSparsePathTest.java │ │ │ │ ├── CheckoutOpTest.java │ │ │ │ ├── CherryPickOpTest.java │ │ │ │ ├── CleanOpTest.java │ │ │ │ ├── CleanRefsOpTest.java │ │ │ │ ├── CommitOpTest.java │ │ │ │ ├── ConfigOpTest.java │ │ │ │ ├── ConflictsReadWriteOpTest.java │ │ │ │ ├── CreatePatchOpTest.java │ │ │ │ ├── DiffOpTest.java │ │ │ │ ├── FindCommonAncestorTest.java │ │ │ │ ├── LogOpTest.java │ │ │ │ ├── LsTreeOpTest.java │ │ │ │ ├── MergeOpTest.java │ │ │ │ ├── OnlineTestProperties.java │ │ │ │ ├── RebaseOpTest.java │ │ │ │ ├── RebuildGraphOpTest.java │ │ │ │ ├── ReportCommitConflictsOpTest.java │ │ │ │ ├── ReportMergeConflictsOpTest.java │ │ │ │ ├── RepositoryTestCase.java │ │ │ │ ├── ResetOpTest.java │ │ │ │ ├── RevParseIntegrationTest.java │ │ │ │ ├── RevertOpTest.java │ │ │ │ ├── SquashOpTest.java │ │ │ │ ├── StatusOpTest.java │ │ │ │ ├── TagTest.java │ │ │ │ └── repository │ │ │ │ │ ├── IndexTest.java │ │ │ │ │ ├── RefDatabaseTest.java │ │ │ │ │ └── WorkingTreeTest.java │ │ │ └── performance │ │ │ │ ├── AbstractGraphDatabaseStressTest.java │ │ │ │ ├── AbstractObjectStoreStressTest.java │ │ │ │ ├── EnablePerformanceTestRule.java │ │ │ │ ├── HeapGraphDatabaseStressTest.java │ │ │ │ ├── LogOpPerformanceTest.java │ │ │ │ └── RevTreeBuilderPerformanceTest.java │ │ │ └── transaction │ │ │ ├── GeogigTransactionTest.java │ │ │ ├── NamespaceRefDatabaseTest.java │ │ │ └── TransactionBlobStoreTest.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.locationtech.geogig.repository.RepositoryResolver │ │ └── logback-test.xml ├── experimental │ ├── pom.xml │ └── ql │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── ql │ │ │ │ ├── cli │ │ │ │ └── QL.java │ │ │ │ └── porcelain │ │ │ │ ├── ExpressionLiteralExtractor.java │ │ │ │ ├── ExpressionToFilterConverter.java │ │ │ │ ├── QLDelete.java │ │ │ │ ├── QLInsert.java │ │ │ │ ├── QLSelect.java │ │ │ │ ├── QLUpdate.java │ │ │ │ ├── SetUseProvidedFidSimpleFeatureCollection.java │ │ │ │ └── StatementVisitorAdapter.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.locationtech.geogig.cli.CLICommand │ │ └── test │ │ └── java │ │ └── org │ │ └── locationtech │ │ └── geogig │ │ └── ql │ │ ├── cli │ │ ├── QLDeleteIntegrationTest.java │ │ ├── QLInsertIntegrationTest.java │ │ ├── QLSelectIntegrationTest.java │ │ ├── QLTestHelper.java │ │ └── QLUpdatetIntegrationTest.java │ │ └── porcelain │ │ └── ExpressionToFilterConverterTest.java ├── geotools │ ├── adapter │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ ├── data │ │ │ │ │ ├── FeatureBuilder.java │ │ │ │ │ ├── ForwardingFeatureCollection.java │ │ │ │ │ ├── ForwardingFeatureIterator.java │ │ │ │ │ ├── ForwardingFeatureSource.java │ │ │ │ │ └── GeogigSimpleFeature.java │ │ │ │ │ └── geotools │ │ │ │ │ └── adapt │ │ │ │ │ ├── BaseAdapter.java │ │ │ │ │ ├── GT.java │ │ │ │ │ ├── GTSimpleFeatureAdapter.java │ │ │ │ │ ├── GTSimpleFeatureTypeAdapter.java │ │ │ │ │ ├── MapToStringConverterFactory.java │ │ │ │ │ ├── PrimitiveArrayToStringConverterFactory.java │ │ │ │ │ └── SimpleFeatureAdapter.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.geotools.util.ConverterFactory │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── geotools │ │ │ └── adapt │ │ │ ├── MapToStringConverterFactoryTest.java │ │ │ └── PrimitiveArrayToStringConverterFactoryTest.java │ ├── commands │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── geotools │ │ │ │ │ ├── geopkg │ │ │ │ │ ├── AuditReport.java │ │ │ │ │ ├── AuditTable.java │ │ │ │ │ ├── GeoPkgForwardingFeatureIteratorProvider.java │ │ │ │ │ ├── GeopkgAuditExport.java │ │ │ │ │ ├── GeopkgAuditImport.java │ │ │ │ │ ├── GeopkgDataStoreAuditImportOp.java │ │ │ │ │ ├── GeopkgDataStoreExportDiffOp.java │ │ │ │ │ ├── GeopkgDataStoreExportOp.java │ │ │ │ │ ├── GeopkgDataStoreImportOp.java │ │ │ │ │ ├── GeopkgGeogigMetadata.java │ │ │ │ │ ├── GeopkgImportResult.java │ │ │ │ │ ├── GeopkgMergeConflictsException.java │ │ │ │ │ ├── InterchangeFormat.java │ │ │ │ │ └── RocksdbMap.java │ │ │ │ │ └── plumbing │ │ │ │ │ ├── DataStoreExportOp.java │ │ │ │ │ ├── DataStoreImportOp.java │ │ │ │ │ ├── DefaultDataStoreImportOp.java │ │ │ │ │ ├── DescribeOp.java │ │ │ │ │ ├── ExportDiffOp.java │ │ │ │ │ ├── ExportOp.java │ │ │ │ │ ├── FeatureTypeAdapterFeatureSource.java │ │ │ │ │ ├── ForceTypeAndFidFeatureSource.java │ │ │ │ │ ├── ForwardingFeatureIteratorProvider.java │ │ │ │ │ ├── GeoToolsOpException.java │ │ │ │ │ ├── ImportOp.java │ │ │ │ │ └── ListOp.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.locationtech.geogig.cli.CLIModule │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── geotools │ │ │ │ ├── TestHelper.java │ │ │ │ └── plumbing │ │ │ │ ├── DescribeOpTest.java │ │ │ │ ├── ExportDiffOpTest.java │ │ │ │ ├── ExportOpTest.java │ │ │ │ ├── FeatureTypeAdapterFeatureSourceTest.java │ │ │ │ ├── ImportOpTest.java │ │ │ │ └── ListOpTest.java │ │ │ └── resources │ │ │ ├── features │ │ │ ├── geopkg │ │ │ │ ├── GeoPkgDescribe.feature │ │ │ │ ├── GeoPkgExport.feature │ │ │ │ ├── GeoPkgImport.feature │ │ │ │ ├── GeoPkgList.feature │ │ │ │ └── GeoPkgPull.feature │ │ │ ├── online │ │ │ │ ├── PGDescribe.feature │ │ │ │ ├── PGExport.feature │ │ │ │ ├── PGImport.feature │ │ │ │ ├── PGList.feature │ │ │ │ └── geogig_pg_test.sql │ │ │ ├── shp │ │ │ │ └── ShpExport.feature │ │ │ └── testdb.sqlite │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── geotools │ │ │ └── cli │ │ │ ├── geojson │ │ │ └── sample.geojson │ │ │ └── shp │ │ │ └── shape.shp │ ├── datastore │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── geotools │ │ │ │ │ └── data │ │ │ │ │ ├── DiffFeatureScreenMapPredicate.java │ │ │ │ │ ├── GeoGigDataStore.java │ │ │ │ │ ├── GeoGigDataStoreFactory.java │ │ │ │ │ ├── GeoGigFeatureWriter.java │ │ │ │ │ ├── GeogigContentState.java │ │ │ │ │ ├── GeogigDiffFeatureSource.java │ │ │ │ │ ├── GeogigFeatureSource.java │ │ │ │ │ ├── GeogigFeatureStore.java │ │ │ │ │ ├── GeogigFeatureVisitorHandler.java │ │ │ │ │ ├── GeogigTransactionState.java │ │ │ │ │ └── reader │ │ │ │ │ ├── ExtraDataPropertyAccessorFactory.java │ │ │ │ │ ├── ExtractBounds.java │ │ │ │ │ ├── FeatureReaderAdapter.java │ │ │ │ │ ├── FeatureReaderBuilder.java │ │ │ │ │ ├── FeatureScreenMapPredicate.java │ │ │ │ │ ├── InReplacingFilterVisitor.java │ │ │ │ │ ├── MaterializedIndexFeatureIterator.java │ │ │ │ │ ├── PostFilter.java │ │ │ │ │ ├── PreFilter.java │ │ │ │ │ ├── PrePostFilterSplitter.java │ │ │ │ │ ├── RenamePropertyFilterVisitor.java │ │ │ │ │ ├── ScreenMapGeometryReplacer.java │ │ │ │ │ ├── ScreenMapPredicate.java │ │ │ │ │ ├── SimplifyingGeometryReplacer.java │ │ │ │ │ ├── SpatialDiffMerger.java │ │ │ │ │ └── WalkInfo.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ ├── org.geotools.data.DataStoreFactorySpi │ │ │ │ └── org.geotools.filter.expression.PropertyAccessorFactory │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── geotools │ │ │ └── data │ │ │ ├── GeoGigDataStoreFactoryTest.java │ │ │ ├── GeoGigDataStoreTest.java │ │ │ ├── GeoGigDiffFeatureSourceTest.java │ │ │ ├── GeoGigFeatureSourceTest.java │ │ │ ├── GeoGigFeatureStoreIndexedTest.java │ │ │ ├── GeoGigFeatureStoreTest.java │ │ │ ├── reader │ │ │ ├── ExtraDataPropertyAccessorFactoryTest.java │ │ │ ├── FeatureReaderBuilderTest.java │ │ │ ├── MaterializedIndexFeatureIteratorTest.java │ │ │ ├── PreFilterTest.java │ │ │ ├── PrePostFilterSplitterTest.java │ │ │ └── ScreenMapTests.java │ │ │ └── stresstest │ │ │ └── DataStoreConcurrencyTest.java │ └── pom.xml ├── metadata │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── crs │ │ │ ├── CRS.java │ │ │ ├── CoordinateReferenceSystem.java │ │ │ └── CrsMetadata.java │ │ └── test │ │ └── java │ │ └── org │ │ └── locationtech │ │ └── geogig │ │ └── crs │ │ ├── CRS_IT.java │ │ └── GenerateCrsMetadataTest.java ├── pom.xml ├── pullrequests │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── geogig │ │ │ └── commands │ │ │ └── pr │ │ │ ├── ChaninedCommand.java │ │ │ ├── PR.java │ │ │ ├── PRCloseOp.java │ │ │ ├── PRCommand.java │ │ │ ├── PRDeleteOp.java │ │ │ ├── PRFindOp.java │ │ │ ├── PRHealthCheckOp.java │ │ │ ├── PRInitOp.java │ │ │ ├── PRListOp.java │ │ │ ├── PRMergeOp.java │ │ │ ├── PRPrepareOp.java │ │ │ └── PRStatus.java │ │ └── test │ │ └── java │ │ └── org │ │ └── geogig │ │ └── commands │ │ └── pr │ │ ├── PRHealthCheckOpTest.java │ │ ├── PRInitOpTest.java │ │ ├── PRListOpTest.java │ │ ├── PRMergeOpTest.java │ │ ├── PRPrepareOpTest.java │ │ ├── PRResolveOpTest.java │ │ └── PullRequestsTestSupport.java ├── remoting │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── remotes │ │ │ │ ├── CloneOp.java │ │ │ │ ├── FetchOp.java │ │ │ │ ├── LsRemoteOp.java │ │ │ │ ├── OpenRemote.java │ │ │ │ ├── PullOp.java │ │ │ │ ├── PullResult.java │ │ │ │ ├── PushOp.java │ │ │ │ ├── RefDiff.java │ │ │ │ ├── RemoteListOp.java │ │ │ │ ├── SendPack.java │ │ │ │ ├── SynchronizationException.java │ │ │ │ ├── TransferSummary.java │ │ │ │ ├── internal │ │ │ │ ├── AbstractMappedRemoteRepo.java │ │ │ │ ├── AbstractRemoteRepo.java │ │ │ │ ├── CommitTraverser.java │ │ │ │ ├── DeduplicationService.java │ │ │ │ ├── Deduplicator.java │ │ │ │ ├── FilteredDiffIterator.java │ │ │ │ ├── HeapDeduplicationService.java │ │ │ │ ├── HeapDeduplicator.java │ │ │ │ ├── IRemoteRepo.java │ │ │ │ ├── LocalCopyingDiffIterator.java │ │ │ │ ├── LocalFilteredDiffIterator.java │ │ │ │ ├── LocalMappedRemoteRepo.java │ │ │ │ ├── LocalRemoteRepo.java │ │ │ │ ├── LocalRemoteResolver.java │ │ │ │ ├── LocalRepositoryWrapper.java │ │ │ │ ├── ObjectFunnel.java │ │ │ │ ├── ObjectFunnels.java │ │ │ │ ├── RemoteResolver.java │ │ │ │ └── RepositoryWrapper.java │ │ │ │ ├── pack │ │ │ │ ├── AbstractPackBuilder.java │ │ │ │ ├── BlockingIterator.java │ │ │ │ ├── ContentIdsProducer.java │ │ │ │ ├── DiffRemoteRefsOp.java │ │ │ │ ├── FetchOp.java │ │ │ │ ├── LocalPackBuilder.java │ │ │ │ ├── LocalPackProcessor.java │ │ │ │ ├── ObjectReporter.java │ │ │ │ ├── Pack.java │ │ │ │ ├── PackBuilder.java │ │ │ │ ├── PackImpl.java │ │ │ │ ├── PackProcessor.java │ │ │ │ ├── PackRequest.java │ │ │ │ ├── PreparePackOp.java │ │ │ │ ├── PushOp.java │ │ │ │ ├── ReceivePackOp.java │ │ │ │ ├── RefRequest.java │ │ │ │ ├── SendPackOp.java │ │ │ │ └── UpdateRemoteRefOp.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── META-INF │ │ │ ├── native-image │ │ │ └── org.locationtech.geogig │ │ │ │ └── geogig-remoting │ │ │ │ ├── native-image.properties │ │ │ │ └── reflection-config.json │ │ │ └── services │ │ │ └── org.locationtech.geogig.remotes.internal.RemoteResolver │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── test │ │ │ └── integration │ │ │ └── remoting │ │ │ ├── BranchListOpTest.java │ │ │ ├── CloneOpTest.java │ │ │ ├── CloneOpWithIndexTest.java │ │ │ ├── FetchOpTest.java │ │ │ ├── FetchOpWithIndexTest.java │ │ │ ├── PullOpTest.java │ │ │ ├── PushOpTest.java │ │ │ ├── RemoteListOpTest.java │ │ │ ├── RemoteRepositoryTestCase.java │ │ │ ├── RemotesIndexTestSupport.java │ │ │ ├── ShallowCloneTest.java │ │ │ └── SparseCloneTest.java │ │ └── resources │ │ └── logback-test.xml └── storage │ ├── cache │ ├── caffeine │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── cache │ │ │ │ │ └── caffeine │ │ │ │ │ ├── CaffeineCacheBuilder.java │ │ │ │ │ └── CaffeineSharedCache.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.locationtech.geogig.storage.cache.SharedCacheBuilder │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── cache │ │ │ ├── caffeine │ │ │ └── CaffeineSharedCacheTest.java │ │ │ └── performance │ │ │ └── ObjectCacheStressTest.java │ └── pom.xml │ ├── formats │ ├── flatbuffers │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── generated-sources │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── flatbuffers │ │ │ │ │ └── generated │ │ │ │ │ └── v1 │ │ │ │ │ ├── AttributeType.java │ │ │ │ │ ├── Bucket.java │ │ │ │ │ ├── Commit.java │ │ │ │ │ ├── Feature.java │ │ │ │ │ ├── LeafTree.java │ │ │ │ │ ├── NodeTree.java │ │ │ │ │ ├── ObjectType.java │ │ │ │ │ ├── Person.java │ │ │ │ │ ├── QualifiedName.java │ │ │ │ │ ├── RevisionObject.java │ │ │ │ │ ├── SHA.java │ │ │ │ │ ├── SimpleAttributeDescriptor.java │ │ │ │ │ ├── SimpleFeatureType.java │ │ │ │ │ ├── Tag.java │ │ │ │ │ └── values │ │ │ │ │ ├── BIG_DECIMAL.java │ │ │ │ │ ├── BIG_INTEGER.java │ │ │ │ │ ├── BOOLEAN.java │ │ │ │ │ ├── BOOLEAN_ARRAY.java │ │ │ │ │ ├── BYTE.java │ │ │ │ │ ├── BYTE_ARRAY.java │ │ │ │ │ ├── Bounds.java │ │ │ │ │ ├── CHAR.java │ │ │ │ │ ├── CHAR_ARRAY.java │ │ │ │ │ ├── DATETIME.java │ │ │ │ │ ├── DOUBLE.java │ │ │ │ │ ├── DOUBLE_ARRAY.java │ │ │ │ │ ├── Dictionary.java │ │ │ │ │ ├── ENCODEDGEOMETRY.java │ │ │ │ │ ├── ENVELOPE_2D.java │ │ │ │ │ ├── FLATGEOMETRY.java │ │ │ │ │ ├── FLOAT.java │ │ │ │ │ ├── FLOAT_ARRAY.java │ │ │ │ │ ├── GEOMETRY.java │ │ │ │ │ ├── GeometryType.java │ │ │ │ │ ├── INTEGER.java │ │ │ │ │ ├── INTEGER_ARRAY.java │ │ │ │ │ ├── LONG.java │ │ │ │ │ ├── LONG_ARRAY.java │ │ │ │ │ ├── MapEntry.java │ │ │ │ │ ├── SHORT.java │ │ │ │ │ ├── SHORT_ARRAY.java │ │ │ │ │ ├── STRING.java │ │ │ │ │ ├── STRING_ARRAY.java │ │ │ │ │ ├── TIMESTAMP.java │ │ │ │ │ ├── TWKBGEOMETRY.java │ │ │ │ │ ├── UUID.java │ │ │ │ │ ├── Value.java │ │ │ │ │ ├── ValueType.java │ │ │ │ │ ├── ValueUnion.java │ │ │ │ │ └── WKBGEOMETRY.java │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── locationtech │ │ │ │ │ └── geogig │ │ │ │ │ └── flatbuffers │ │ │ │ │ ├── FBAdapters.java │ │ │ │ │ ├── FBBucket.java │ │ │ │ │ ├── FBCommit.java │ │ │ │ │ ├── FBFeature.java │ │ │ │ │ ├── FBLeafTree.java │ │ │ │ │ ├── FBNode.java │ │ │ │ │ ├── FBNodeTree.java │ │ │ │ │ ├── FBPerson.java │ │ │ │ │ ├── FBRevObject.java │ │ │ │ │ ├── FBSimpleFeatureType.java │ │ │ │ │ ├── FBTag.java │ │ │ │ │ ├── FBValueArray.java │ │ │ │ │ ├── FlatBuffers.java │ │ │ │ │ ├── FlatBuffersRevObjectFactory.java │ │ │ │ │ ├── FlatBuffersRevObjectSerializer.java │ │ │ │ │ ├── GeometryFlatSerializer.java │ │ │ │ │ ├── GeometrySerializer.java │ │ │ │ │ ├── GeometryWKBSerializer.java │ │ │ │ │ └── ValueSerializer.java │ │ │ └── resources │ │ │ │ ├── META-INF │ │ │ │ └── services │ │ │ │ │ └── org.locationtech.geogig.model.RevObjectFactory │ │ │ │ └── fbs │ │ │ │ ├── RevisionObject.fbs │ │ │ │ └── Value.fbs │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── flatbuffers │ │ │ ├── FlatBuffersRevObjectFactoryConformanceTest.java │ │ │ ├── FlatBuffersRevObjectSerializerStreamingTest.java │ │ │ └── FlatBuffersRevObjectSerializerTest.java │ ├── lz4 │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── storage │ │ │ │ └── format │ │ │ │ └── lz4 │ │ │ │ └── RevObjectSerializerLZ4.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── storage │ │ │ └── format │ │ │ └── lz4 │ │ │ └── RevObjectSerializerLZ4Test.java │ ├── lzf │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── storage │ │ │ │ └── format │ │ │ │ └── lzf │ │ │ │ └── RevObjectSerializerLZF.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── storage │ │ │ └── format │ │ │ └── lzf │ │ │ └── RevObjectSerializerLZFTest.java │ └── pom.xml │ ├── pom.xml │ ├── postgres │ ├── README.md │ ├── geogig_postgres_9.sql │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── storage │ │ │ │ └── postgresql │ │ │ │ ├── PGRepositoryResolver.java │ │ │ │ ├── commands │ │ │ │ ├── CreateDDL.java │ │ │ │ ├── PGDatabaseUpgrade.java │ │ │ │ ├── PGInitDB.java │ │ │ │ └── SchemaUpgrade0To1.java │ │ │ │ ├── config │ │ │ │ ├── ConnectionConfig.java │ │ │ │ ├── DataSourceManager.java │ │ │ │ ├── Environment.java │ │ │ │ ├── EnvironmentBuilder.java │ │ │ │ ├── PGDataSourceProvider.java │ │ │ │ ├── PGId.java │ │ │ │ ├── PGStorage.java │ │ │ │ ├── PGStorageTableManager.java │ │ │ │ ├── TableNames.java │ │ │ │ └── Version.java │ │ │ │ └── v9 │ │ │ │ ├── GetAllOp.java │ │ │ │ ├── GetObjectOp.java │ │ │ │ ├── PGBlobStore.java │ │ │ │ ├── PGConfigDatabase.java │ │ │ │ ├── PGConfigStore.java │ │ │ │ ├── PGConflictsDatabase.java │ │ │ │ ├── PGGraphDatabase.java │ │ │ │ ├── PGIndexDatabase.java │ │ │ │ ├── PGObjectDatabase.java │ │ │ │ ├── PGObjectStore.java │ │ │ │ ├── PGObjectStoreGetAllIterator.java │ │ │ │ ├── PGObjectStoreObjectIterator.java │ │ │ │ ├── PGRefDatabase.java │ │ │ │ ├── PGRefDatabaseWorker.java │ │ │ │ └── PGSerializationProxy.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── org.locationtech.geogig.repository.RepositoryResolver │ │ │ └── org.locationtech.geogig.storage.StorageProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── locationtech │ │ └── geogig │ │ └── storage │ │ └── postgresql │ │ ├── config │ │ ├── DataSourceManagerIT.java │ │ ├── EnvironmentBuilderTest.java │ │ ├── PGStorageIT.java │ │ ├── PGTemporaryTestConfig.java │ │ ├── PGTestDataSourceProvider.java │ │ └── PGTestProperties.java │ │ ├── functional │ │ ├── PGTestUtil.java │ │ ├── PostgreSQLStepDefinitions.java │ │ ├── RunPGGenralFunctionalIT.java │ │ ├── RunPGPlumbingFunctionalIT.java │ │ ├── RunPGPorcelainFunctionalIT.java │ │ └── RunPGRemoteFunctionalIT.java │ │ ├── integration │ │ ├── PGCheckSparsePathIT.java │ │ ├── PGCommitOpIT.java │ │ ├── PGDiffOpIT.java │ │ ├── PGFindCommonAncestorIT.java │ │ ├── PGGraphDatabaseIT.java │ │ ├── PGLogOpIT.java │ │ ├── PGRebaseOpIT.java │ │ ├── PGRevParseIT.java │ │ ├── PGRevTreeBuilderIT.java │ │ └── PGRevertOpIT.java │ │ ├── performance │ │ └── PGObjectDatabaseStressTest.java │ │ └── v9 │ │ ├── PGBlobStoreIT.java │ │ ├── PGConfigDatabaseIT.java │ │ ├── PGConflictsDatabaseConformanceIT.java │ │ ├── PGConflictsDatabaseIT.java │ │ ├── PGIndexDatabaseConformanceIT.java │ │ ├── PGObjectDatabaseConformanceIT.java │ │ ├── PGObjectStoreConformanceIT.java │ │ └── PGRefDatabaseIT.java │ ├── rocksdb │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── locationtech │ │ │ │ └── geogig │ │ │ │ └── rocksdb │ │ │ │ ├── DBConfig.java │ │ │ │ ├── DBHandle.java │ │ │ │ ├── RocksConnectionManager.java │ │ │ │ ├── RocksdbBlobStore.java │ │ │ │ ├── RocksdbConflictsDatabase.java │ │ │ │ ├── RocksdbGraphDatabase.java │ │ │ │ ├── RocksdbIndexDatabase.java │ │ │ │ ├── RocksdbObjectDatabase.java │ │ │ │ ├── RocksdbObjectStore.java │ │ │ │ ├── RocksdbRepositoryResolver.java │ │ │ │ └── RocksdbSerializationProxy.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.locationtech.geogig.repository.RepositoryResolver │ │ └── test │ │ └── java │ │ └── org │ │ └── locationtech │ │ └── geogig │ │ └── rocksdb │ │ ├── DBOptionsTest.java │ │ ├── RocksdbBlobStoreTest.java │ │ ├── RocksdbConflictsDatabaseConformanceTest.java │ │ ├── RocksdbGraphDatabaseConformanceTest.java │ │ ├── RocksdbIndexDatabaseConformanceTest.java │ │ ├── RocksdbObjectDatabaseConformanceTest.java │ │ ├── RocksdbObjectDatabaseTest.java │ │ ├── RocksdbObjectStoreConformanceTest.java │ │ ├── integration │ │ ├── RocksCheckSparsePathTest.java │ │ ├── RocksCommitOpTest.java │ │ ├── RocksDiffOpTest.java │ │ ├── RocksFindCommonAncestorTest.java │ │ ├── RocksLogOpTest.java │ │ ├── RocksRebaseOpTest.java │ │ ├── RocksRevParseTest.java │ │ ├── RocksRevTreeBuilderTest.java │ │ ├── RocksRevertOpTest.java │ │ └── RocksdbTestRepositoryURIBuilder.java │ │ └── performance │ │ ├── RevTreeBuilderRocksObjectsPerformanceTest.java │ │ └── RocksdbObjectStoreStressTest.java │ └── temporary-rocksdb │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── locationtech │ │ │ └── geogig │ │ │ └── tempstorage │ │ │ └── rocksdb │ │ │ ├── DAGSerializer.java │ │ │ ├── RocksdbDAGStorageProvider.java │ │ │ ├── RocksdbDAGStorageProviderFactory.java │ │ │ ├── RocksdbDAGStore.java │ │ │ ├── RocksdbHandle.java │ │ │ └── RocksdbNodeStore.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.locationtech.geogig.model.internal.DAGStorageProviderFactory │ └── test │ └── java │ └── org │ └── locationtech │ └── geogig │ └── tempstorage │ └── rocksdb │ ├── CanonicalClusteringStrategyRocksdbStorageTest.java │ ├── DAGSerializerTest.java │ └── RocksdbDAGStorageProviderFactoryTest.java └── update_headers.sh /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | .classpath 3 | .project 4 | .settings 5 | *~ 6 | bin/ 7 | #when run from within eclipse, cucumber tests create report folders in the project dir instead of it's target/ directory 8 | cucumber-report* 9 | git.properties 10 | git.geogig.properties 11 | # Netbeans project files 12 | nb-configuration.xml 13 | .DS_store 14 | # IntelliJ module files 15 | *.iml 16 | hs_err_pid* 17 | #KDE 18 | .directory 19 | 20 | .attach_pid* 21 | -------------------------------------------------------------------------------- /.mvn/maven.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/.mvn/maven.config -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | -------------------------------------------------------------------------------- /build/jenkins/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TODAY=`date +"%Y%m%d"` 4 | WWW_DIR="/var/www/geogit" 5 | 6 | cd $WORKSPACE/src/parent 7 | mvn clean install -DskipTests 8 | 9 | cd $WORKSPACE/src/cli-app 10 | mvn assembly:assembly -DskipTests 11 | cp $WORKSPACE/src/cli-app/target/geogit-cli-app-*.zip $WWW_DIR/geogit-cli-app-0.1-$TODAY.zip 12 | ln -sf $WWW_DIR/geogit-cli-app-0.1-$TODAY.zip $WWW_DIR/geogit-cli-app-0.1-latest.zip 13 | -------------------------------------------------------------------------------- /doc/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | -------------------------------------------------------------------------------- /doc/build_all.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | # directory list for HTML file generation 4 | declare -a htmlDirs=("manpages" "manual" "technical" "workshops" "upgrade") 5 | 6 | # for each, build the HTML pages 7 | for dir in "${htmlDirs[@]}" 8 | do 9 | echo "Processing directory: ${dir}" 10 | pushd ${dir} 11 | make clean html 12 | popd 13 | echo "Finished directory: ${dir}" 14 | done 15 | -------------------------------------------------------------------------------- /doc/manpages/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | 9 | # Internal variables. 10 | PAPEROPT_a4 = -D latex_paper_size=a4 11 | PAPEROPT_letter = -D latex_paper_size=letter 12 | ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 13 | MANOPTS = -d build/doctrees $(SPHINXOPTS) source 14 | 15 | .PHONY: help clean html man 16 | 17 | help: 18 | @echo "Please use \`make ' where is one of" 19 | @echo " html to make standalone HTML files" 20 | @echo " man to make standalone man pages" 21 | 22 | clean: 23 | -rm -rf build/* 24 | 25 | man: 26 | mkdir -p build/man1 27 | $(SPHINXBUILD) -b man $(MANOPTS) build/man1 28 | @echo 29 | @echo "Build finished. The man pages are in build/man1." 30 | 31 | html: 32 | mkdir -p build/html build/doctrees 33 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html 34 | @echo 35 | @echo "Build finished. The HTML pages are in build/html." 36 | 37 | -------------------------------------------------------------------------------- /doc/manpages/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | set SPHINXBUILD=sphinx-build 6 | set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source 7 | if NOT "%PAPER%" == "" ( 8 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% 9 | ) 10 | 11 | if "%1" == "" goto help 12 | 13 | if "%1" == "help" ( 14 | :help 15 | echo.Please use `make ^` where ^ is one of 16 | echo. html to make standalone HTML files 17 | echo. man to make standalone man files 18 | goto end 19 | ) 20 | 21 | if "%1" == "clean" ( 22 | for /d %%i in (build\*) do rmdir /q /s %%i 23 | del /q /s build\* 24 | goto end 25 | ) 26 | 27 | if "%1" == "man" ( 28 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% build/man 29 | echo. 30 | echo.Build finished. The man pages are in build/man. 31 | goto end 32 | ) 33 | 34 | if "%1" == "html" ( 35 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html 36 | echo. 37 | echo.Build finished. The HTML pages are in build/html. 38 | goto end 39 | ) 40 | 41 | 42 | :end 43 | -------------------------------------------------------------------------------- /doc/manpages/source/apply.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-apply: 3 | 4 | geogig-apply documentation 5 | ############################# 6 | 7 | 8 | SYNOPSIS 9 | ******** 10 | geogig apply [] [--reject] [--summary] [--check] 11 | 12 | 13 | DESCRIPTION 14 | *********** 15 | 16 | Applies a patch or part of it on the current working tree. 17 | 18 | 19 | OPTIONS 20 | ******* 21 | 22 | 23 | --check Do not apply, just check that the specified patch can be safely applied 24 | 25 | --reject apply only those changes that can be safely applied and create a ``.rej`` patch file with those other changes that were rejected and could not be safely applied 26 | 27 | --summary Do not apply, just show content of patch. 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-format-patch` 34 | 35 | BUGS 36 | **** 37 | 38 | 39 | -------------------------------------------------------------------------------- /doc/manpages/source/cat.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-cat: 3 | 4 | geogig-cat documentation 5 | ######################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig cat 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Displays a machine-readable, non-formatted description of the passed reference. The reference can be a feature, a tree, or a commit. In the case of a tree, the default feature type is described along with some other characteristics of the tree. Identical to ``geogig show --raw``. 18 | 19 | To get a human-readable description of an element in a geogig repository, the ``show`` command can be used instead. 20 | 21 | The reference can be a SHA-1, a full refspec, or just a path. If a path is used, it's assumed to refer to an element in the working head. 22 | 23 | 24 | OPTIONS 25 | ******* 26 | 27 | --binary Shows binary output instead. 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-show` 34 | 35 | BUGS 36 | **** 37 | 38 | Discussion is still open. 39 | 40 | -------------------------------------------------------------------------------- /doc/manpages/source/checkout.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-checkout: 2 | 3 | geogig-checkout documentation 4 | ############################# 5 | 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig checkout [] 12 | geogig checkout [] -p ... 13 | 14 | 15 | DESCRIPTION 16 | *********** 17 | 18 | Used to checkout the specified branch. If -p is used with listed path names then it doesn't switch branches, instead it updates those paths in the working tree from the index tree if isn't specified. If it is specified then it will use that tree to update from. 19 | 20 | OPTIONS 21 | ******* 22 | 23 | --path ..., -p ... Prefix before listing path names to update paths in the working tree 24 | 25 | --force, -f When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to discard local changes. 26 | 27 | SEE ALSO 28 | ******** 29 | 30 | 31 | BUGS 32 | **** 33 | 34 | Discussion is still open. -------------------------------------------------------------------------------- /doc/manpages/source/cherrypick.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-cherrypick: 3 | 4 | geogig-cherrypick documentation 5 | ############################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig cherry-pick 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | Given an existing commit, apply the change it introduces, recording a new commit. This requires your working tree to be clean (no modifications from the HEAD commit). 17 | 18 | If the ommit to apply is not compatible with the changes introduced in the current branch since, the operation will not be performed and will leave the index with unmerged (conflicting) changes. Fix those unmerged changes and then run the ``commit`` command using the ``-c`` option followed by the reference to the commitish that you were trying trying to cherry-pik, to finish the operation. 19 | 20 | OPTIONS 21 | ******** 22 | 23 | 24 | 25 | SEE ALSO 26 | ******** 27 | 28 | :ref:`geogig-commit` 29 | 30 | BUGS 31 | **** 32 | 33 | Discussion is still open. 34 | 35 | -------------------------------------------------------------------------------- /doc/manpages/source/clean.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-clean: 3 | 4 | geogig-clean documentation 5 | ############################# 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig ls-tree [] [--dryrun] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Removes all unversioned elements from the working tree. 18 | 19 | If a path is passed, it will remove only those elements under that path. Otherwise, it will remove all unversioned elements in the working tree. 20 | 21 | 22 | OPTIONS 23 | ******* 24 | 25 | -n 26 | --dryrun Do not remove, but just show what would be removed if running this command 27 | 28 | 29 | SEE ALSO 30 | ******** 31 | 32 | :ref:`geogig-remove` 33 | 34 | BUGS 35 | **** 36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/manpages/source/fetch.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-fetch: 3 | 4 | geogig-fetch documentation 5 | ########################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig fetch [--depth ] [--all] [--prune] [--fulldepth] [...] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Fetches named heads or tags from one or more other repositories, along with the objects necessary to complete them. 18 | 19 | This command can fetch from either a single named repository, or from several repositories at once. 20 | 21 | OPTIONS 22 | ******* 23 | 24 | --all Fetch all remotes. 25 | 26 | -p, --prune After fetching, remove any remote-tracking branches which no longer exist on the remote. 27 | 28 | --depth In the case of a shallow clone, it fetches history only up to the specified depth 29 | 30 | --fulldepth In the case of a shallow clone, fetch the full history from the repository. This will turn the repository into a full clone. 31 | 32 | SEE ALSO 33 | ******** 34 | 35 | :ref:`geogig-clone` 36 | 37 | :ref:`geogig-pull` 38 | 39 | BUGS 40 | **** 41 | 42 | Discussion is still open. 43 | 44 | -------------------------------------------------------------------------------- /doc/manpages/source/formatpatch.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-format-patch: 2 | 3 | geogig-format-patch documentation 4 | ################################### 5 | 6 | 7 | 8 | SYNOPSIS 9 | ******** 10 | geogig format-patch [-- ...] -f 11 | 12 | 13 | DESCRIPTION 14 | *********** 15 | 16 | Creates a patch containing the differences between two versions of the repository. 17 | 18 | If both commit references are missing, the patch will contain the differences between the index and the working tree. 19 | 20 | If only one commit reference is given, the patch will contain the differences between the specified commit and the working tree. 21 | 22 | One or more space-separated paths can be added. If so, the patch will contain only differences corresponding to those paths. 23 | 24 | 25 | OPTIONS 26 | ******* 27 | 28 | 29 | --cached Do not use the working tree. Use the index instead 30 | 31 | 32 | SEE ALSO 33 | ******** 34 | 35 | :ref:`geogig-apply` 36 | 37 | :ref:`geogig-diff` 38 | 39 | BUGS 40 | **** 41 | 42 | 43 | -------------------------------------------------------------------------------- /doc/manpages/source/geojson.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-geojson: 2 | 3 | geogig-geojson documentation 4 | ############################ 5 | 6 | SYNOPSIS 7 | ******** 8 | geogig geojson [--help] [commandargs] 9 | 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | The geojson command extension is meant to provide a means for importing and exporting geospatial data to and from GeoGig through GeoJSON files. 15 | 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --help Prints the synopsis and a list of the most commonly used commands. 21 | 22 | 23 | EXAMPLES 24 | ******** 25 | :: 26 | 27 | geogig geojson --help 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-geojson-import` 34 | 35 | :ref:`geogig-geojson-export` 36 | -------------------------------------------------------------------------------- /doc/manpages/source/geojsonexport.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-geojson-export: 2 | 3 | geogig-geojson-export documentation 4 | ################################### 5 | 6 | 7 | 8 | SYNOPSIS 9 | ******** 10 | geogig geojson export : [-o] 11 | 12 | 13 | DESCRIPTION 14 | *********** 15 | 16 | This command exports features from a feature type into a GeoJSON file. 17 | 18 | The feature type can be defined using the : notation, so a feature type from a different tree can be exported. 19 | 20 | If no origin tree is specified and just a feature type name is used, the working tree will be used, so ``mypath`` is equivalent to ``WORK_TREE:mypath``. 21 | 22 | If the output file already exists, it will not be overwritten, unless the ``-o`` modifier is used. 23 | 24 | OPTIONS 25 | ******* 26 | 27 | -o Overwrite the output file in case it already exists. 28 | 29 | BUGS 30 | **** 31 | 32 | Discussion is still open. -------------------------------------------------------------------------------- /doc/manpages/source/geopkg.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-geopkg: 2 | 3 | geogig-geopkg documentation 4 | ########################### 5 | 6 | SYNOPSIS 7 | ******** 8 | geogig geopkg [--help] [commandargs] 9 | 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | The GeoPackage command extension is meant to provide a means for importing and exporting geospatial data to and from GeoGig from a GeoPackage database. 15 | 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --help Prints the synopsis and a list of the most commonly used commands. 21 | 22 | 23 | EXAMPLES 24 | ******** 25 | :: 26 | 27 | geogig geopkg --help 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-geopkg-import` 34 | 35 | :ref:`geogig-geopkg-export` 36 | 37 | :ref:`geogig-geopkg-describe` 38 | 39 | :ref:`geogig-geopkg-list` 40 | 41 | :ref:`geogig-geopkg-pull` 42 | 43 | 44 | -------------------------------------------------------------------------------- /doc/manpages/source/geopkgdescribe.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-geopkg-describe: 3 | 4 | geogig-geopkg-describe documentation 5 | #################################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig geopkg describe [options] -t 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command describes a single table in a GeoPackage database. It will print out each property name along with its type. To see a list of available tables, use ``geogig geopkg list``. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | -t, --table The table to describe. 23 | 24 | -D, --database GeoPackage database to use. Default: database.gpkg 25 | 26 | -U, --user User name to use when accessing the database. Default: user 27 | 28 | SEE ALSO 29 | ******** 30 | 31 | :ref:`geogig-geopkg-list` 32 | 33 | BUGS 34 | **** 35 | 36 | Discussion is still open. 37 | 38 | -------------------------------------------------------------------------------- /doc/manpages/source/geopkglist.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-geopkg-list: 3 | 4 | geogig-geopkg-list documentation 5 | ################################ 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig geopkg list [options] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command simply lists of the tables available in the specified GeoPackage database. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | -D, --database GeoPackage database to use. Default: database.gpkg 23 | 24 | -U, --user User name to use when accessing the database. Default: user 25 | 26 | BUGS 27 | **** 28 | 29 | Discussion is still open. 30 | 31 | -------------------------------------------------------------------------------- /doc/manpages/source/geopkgpull.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-geopkg-pull: 3 | 4 | geogig-geopkg-pull documentation 5 | ################################ 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig geopkg pull [options] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command imports one or more tables from a GeoPackage database that have been exported with the ``interchange`` parameter. This works by replaying all of the changes made to the GeoPackage into a new commit based on the commit that the data was exported from. That commit is then merged into the current ``HEAD``. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | -m, --message Commit message to use for the imported changes. 23 | 24 | -t, --table Feature table to import. Required if tables are from multiple commits. 25 | 26 | -D, --database GeoPackage database to use. Default: database.gpkg 27 | 28 | -U, --user User name to use when accessing the database. Default: user 29 | 30 | 31 | SEE ALSO 32 | ******** 33 | 34 | :ref:`geogig-geopkg-export` 35 | :ref:`geogig-geopkg-import` 36 | 37 | BUGS 38 | **** 39 | 40 | Discussion is still open. 41 | 42 | -------------------------------------------------------------------------------- /doc/manpages/source/help.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-help: 2 | 3 | geogig-help documentation 4 | ######################### 5 | 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig [--]help [] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command displays the usage for GeoGig or a specific command if provided. 18 | 19 | SEE ALSO 20 | ******** 21 | 22 | 23 | BUGS 24 | **** 25 | 26 | Discussion is still open. -------------------------------------------------------------------------------- /doc/manpages/source/indexdrop.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-index-drop: 3 | 4 | geogig-index-drop documentation 5 | ############################### 6 | 7 | SYNOPSIS 8 | ******** 9 | geogig index drop --tree [--attribute ] 10 | 11 | 12 | DESCRIPTION 13 | *********** 14 | 15 | Removes an existing index from the repository. 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --tree Defines the ref spec that resolves to the feature tree that is already indexed (e.g. ``HEAD:Points``, ``Points``, etc). If no commit is defined, ``HEAD`` will be used. 21 | 22 | -a, --attribute Defaults to the primary geometry attribute on the feature type. The name of the attribute that is used on the existing index. 23 | 24 | 25 | SEE ALSO 26 | ******** 27 | 28 | :ref:`geogig-index-list` 29 | 30 | :ref:`geogig-index-create` 31 | 32 | :ref:`geogig-index-rebuild` 33 | 34 | :ref:`geogig-index-update` 35 | 36 | BUGS 37 | **** 38 | 39 | Discussion is still open. 40 | 41 | -------------------------------------------------------------------------------- /doc/manpages/source/indexing.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-index: 2 | 3 | geogig-index documentation 4 | ########################## 5 | 6 | SYNOPSIS 7 | ******** 8 | geogig index [--help] [commandargs] 9 | 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | The index command extension is meant to provide a means for managing spatial indexes in a GeoGig repository. 15 | 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --help Prints the synopsis and a list of the most commonly used commands. 21 | 22 | 23 | EXAMPLES 24 | ******** 25 | :: 26 | 27 | geogig index --help 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-index-create` 34 | 35 | :ref:`geogig-index-update` 36 | 37 | :ref:`geogig-index-rebuild` 38 | 39 | :ref:`geogig-index-list` 40 | 41 | :ref:`geogig-index-drop` 42 | 43 | 44 | -------------------------------------------------------------------------------- /doc/manpages/source/indexlist.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-index-list: 3 | 4 | geogig-index-list documentation 5 | ############################### 6 | 7 | SYNOPSIS 8 | ******** 9 | geogig index list [--tree ] 10 | 11 | 12 | DESCRIPTION 13 | *********** 14 | 15 | Lists the indexes that have been built for a repository. 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --tree Defines the tree name of a feature tree in the repository. Only indexes on that feature tree will be listed. 21 | 22 | 23 | 24 | SEE ALSO 25 | ******** 26 | 27 | :ref:`geogig-index-create` 28 | 29 | :ref:`geogig-index-update` 30 | 31 | :ref:`geogig-index-rebuild` 32 | 33 | :ref:`geogig-index-drop` 34 | 35 | BUGS 36 | **** 37 | 38 | Discussion is still open. 39 | 40 | -------------------------------------------------------------------------------- /doc/manpages/source/ls.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-ls: 3 | 4 | geogig-ls documentation 5 | ############################# 6 | 7 | 8 | SYNOPSIS 9 | ******** 10 | 11 | geogig ls <[refspec]:[path]> [--verbose] [--abbrev] [-t] [-d] [-r] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command lists the content of a given tree. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | -t Show tree entries even when going to recurse them. Has no effect if -r was not passed. -d implies -t. 23 | 24 | -d Show only the named tree entry itself, not its children. 25 | 26 | -r Recurse into sub-trees. 27 | 28 | -v, --verbose Verbose output, include metadata, object id, and object type along with object path. 29 | 30 | -a, --abbrev Instead of showing the full 40-byte hexadecimal object lines, show only a partial prefix. Non default number of digits can be specified with --abbrev . 31 | 32 | SEE ALSO 33 | ******** 34 | 35 | 36 | 37 | BUGS 38 | **** 39 | 40 | Discussion is still open. 41 | 42 | -------------------------------------------------------------------------------- /doc/manpages/source/pg.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-pg: 2 | 3 | geogig-pg documentation 4 | ######################### 5 | 6 | SYNOPSIS 7 | ******** 8 | geogig pg [--help] [commandargs] 9 | 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | The PostGIS command extension is meant to provide a means for importing and exporting geospatial data to and from GeoGig into a PostGIS database. 15 | 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --help Prints the synopsis and a list of the most commonly used commands. 21 | 22 | 23 | EXAMPLES 24 | ******** 25 | :: 26 | 27 | geogig pg --help 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-pg-import` 34 | 35 | :ref:`geogig-pg-export` 36 | 37 | :ref:`geogig-pg-describe` 38 | 39 | :ref:`geogig-pg-list` 40 | 41 | 42 | -------------------------------------------------------------------------------- /doc/manpages/source/pgdescribe.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-pg-describe: 3 | 4 | geogig-pg-describe documentation 5 | ################################ 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig pg describe [options] -t
12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command describes a single table in a PostGIS database. It will print out each property name along with its type. To see a list of available tables, use ``geogig pg list``. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | -t, --table The table to describe. 23 | 24 | --host Machine name or IP address to connect to. Default: localhost 25 | 26 | --port Port number to connect to. Default: 5432 27 | 28 | --schema The database schema to access. Default: public 29 | 30 | --database The database to connect to. Default: database 31 | 32 | --user User name. Default: postgres 33 | 34 | --password Password. Default: 35 | 36 | SEE ALSO 37 | ******** 38 | 39 | :ref:`geogig-pg-list` 40 | 41 | BUGS 42 | **** 43 | 44 | Discussion is still open. 45 | 46 | -------------------------------------------------------------------------------- /doc/manpages/source/pglist.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-pg-list: 3 | 4 | geogig-pg-list documentation 5 | ############################# 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig pg list [options] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command simply lists of the tables available in the specified PostGIS database. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | --host Machine name or IP address to connect to. Default: localhost 23 | 24 | --port Port number to connect to. Default: 5432 25 | 26 | --schema The database schema to access. Default: public 27 | 28 | --database The database to connect to. Default: database 29 | 30 | --user User name. Default: postgres 31 | 32 | --password Password. Default: 33 | 34 | BUGS 35 | **** 36 | 37 | Discussion is still open. 38 | 39 | -------------------------------------------------------------------------------- /doc/manpages/source/push.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-push: 3 | 4 | geogig-push documentation 5 | ######################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig push [] [ [...]] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Updates remote refs using local refs, while sending objects necessary to complete the given refs. 18 | 19 | Refspecs can be used to gain more control over the push process. The format of a push refspec is [+][][:][] where is the local branch to be pushed and is the remote branch to push to. If the format ":" is provided, the ref will be deleted from the remote repository. If the format ":" is provided, the commit-ish matching will be pushed to the remote branch that matches . If the format "" is provided, the local branch matching will be pushed to an identical branch on the remote. 20 | 21 | OPTIONS 22 | ******* 23 | 24 | --all Fetch all remotes. 25 | 26 | SEE ALSO 27 | ******** 28 | 29 | :ref:`geogig-clone` 30 | 31 | BUGS 32 | **** 33 | 34 | Discussion is still open. 35 | 36 | -------------------------------------------------------------------------------- /doc/manpages/source/remote.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-remote: 2 | 3 | geogig-remote documentation 4 | ########################### 5 | 6 | SYNOPSIS 7 | ******** 8 | geogig remote [--help] [commandargs] 9 | 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | The remote command provides a means of managing the set of repositories ("remotes") whose branches you track. 15 | 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --help Prints the synopsis and a list of the most commonly used commands. 21 | 22 | 23 | EXAMPLES 24 | ******** 25 | :: 26 | 27 | geogig remote --help 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-remote-add` 34 | 35 | :ref:`geogig-remote-remove` 36 | 37 | :ref:`geogig-remote-list` 38 | 39 | 40 | -------------------------------------------------------------------------------- /doc/manpages/source/remoteadd.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-remote-add: 3 | 4 | geogig-remote-add documentation 5 | ############################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig remote add [-t ] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Adds a remote for the repository with the given name and URL. 18 | 19 | With ``-t `` option, instead of the default global refspec for the remote to track all branches under the refs/remotes// namespace, a refspec to track only is created. 20 | 21 | OPTIONS 22 | ******* 23 | 24 | -t , --track Remote branch to track. 25 | 26 | SEE ALSO 27 | ******** 28 | 29 | :ref:`geogig-remote-list` 30 | 31 | :ref:`geogig-remote-remove` 32 | 33 | BUGS 34 | **** 35 | 36 | Discussion is still open. 37 | 38 | -------------------------------------------------------------------------------- /doc/manpages/source/remotelist.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-remote-list: 3 | 4 | geogig-remote-list documentation 5 | ################################ 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig remote list [-v] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Shows a list of existing remotes. With the -v option, be a little more descriptive and show the remote URL after the name. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | -v, --verbose Be a little more verbose and show remote url after name. 23 | 24 | SEE ALSO 25 | ******** 26 | 27 | :ref:`geogig-remote-add` 28 | 29 | :ref:`geogig-remote-remove` 30 | 31 | BUGS 32 | **** 33 | 34 | Discussion is still open. 35 | 36 | -------------------------------------------------------------------------------- /doc/manpages/source/remoteremove.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-remote-remove: 3 | 4 | geogig-remote-remove documentation 5 | ################################## 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig remote rm 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Remove the remote named . All remote-tracking branches and configuration settings for the remote are removed. 18 | 19 | SEE ALSO 20 | ******** 21 | 22 | :ref:`geogig-remote-add` 23 | 24 | :ref:`geogig-remote-list` 25 | 26 | BUGS 27 | **** 28 | 29 | Discussion is still open. 30 | 31 | -------------------------------------------------------------------------------- /doc/manpages/source/remove.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-remove: 3 | 4 | geogig-remove documentation 5 | ############################ 6 | 7 | 8 | SYNOPSIS 9 | ******** 10 | geogig remove [...] [-r] 11 | 12 | 13 | DESCRIPTION 14 | *********** 15 | 16 | Removes elements from the working tree. 17 | 18 | If the element is a tree, the -r switch has to be used, to remove all its children (both features and trees) recursively 19 | 20 | OPTIONS 21 | ******* 22 | -r Removes tree contents recursively 23 | 24 | SEE ALSO 25 | ******** 26 | 27 | :ref:`geogig-clean` 28 | 29 | BUGS 30 | **** 31 | 32 | Discussion is still open. 33 | 34 | -------------------------------------------------------------------------------- /doc/manpages/source/revert.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-revert: 3 | 4 | geogig-revert documentation 5 | ########################### 6 | 7 | SYNOPSIS 8 | ******** 9 | geogig revert ... 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | Given one or more existing commits, revert the changes that the related patches introduce, and record some new commits that record them. This requires your working tree to be clean (no modifications from the HEAD commit). 15 | 16 | SEE ALSO 17 | ******** 18 | 19 | BUGS 20 | **** 21 | 22 | Discussion is still open. -------------------------------------------------------------------------------- /doc/manpages/source/shp.rst: -------------------------------------------------------------------------------- 1 | .. _geogig-shp: 2 | 3 | geogig-shp documentation 4 | ######################### 5 | 6 | SYNOPSIS 7 | ******** 8 | geogig shp [--help] [commandargs] 9 | 10 | 11 | DESCRIPTION 12 | *********** 13 | 14 | The shapefile command extension is meant to provide a means for importing and exporting geospatial data to and from GeoGig through shapefiles. 15 | 16 | 17 | OPTIONS 18 | ******* 19 | 20 | --help Prints the synopsis and a list of the most commonly used commands. 21 | 22 | 23 | EXAMPLES 24 | ******** 25 | :: 26 | 27 | geogig shp --help 28 | 29 | 30 | SEE ALSO 31 | ******** 32 | 33 | :ref:`geogig-shp-import` 34 | 35 | :ref:`geogig-shp-export` 36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/manpages/source/shpexport.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-shp-export: 3 | 4 | geogig-shp-export documentation 5 | ################################ 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig shp export [:] [-o] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command exports features from a feature type into a shapefile. 18 | 19 | The feature type can be defined using the [:] notation, so a feature type from a different tree can be exported. 20 | 21 | If no origin tree is specified and just a feature type name is used, the working tree will be used, so ``mypath`` is equivalent to ``WORK_TREE:mypath``. 22 | 23 | If the output file already exists, it will not be overwritten, unless the ``-o`` modifier is used. 24 | 25 | OPTIONS 26 | ******* 27 | 28 | -o, --overwrite Overwrite the output file in case it already exists. 29 | 30 | BUGS 31 | **** 32 | 33 | Discussion is still open. 34 | 35 | -------------------------------------------------------------------------------- /doc/manpages/source/status.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-status: 3 | 4 | geogig-status documentation 5 | ############################ 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig status [] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | Displays features that have differences between the index and the current HEAD commit and features that have differences between the working tree and the index file. The first are what you would commit by running geogig commit; the second are what you could commit by running geogig add before running geogig commit. 18 | 19 | OPTIONS 20 | ******* 21 | 22 | --limit Limit the number of changes to display. This value must be greater than 0. 23 | 24 | --all Override the default limit of 50 and display all changes. 25 | 26 | --color Specifies whether or not to apply colored output. 27 | 28 | SEE ALSO 29 | ******** 30 | 31 | :ref:`geogig-add` 32 | 33 | :ref:`geogig-commit` 34 | 35 | BUGS 36 | **** 37 | 38 | Discussion is still open. 39 | 40 | -------------------------------------------------------------------------------- /doc/manpages/source/tag.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _geogig-tag: 3 | 4 | geogig-tag documentation 5 | ######################### 6 | 7 | 8 | 9 | SYNOPSIS 10 | ******** 11 | geogig tag [tag_commit] -m [-d] 12 | 13 | 14 | DESCRIPTION 15 | *********** 16 | 17 | This command creates new tags or deletes an existing tag 18 | 19 | A name and a tag message are needed to create a new tag. The tag_commit argument specifies the commit the tag will refer to. If no tag_commit is provided, the tag will refer the the current HEAD 20 | 21 | Deleting a tag is done just passing the tag name and the -d option 22 | 23 | If no tag name is provided and the command is invoked without arguments, it displays a list of current tags 24 | 25 | 26 | 27 | OPTIONS 28 | ******* 29 | 30 | -m Defines the message of the tag to create 31 | 32 | -d Deletes the specified tag 33 | 34 | SEE ALSO 35 | ******** 36 | 37 | BUGS 38 | **** 39 | 40 | Discussion is still open. 41 | 42 | -------------------------------------------------------------------------------- /doc/manual/source/data/index.rst: -------------------------------------------------------------------------------- 1 | .. _data: 2 | 3 | Data and commits 4 | ================ 5 | 6 | This section will discuss working with data, including commits. 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | adding 12 | checkout 13 | committing 14 | diffs 15 | exporting 16 | history 17 | import 18 | patches 19 | picking 20 | rebasing 21 | referencing 22 | reverting 23 | updating 24 | -------------------------------------------------------------------------------- /doc/manual/source/img/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/arrow.png -------------------------------------------------------------------------------- /doc/manual/source/img/branched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/branched.png -------------------------------------------------------------------------------- /doc/manual/source/img/branches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/branches.png -------------------------------------------------------------------------------- /doc/manual/source/img/configure-geogig-auto-indexing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/configure-geogig-auto-indexing.png -------------------------------------------------------------------------------- /doc/manual/source/img/configure-geogig-repo-store-addNew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/configure-geogig-repo-store-addNew.png -------------------------------------------------------------------------------- /doc/manual/source/img/configure-geogig-repo-store-existing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/configure-geogig-repo-store-existing.png -------------------------------------------------------------------------------- /doc/manual/source/img/configure-geogig-repo-store-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/configure-geogig-repo-store-import.png -------------------------------------------------------------------------------- /doc/manual/source/img/configure-layer-declared-srs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/configure-layer-declared-srs.png -------------------------------------------------------------------------------- /doc/manual/source/img/configure-new-geogig-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/configure-new-geogig-repo.png -------------------------------------------------------------------------------- /doc/manual/source/img/create-new-geogig-repo-directory-chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/create-new-geogig-repo-directory-chooser.png -------------------------------------------------------------------------------- /doc/manual/source/img/create-new-geogig-repo-directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/create-new-geogig-repo-directory.png -------------------------------------------------------------------------------- /doc/manual/source/img/create-new-geogig-repo-postgres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/create-new-geogig-repo-postgres.png -------------------------------------------------------------------------------- /doc/manual/source/img/create-new-geogig-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/create-new-geogig-repo.png -------------------------------------------------------------------------------- /doc/manual/source/img/ecosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/ecosystem.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig-config-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig-config-edit.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig-publish-layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig-publish-layer.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig-repo-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig-repo-config.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig-store.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig_cache_jconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig_cache_jconsole.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig_workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig_workflow.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig_workflow_remotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig_workflow_remotes.png -------------------------------------------------------------------------------- /doc/manual/source/img/geogig_workflow_remotes1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geogig_workflow_remotes1.png -------------------------------------------------------------------------------- /doc/manual/source/img/geoserver-api-create-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geoserver-api-create-repo.png -------------------------------------------------------------------------------- /doc/manual/source/img/geoserver_geogig_settings_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/geoserver_geogig_settings_page.png -------------------------------------------------------------------------------- /doc/manual/source/img/import-existing-geogig-repo-directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/import-existing-geogig-repo-directory.png -------------------------------------------------------------------------------- /doc/manual/source/img/import-existing-geogig-repo-postgres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/import-existing-geogig-repo-postgres.png -------------------------------------------------------------------------------- /doc/manual/source/img/import-existing-geogig-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/import-existing-geogig-repo.png -------------------------------------------------------------------------------- /doc/manual/source/img/linear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/linear.png -------------------------------------------------------------------------------- /doc/manual/source/img/merged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/merged.png -------------------------------------------------------------------------------- /doc/manual/source/img/partial_clone_mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/partial_clone_mapping.png -------------------------------------------------------------------------------- /doc/manual/source/img/partial_clone_mapping_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/partial_clone_mapping_2.png -------------------------------------------------------------------------------- /doc/manual/source/img/placeholder_commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/placeholder_commit.png -------------------------------------------------------------------------------- /doc/manual/source/img/qgis_exported_geopackage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/qgis_exported_geopackage.png -------------------------------------------------------------------------------- /doc/manual/source/img/qgis_osm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/qgis_osm.png -------------------------------------------------------------------------------- /doc/manual/source/img/shallow_clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/shallow_clone.png -------------------------------------------------------------------------------- /doc/manual/source/img/shallow_deeper_with_branches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/shallow_deeper_with_branches.png -------------------------------------------------------------------------------- /doc/manual/source/img/shallow_origin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/shallow_origin.png -------------------------------------------------------------------------------- /doc/manual/source/img/shallow_orphan_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/shallow_orphan_branch.png -------------------------------------------------------------------------------- /doc/manual/source/img/sparse_clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/sparse_clone.png -------------------------------------------------------------------------------- /doc/manual/source/img/sparse_clone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/sparse_clone_2.png -------------------------------------------------------------------------------- /doc/manual/source/img/sparse_clone_and_commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/sparse_clone_and_commit.png -------------------------------------------------------------------------------- /doc/manual/source/img/sparse_clone_ids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/sparse_clone_ids.png -------------------------------------------------------------------------------- /doc/manual/source/img/sparse_moving_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/img/sparse_moving_out.png -------------------------------------------------------------------------------- /doc/manual/source/index.rst: -------------------------------------------------------------------------------- 1 | GeoGig User Manual 2 | ================== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | start/index 8 | repo/index 9 | data/index 10 | interaction/index 11 | license/index 12 | -------------------------------------------------------------------------------- /doc/manual/source/interaction/index.rst: -------------------------------------------------------------------------------- 1 | .. _interaction: 2 | 3 | Other ways to interact with GeoGig 4 | ================================== 5 | 6 | This section will discuss alternate ways of interacting with GeoGig, both local and remote. 7 | 8 | .. toctree:: 9 | :maxdepth: 1 10 | 11 | networking 12 | geoserver_ui 13 | geoserver_web-api 14 | web-api-overview 15 | web-api-transactions 16 | web-api-commands 17 | web-api-indexing 18 | web-api-geopackage 19 | web-api-postgis 20 | web-api-conflict-resolution 21 | web-api-repository-management 22 | web-api-async-tasks 23 | web-api-issues 24 | -------------------------------------------------------------------------------- /doc/manual/source/interaction/web-api-issues.rst: -------------------------------------------------------------------------------- 1 | Web API: Issues 2 | ############### 3 | 4 | - The main concern with the web API currently is that it doesn't have any kind of authentication on it, which means that anyone with the url can potentially compromise the integrity of the repo using various endpoints. 5 | 6 | - There is also some inconsistencies in parameter names across different endpoints. Parameters that refer to the same thing are named differently in some endpoints. Some endpoints also use camel case while others are all lowercase. 7 | 8 | - Most endpoints use the ``GET`` request method for every operation when other methods would be more appropriate. 9 | 10 | - Most endpoints return a ``200`` status code when other status codes would be more appropriate. 11 | -------------------------------------------------------------------------------- /doc/manual/source/repo/commandaliases.rst: -------------------------------------------------------------------------------- 1 | .. _repo.commandaliases: 2 | 3 | Command aliases 4 | =============== 5 | 6 | .. note:: Command aliases are not the same as :ref:`repository aliases `. 7 | 8 | GeoGig supports command aliases. These are alternate name for certain commands and command options. 9 | 10 | To add an alias, a new configuration variable has to be added with the name ``alias.`` and the value that GeoGig should replace the alias with when it is invoked. 11 | 12 | For instance, you can define an alias for the command ``commit --amend`` to be ``am`` by running the following command: 13 | 14 | .. code-block:: console 15 | 16 | geogig config alias.am commit --amend 17 | 18 | To amend a commit, now you can use the following notation: 19 | 20 | .. code-block:: console 21 | 22 | geogig am 23 | 24 | If you want the alias to be available for the current repository, just call the config command with no extra options, as in the example above. If you want it to be available system-wide, use the ``--global`` switch to create a global configuration variable. 25 | 26 | .. code-block:: console 27 | 28 | geogig config --global alias.am commit --amend 29 | -------------------------------------------------------------------------------- /doc/manual/source/repo/index.rst: -------------------------------------------------------------------------------- 1 | .. _repo: 2 | 3 | Working with repositories 4 | ========================= 5 | 6 | This section will discuss working with GeoGig repositories. 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | elements 12 | storage 13 | init 14 | config 15 | exploring 16 | branches 17 | merging 18 | remotes 19 | history 20 | hooks 21 | partialcloning 22 | commandaliases 23 | logging 24 | -------------------------------------------------------------------------------- /doc/manual/source/start/img/parks_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/manual/source/start/img/parks_layer.png -------------------------------------------------------------------------------- /doc/manual/source/start/index.rst: -------------------------------------------------------------------------------- 1 | .. _start: 2 | 3 | Starting out with GeoGig 4 | ======================== 5 | 6 | This section will introduce you to GeoGig and explain the installation process. 7 | 8 | .. toctree:: 9 | :maxdepth: 3 10 | 11 | introduction 12 | installation 13 | runtime 14 | tutorial 15 | -------------------------------------------------------------------------------- /doc/technical/img/autoformat_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/technical/img/autoformat_save.png -------------------------------------------------------------------------------- /doc/technical/img/formatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/technical/img/formatter.png -------------------------------------------------------------------------------- /doc/technical/img/import_eclipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/technical/img/import_eclipse.png -------------------------------------------------------------------------------- /doc/technical/source/index.rst: -------------------------------------------------------------------------------- 1 | .. GeoGig technical documentation master file, created by 2 | sphinx-quickstart on Mon Feb 25 13:44:22 2013. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | GeoGig Technical Manual 7 | ================================================ 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | 13 | geogig-binary.rst 14 | geogig-network-sync.rst 15 | plumbing_commands.rst 16 | developers.rst 17 | geogig-merge-conflicts.rst 18 | sparse-clone.rst 19 | geopkg-interchange.rst 20 | osm.rst 21 | -------------------------------------------------------------------------------- /doc/technical/source/sparse-clone.rst: -------------------------------------------------------------------------------- 1 | Sparse clone 2 | ============= 3 | 4 | Technical information about sparse cloning can be found in the following links 5 | 6 | - `GeoGig Sparse Clone (v2) - Cloning `_ 7 | - `GeoGig Sparse Clone (v2) - Synchronizing `_ 8 | - `GeoGig Sparse Clone (v2) - Empty Placeholder Commits `_ 9 | - `GeoGig Sparse Clone (v2) - Why 'Sparse' Merges Fail `_ 10 | -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/Boundless_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/Boundless_Logo.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/Boundless_Logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/Boundless_Logo@2x.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/arrow_up.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/favicon.ico -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/logo.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/logo_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/logo_hover.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/ticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/ticks.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/static/ticks_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/themes/geogig_docs/static/ticks_@2X.png -------------------------------------------------------------------------------- /doc/themes/geogig_docs/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = sphinxdoc 3 | stylesheet = custom.css 4 | pygments_style = sphinx 5 | -------------------------------------------------------------------------------- /doc/upgrade/img/advancedOptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/upgrade/img/advancedOptions.png -------------------------------------------------------------------------------- /doc/upgrade/img/branchConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/upgrade/img/branchConfig.png -------------------------------------------------------------------------------- /doc/upgrade/img/cacheConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/upgrade/img/cacheConfig.png -------------------------------------------------------------------------------- /doc/upgrade/img/geomName.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/upgrade/img/geomName.png -------------------------------------------------------------------------------- /doc/upgrade/img/repoNameSQL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/upgrade/img/repoNameSQL.png -------------------------------------------------------------------------------- /doc/upgrade/source/index.rst: -------------------------------------------------------------------------------- 1 | Upgrading Existing GeoGig Repositories 2 | -------------------------------------- 3 | 4 | Table of Contents 5 | ~~~~~~~~~~~~~~~~~ 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 1 10 | 11 | 12 | Upgrade_1.0_to_1.1 13 | Upgrade_1.1_to_1.1.1 14 | Upgrade_1.1.1_to_1.2 15 | -------------------------------------------------------------------------------- /doc/workshops/img/10011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/10011.png -------------------------------------------------------------------------------- /doc/workshops/img/add_feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/add_feature.png -------------------------------------------------------------------------------- /doc/workshops/img/adding_feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/adding_feature.png -------------------------------------------------------------------------------- /doc/workshops/img/aerialways.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/aerialways.png -------------------------------------------------------------------------------- /doc/workshops/img/attribute_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/attribute_table.png -------------------------------------------------------------------------------- /doc/workshops/img/bing_buildings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/bing_buildings.png -------------------------------------------------------------------------------- /doc/workshops/img/buildings_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/buildings_layer.png -------------------------------------------------------------------------------- /doc/workshops/img/create_pg_database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/create_pg_database.png -------------------------------------------------------------------------------- /doc/workshops/img/create_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/create_role.png -------------------------------------------------------------------------------- /doc/workshops/img/create_role2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/create_role2.png -------------------------------------------------------------------------------- /doc/workshops/img/create_role3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/create_role3.png -------------------------------------------------------------------------------- /doc/workshops/img/drag_drop_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/drag_drop_files.png -------------------------------------------------------------------------------- /doc/workshops/img/drag_layer_to_canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/drag_layer_to_canvas.png -------------------------------------------------------------------------------- /doc/workshops/img/geogig_db_connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/geogig_db_connections.png -------------------------------------------------------------------------------- /doc/workshops/img/geogig_db_with_tables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/geogig_db_with_tables.png -------------------------------------------------------------------------------- /doc/workshops/img/identify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/identify.png -------------------------------------------------------------------------------- /doc/workshops/img/import_pg_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/import_pg_dialog.png -------------------------------------------------------------------------------- /doc/workshops/img/install_ol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/install_ol.png -------------------------------------------------------------------------------- /doc/workshops/img/new_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/new_connection.png -------------------------------------------------------------------------------- /doc/workshops/img/new_feature_attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/new_feature_attributes.png -------------------------------------------------------------------------------- /doc/workshops/img/new_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/new_role.png -------------------------------------------------------------------------------- /doc/workshops/img/opengeo_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/opengeo_explorer.png -------------------------------------------------------------------------------- /doc/workshops/img/openlayers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/openlayers.png -------------------------------------------------------------------------------- /doc/workshops/img/pgadmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/pgadmin.png -------------------------------------------------------------------------------- /doc/workshops/img/pgadmin_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/pgadmin_03.png -------------------------------------------------------------------------------- /doc/workshops/img/pgadmin_03a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/pgadmin_03a.png -------------------------------------------------------------------------------- /doc/workshops/img/qgis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/qgis.png -------------------------------------------------------------------------------- /doc/workshops/img/qgis_browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/qgis_browser.png -------------------------------------------------------------------------------- /doc/workshops/img/save_edits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/save_edits.png -------------------------------------------------------------------------------- /doc/workshops/img/sql_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/sql_query.png -------------------------------------------------------------------------------- /doc/workshops/img/to_digitize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/to_digitize.png -------------------------------------------------------------------------------- /doc/workshops/img/workshop_db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/doc/workshops/img/workshop_db.png -------------------------------------------------------------------------------- /doc/workshops/source/index.rst: -------------------------------------------------------------------------------- 1 | .. GeoGig Workshop documentation master file, created by 2 | sphinx-quickstart on Wed Oct 23 08:54:29 2013. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | GeoGig Workshop 7 | ============================= 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | workshop 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /import.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/import.xlsx -------------------------------------------------------------------------------- /spatial-index-attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/spatial-index-attributes.png -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | .mvn/wrapper/maven-wrapper.jar 2 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/GeometryCloner.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * David Blasby (Boundless) - initial implementation 9 | */ 10 | 11 | package org.locationtech.geogig.model; 12 | 13 | import org.locationtech.jts.geom.Geometry; 14 | import org.locationtech.jts.geom.GeometryFactory; 15 | 16 | //simple class that clones a geometry, and resets the CoordinateSequences to 17 | // CoordinateArraySequences 18 | class GeometryCloner { 19 | 20 | static GeometryFactory gf = new GeometryFactory(); 21 | 22 | public static Geometry clone(Geometry g) { 23 | return gf.createGeometry(g); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/NodeOrdering.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.model; 2 | 3 | import java.io.Serializable; 4 | 5 | import com.google.common.collect.Ordering; 6 | 7 | public abstract class NodeOrdering extends Ordering implements Serializable { 8 | private static final long serialVersionUID = 1L; 9 | 10 | public abstract @Override int compare(Node left, Node right); 11 | 12 | public abstract int bucket(final Node ref, final int depth); 13 | } 14 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/PriorityService.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.model; 11 | 12 | import java.util.ServiceLoader; 13 | 14 | /** 15 | * @since 1.4 16 | */ 17 | public interface PriorityService { 18 | 19 | /** 20 | * Defines a priority when loaded using {@link ServiceLoader}, the higher priority wins in case 21 | * there are several implementations, with the lowest priority being {@code 0}. 22 | */ 23 | public int getPriority(); 24 | } 25 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/RevTagBuilder.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.model; 2 | 3 | import lombok.NonNull; 4 | import lombok.Setter; 5 | import lombok.experimental.Accessors; 6 | 7 | public @Accessors(fluent = true) class RevTagBuilder { 8 | 9 | private @Setter RevObjectFactory factory; 10 | 11 | private @Setter ObjectId id; 12 | 13 | private @Setter @NonNull String name; 14 | 15 | private @Setter @NonNull ObjectId commitId; 16 | 17 | private @Setter @NonNull String message; 18 | 19 | private @Setter @NonNull RevPerson tagger; 20 | 21 | public RevTag build() { 22 | return build(id, name, commitId, message, tagger); 23 | } 24 | 25 | public RevTag build(ObjectId id, @NonNull String name, @NonNull ObjectId commitId, 26 | @NonNull String message, @NonNull RevPerson tagger) { 27 | if (id == null) { 28 | id = HashObjectFunnels.hashTag(name, commitId, message, tagger); 29 | } 30 | if (factory == null) { 31 | factory = RevObjectFactory.defaultInstance(); 32 | } 33 | return factory.createTag(id, name, commitId, message, tagger); 34 | } 35 | } -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/impl/FeatureNode.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - pulled off from Node's inner class 9 | */ 10 | package org.locationtech.geogig.model.impl; 11 | 12 | import java.util.Map; 13 | 14 | import org.locationtech.geogig.model.ObjectId; 15 | import org.locationtech.geogig.model.RevObject.TYPE; 16 | import org.locationtech.jts.geom.Envelope; 17 | 18 | import lombok.NonNull; 19 | 20 | final class FeatureNode extends BaseNodeImpl { 21 | 22 | public FeatureNode(@NonNull String name, @NonNull ObjectId oid, @NonNull ObjectId mdid, 23 | Envelope env, Map extraData) { 24 | super(name, oid, mdid, env, extraData); 25 | } 26 | 27 | public final @Override TYPE getType() { 28 | return TYPE.FEATURE; 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/impl/TreeNode.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - pulled off from Node's inner class 9 | */ 10 | package org.locationtech.geogig.model.impl; 11 | 12 | import java.util.Map; 13 | 14 | import org.locationtech.geogig.model.ObjectId; 15 | import org.locationtech.geogig.model.RevObject.TYPE; 16 | import org.locationtech.jts.geom.Envelope; 17 | 18 | import lombok.NonNull; 19 | 20 | final class TreeNode extends BaseNodeImpl { 21 | 22 | public TreeNode(@NonNull String name, @NonNull ObjectId oid, @NonNull ObjectId mdid, 23 | Envelope env, Map extraData) { 24 | super(name, oid, mdid, env, extraData); 25 | } 26 | 27 | public final @Override TYPE getType() { 28 | return TYPE.TREE; 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/internal/HeapDAGStorageProviderFactory.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.model.internal; 11 | 12 | import org.locationtech.geogig.storage.ObjectStore; 13 | 14 | import lombok.NonNull; 15 | 16 | public class HeapDAGStorageProviderFactory implements DAGStorageProviderFactory { 17 | 18 | /** 19 | * @return {@code 0}, lowest priority 20 | */ 21 | public @Override int getPriority() { 22 | return 0; 23 | } 24 | 25 | public @Override DAGStorageProvider newInstance(@NonNull ObjectStore treeStore) { 26 | return new HeapDAGStorageProvider(treeStore); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/model/internal/NodeId.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.model.internal; 11 | 12 | import lombok.NonNull; 13 | import lombok.RequiredArgsConstructor; 14 | import lombok.Value; 15 | import lombok.experimental.Accessors; 16 | 17 | @Value 18 | @RequiredArgsConstructor 19 | @Accessors(fluent = true) 20 | public class NodeId { 21 | 22 | private @NonNull String name; 23 | 24 | private Object value; 25 | 26 | public NodeId(String name) { 27 | this.name = name; 28 | this.value = null; 29 | } 30 | 31 | @SuppressWarnings("unchecked") 32 | public V value() { 33 | return (V) value; 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/repository/ContextBuilder.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.repository; 2 | 3 | import org.locationtech.geogig.model.PriorityService; 4 | 5 | public interface ContextBuilder extends PriorityService { 6 | 7 | Context build(); 8 | 9 | /** 10 | * @param hints a set of hints to pass over to the context builder to be injected into 11 | * components that can make use of it 12 | */ 13 | Context build(Hints hints); 14 | 15 | } -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/repository/RepositoryConnectionException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * David Winslow (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.repository; 11 | 12 | /** 13 | * Exception to be thrown when the repository was unable to connect to one of its databases. 14 | * 15 | * @since 1.0 16 | */ 17 | public class RepositoryConnectionException extends Exception { 18 | 19 | private static final long serialVersionUID = -4046351627917194599L; 20 | 21 | /** 22 | * Constructs a new {@code RepositoryConnectionException} with the provided message. 23 | * 24 | * @param message the exception message 25 | */ 26 | public RepositoryConnectionException(String message) { 27 | super(message); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/storage/AbstractStore.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019 Gabriel Roldan. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage; 11 | 12 | public abstract class AbstractStore implements Store { 13 | 14 | protected volatile boolean readOnly; 15 | 16 | protected volatile boolean open; 17 | 18 | protected AbstractStore() { 19 | this(false); 20 | } 21 | 22 | protected AbstractStore(boolean readOnly) { 23 | this.readOnly = readOnly; 24 | } 25 | 26 | public @Override void open() { 27 | open = true; 28 | } 29 | 30 | public @Override void close() { 31 | open = false; 32 | } 33 | 34 | public @Override boolean isOpen() { 35 | return open; 36 | } 37 | 38 | public @Override boolean isReadOnly() { 39 | return readOnly; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/api/src/main/java/org/locationtech/geogig/storage/ObjectDatabase.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage; 11 | 12 | /** 13 | * The {@code ObjectDatabase} must be per repository singleton instance providing access to the main 14 | * repository {@link ObjectStore} as well as extra services such as access to the conflicts and 15 | * blobs stores. 16 | * 17 | * @since 1.0 18 | */ 19 | public interface ObjectDatabase extends ObjectStore { 20 | 21 | public GraphDatabase getGraphDatabase(); 22 | 23 | /** 24 | * @return the {@link BlobStore} associated with this {@code ObjectDatabase} 25 | */ 26 | public BlobStore getBlobStore(); 27 | } 28 | -------------------------------------------------------------------------------- /src/api/src/main/resources/META-INF/services/org.locationtech.geogig.model.RevObjectFactory: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.model.impl.RevObjectFactoryImpl -------------------------------------------------------------------------------- /src/api/src/main/resources/META-INF/services/org.locationtech.geogig.model.internal.DAGStorageProviderFactory: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.model.internal.HeapDAGStorageProviderFactory -------------------------------------------------------------------------------- /src/api/src/test/java/org/locationtech/geogig/model/SymRefTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (LMN Solutions) - initial implementation 9 | */ 10 | package org.locationtech.geogig.model; 11 | 12 | import static org.junit.Assert.assertEquals; 13 | 14 | import org.junit.Test; 15 | 16 | public class SymRefTest { 17 | 18 | @Test 19 | public void testSymRef() { 20 | Ref testRef = new Ref(Ref.REFS_PREFIX + "commit1", 21 | ObjectId.valueOf("abc123000000000000001234567890abcdef0000")); 22 | 23 | SymRef symRef = new SymRef("TestRef", testRef); 24 | 25 | assertEquals(testRef.getName(), symRef.getTarget()); 26 | 27 | String symRefString = symRef.toString(); 28 | 29 | assertEquals("TestRef -> " + "[" + testRef.getName() + " -> " 30 | + testRef.getObjectId().toString() + "]", symRefString); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/api/src/test/java/org/locationtech/geogig/model/impl/RevObjectFactoryImplConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.model.impl; 11 | 12 | import org.locationtech.geogig.model.RevObjectFactory; 13 | import org.locationtech.geogig.model.RevObjectFactoryConformanceTest; 14 | 15 | public class RevObjectFactoryImplConformanceTest extends RevObjectFactoryConformanceTest { 16 | 17 | protected @Override RevObjectFactory newFactory() { 18 | return new RevObjectFactoryImpl(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/benchmarks/.gitignore: -------------------------------------------------------------------------------- 1 | jmh-result.* 2 | -------------------------------------------------------------------------------- /src/benchmarks/core/.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | Default 4 | python 2.7 5 | 6 | -------------------------------------------------------------------------------- /src/cli/app/build-native-image.sh: -------------------------------------------------------------------------------- 1 | native-image --no-server \ 2 | -jar target/geogig/libexec/geogig-cli-app-2.0-SNAPSHOT.jar \ 3 | -H:Name=geogig \ 4 | -H:ReflectionConfigurationFiles=reflections.json,../../cli/app/target/classes/META-INF/native-image/picocli-generated/reflect-config.json,../../cli/remoting/target/classes/META-INF/native-image/picocli-generated/reflect-config.json,../../cli/core/target/classes/META-INF/native-image/picocli-generated/reflect-config.json \ 5 | -H:DynamicProxyConfigurationFiles=proxies.json \ 6 | --allow-incomplete-classpath \ 7 | --initialize-at-build-time=org.postgresql.Driver,org.postgresql.util.SharedTimer,org.hsqldb.jdbc.JDBCDriver,org.sqlite.JDBC \ 8 | --static \ 9 | --no-fallback \ 10 | -Dorg.geotools.referencing.forceXY=true 11 | -------------------------------------------------------------------------------- /src/cli/app/proxies.json: -------------------------------------------------------------------------------- 1 | [ 2 | ["java.lang.reflect.TypeVariable"] 3 | ] -------------------------------------------------------------------------------- /src/cli/app/src/main/resources/META-INF/services/org.locationtech.geogig.cli.CLICommand: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.cli.storage.LsRepos 2 | org.locationtech.geogig.cli.storage.PGCreateDDL 3 | org.locationtech.geogig.cli.storage.PGStorageUpgrade -------------------------------------------------------------------------------- /src/cli/core/src/main/java/org/locationtech/geogig/cli/InvalidParameterException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli; 11 | 12 | /** 13 | * An exception to indicate that the arguments given by the user to a GeoGig CLI command are 14 | * invalid. 15 | * 16 | * @see AbstractCommand#checkParameter 17 | */ 18 | public class InvalidParameterException extends RuntimeException { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | public InvalidParameterException(String message) { 23 | super(message); 24 | } 25 | 26 | public InvalidParameterException(String message, Throwable cause) { 27 | super(message, cause); 28 | } 29 | 30 | public InvalidParameterException(Throwable cause) { 31 | super(cause); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/cli/core/src/main/java/org/locationtech/geogig/cli/annotation/ObjectDatabaseReadOnly.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.annotation; 11 | 12 | import java.lang.annotation.ElementType; 13 | import java.lang.annotation.Retention; 14 | import java.lang.annotation.RetentionPolicy; 15 | import java.lang.annotation.Target; 16 | 17 | import org.locationtech.geogig.cli.CLICommand; 18 | import org.locationtech.geogig.storage.ObjectDatabase; 19 | 20 | /** 21 | * Annotation for {@link CLICommand}s giving geogig a hint that the operation is read only for 22 | * {@link ObjectDatabase}, but may need write access to any remote repository it may connect to. 23 | */ 24 | @Target(ElementType.TYPE) 25 | @Retention(RetentionPolicy.RUNTIME) 26 | public @interface ObjectDatabaseReadOnly { 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/cli/core/src/main/java/org/locationtech/geogig/cli/annotation/ReadOnly.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.annotation; 11 | 12 | import java.lang.annotation.ElementType; 13 | import java.lang.annotation.Retention; 14 | import java.lang.annotation.RetentionPolicy; 15 | import java.lang.annotation.Target; 16 | 17 | import org.locationtech.geogig.cli.CLICommand; 18 | import org.locationtech.geogig.storage.ObjectDatabase; 19 | 20 | /** 21 | * Annotation for {@link CLICommand}s giving geogig a hint that the operation is read only for 22 | * {@link ObjectDatabase}, and any remote repository it may connect to. 23 | */ 24 | @Target(ElementType.TYPE) 25 | @Retention(RetentionPolicy.RUNTIME) 26 | public @interface ReadOnly { 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/cli/core/src/main/java/org/locationtech/geogig/cli/annotation/RemotesReadOnly.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.annotation; 11 | 12 | import java.lang.annotation.ElementType; 13 | import java.lang.annotation.Retention; 14 | import java.lang.annotation.RetentionPolicy; 15 | import java.lang.annotation.Target; 16 | 17 | import org.locationtech.geogig.cli.CLICommand; 18 | 19 | /** 20 | * Annotation for {@link CLICommand}s giving geogig a hint that the operation needs read only access 21 | * to any remote repository it may connect to. 22 | */ 23 | @Target(ElementType.TYPE) 24 | @Retention(RetentionPolicy.RUNTIME) 25 | public @interface RemotesReadOnly { 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/cli/core/src/main/resources/META-INF/services/org.locationtech.geogig.cli.CLIModule: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.cli.BuiltinCommandsModule 2 | -------------------------------------------------------------------------------- /src/cli/core/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/cli/core/src/test/java/org/locationtech/geogig/cli/test/functional/FileRepoUriBuilder.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.cli.test.functional; 2 | 3 | import java.io.File; 4 | import java.net.URI; 5 | 6 | import org.locationtech.geogig.base.Preconditions; 7 | import org.locationtech.geogig.repository.Platform; 8 | 9 | import cucumber.api.Scenario; 10 | 11 | public class FileRepoUriBuilder extends TestRepoURIBuilder { 12 | 13 | public @Override void before(Scenario scenario) { 14 | } 15 | 16 | public @Override void after(Scenario scenario) { 17 | } 18 | 19 | public @Override URI buildRootURI(Platform platform) { 20 | return platform.pwd().toURI(); 21 | } 22 | 23 | public @Override URI newRepositoryURI(String name, Platform platform) { 24 | Preconditions.checkState(platform != null, "platform not set"); 25 | return new File(platform.pwd(), name).toURI(); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/cli/core/src/test/java/org/locationtech/geogig/cli/test/functional/RunGeneralFunctionalIT.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.test.functional; 11 | 12 | import org.junit.runner.RunWith; 13 | 14 | import cucumber.api.CucumberOptions; 15 | import cucumber.api.junit.Cucumber; 16 | 17 | /** 18 | * Single cucumber test runner. Its sole purpose is to serve as an entry point for junit. Step 19 | * definitions and hooks are defined in their own classes so they can be reused across features. 20 | * 21 | */ 22 | @CucumberOptions(// 23 | plugin = { "pretty", "html:cucumber-report-general" }// 24 | , strict = true// 25 | , features = { "src/test/resources/features/general" }) 26 | @RunWith(Cucumber.class) 27 | public class RunGeneralFunctionalIT { 28 | } -------------------------------------------------------------------------------- /src/cli/core/src/test/java/org/locationtech/geogig/cli/test/functional/RunIndexFunctionalIT.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (Prominent Edge) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.test.functional; 11 | 12 | import org.junit.runner.RunWith; 13 | 14 | import cucumber.api.CucumberOptions; 15 | import cucumber.api.junit.Cucumber; 16 | 17 | /** 18 | * Single cucumber test runner. Its sole purpose is to serve as an entry point for junit. Step 19 | * definitions and hooks are defined in their own classes so they can be reused across features. 20 | * 21 | */ 22 | @RunWith(Cucumber.class) 23 | @CucumberOptions(// 24 | plugin = { "pretty", "html:cucumber-report-general" }// 25 | , strict = true// 26 | , features = { "src/test/resources/features/index" }) 27 | public class RunIndexFunctionalIT { 28 | } -------------------------------------------------------------------------------- /src/cli/core/src/test/java/org/locationtech/geogig/cli/test/functional/RunPlumbingFunctionalIT.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.test.functional; 11 | 12 | import org.junit.runner.RunWith; 13 | 14 | import cucumber.api.CucumberOptions; 15 | import cucumber.api.junit.Cucumber; 16 | 17 | /** 18 | * Single cucumber test runner. Its sole purpose is to serve as an entry point for junit. Step 19 | * definitions and hooks are defined in their own classes so they can be reused across features. 20 | * 21 | */ 22 | @RunWith(Cucumber.class) 23 | @CucumberOptions(// 24 | plugin = { "pretty", "html:cucumber-report-general" }// 25 | , strict = true// 26 | , features = { "src/test/resources/features/plumbing" }) 27 | public class RunPlumbingFunctionalIT { 28 | } -------------------------------------------------------------------------------- /src/cli/core/src/test/java/org/locationtech/geogig/cli/test/functional/RunPorcelainFunctionalIT.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.test.functional; 11 | 12 | import org.junit.runner.RunWith; 13 | 14 | import cucumber.api.CucumberOptions; 15 | import cucumber.api.junit.Cucumber; 16 | 17 | /** 18 | * Single cucumber test runner. Its sole purpose is to serve as an entry point for junit. Step 19 | * definitions and hooks are defined in their own classes so they can be reused across features. 20 | * 21 | */ 22 | @RunWith(Cucumber.class) 23 | @CucumberOptions(// 24 | plugin = { "pretty", "html:cucumber-report-general" }// 25 | , strict = true// 26 | , features = { "src/test/resources/features/porcelain" }// 27 | , tags = "~@FileSystemReposOnly") 28 | public class RunPorcelainFunctionalIT { 29 | } -------------------------------------------------------------------------------- /src/cli/core/src/test/resources/features/general/Help.feature: -------------------------------------------------------------------------------- 1 | Feature: "help" command 2 | In order to know how to use geogig 3 | As a Geogig User 4 | I want to see the description of a command 5 | 6 | Scenario: Show general help, containing only porcelain commands 7 | Given I have a repository 8 | When I run the command "help" 9 | Then the response should contain "commit" 10 | And the response should contain "cat" 11 | And the response should contain "ls-tree" -------------------------------------------------------------------------------- /src/cli/core/src/test/resources/features/plumbing/Insert.feature: -------------------------------------------------------------------------------- 1 | Feature: "apply" command 2 | In order to modify feature 3 | As a Geogig User 4 | I want to insert a feature according to a definition in a file 5 | 6 | Scenario: Insert from a file 7 | Given I have a repository 8 | And I stage 6 features 9 | And I have an insert file 10 | When I run the command "insert -f ${currentdir}/insert" 11 | Then the response should contain "1 features successfully inserted" 12 | 13 | Scenario: Try to insert a feature passing a wrong file 14 | Given I have a repository 15 | And I stage 6 features 16 | And I have an insert file 17 | When I run the command "insert -f wrong.file" 18 | Then the response should contain "Insert file cannot be found" 19 | 20 | Scenario: Try to insert a feature in a tree that does not exist in the repo 21 | Given I have a repository 22 | And I have staged "lines1" 23 | And I have an insert file 24 | When I run the command "insert -f ${currentdir}/insert" 25 | Then the response should contain "The parent tree does not exist: Points" 26 | -------------------------------------------------------------------------------- /src/cli/core/src/test/resources/features/plumbing/RebuildGraph.feature: -------------------------------------------------------------------------------- 1 | Feature: "rebuild-graph" command 2 | In order to fix a geogig repository 3 | As a Geogig User 4 | I want to rebuild the graph 5 | 6 | Scenario: I try to rebuild the graph 7 | Given I have a repository 8 | And I have 3 commits 9 | And the repository has a truncated graph database 10 | When I run the command "rebuild-graph" 11 | Then the response should contain "The following graph elements (commits) were incomplete or missing and have been fixed:" 12 | And the response should contain 4 lines 13 | 14 | Scenario: I try to rebuild the graph with quiet argument 15 | Given I have a repository 16 | And I have 3 commits 17 | And the repository has a truncated graph database 18 | When I run the command "rebuild-graph --quiet" 19 | Then the response should contain "3 graph elements (commits) were fixed." 20 | 21 | Scenario: I try to rebuild the graph when it is not broken 22 | Given I have a repository 23 | And I have several commits 24 | When I run the command "rebuild-graph" 25 | Then the response should contain "No missing or incomplete graph elements" 26 | -------------------------------------------------------------------------------- /src/cli/core/src/test/resources/features/plumbing/ShowRef.feature: -------------------------------------------------------------------------------- 1 | Feature: "show-ref" command 2 | In order to know the branches in a geogig repository 3 | As a Geogig User 4 | I want list all references 5 | 6 | Scenario: List all references 7 | Given I have a repository 8 | And I have several branches 9 | When I run the command "show-ref" 10 | Then the response should contain 3 lines 11 | And the response should contain "master" 12 | And the response should contain "branch1" 13 | And the response should contain "branch2" 14 | And the response should contain variable "{@ObjectId|localrepo|master}" 15 | And the response should contain variable "{@ObjectId|localrepo|branch1}" 16 | And the response should contain variable "{@ObjectId|localrepo|branch2}" 17 | 18 | -------------------------------------------------------------------------------- /src/cli/core/src/test/resources/features/porcelain/Version.feature: -------------------------------------------------------------------------------- 1 | @Version 2 | Feature: "version" command 3 | In order to view GeoGig version information 4 | As a Geogig User 5 | I want to display information about it 6 | 7 | Scenario: I want to view the GeoGig version 8 | Given I am in an empty directory 9 | When I run the command "geogig --version" 10 | Then the response should contain "Project Version" 11 | And the response should contain "Build Time" 12 | And the response should contain "Git Commit ID" 13 | -------------------------------------------------------------------------------- /src/cli/geotools/src/main/resources/META-INF/services/org.locationtech.geogig.cli.CLICommand: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.geotools.cli.geojson.GeoJsonCommandProxy 2 | org.locationtech.geogig.geotools.cli.geopkg.GeopkgCommandProxy 3 | org.locationtech.geogig.geotools.cli.postgis.PGCommandProxy 4 | org.locationtech.geogig.geotools.cli.shp.ShpCommandProxy -------------------------------------------------------------------------------- /src/cli/geotools/src/test/java/org/locationtech/geogig/geotools/cli/test/functional/IniOracleProperties.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Juan Marin (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.geotools.cli.test.functional; 11 | 12 | import org.locationtech.geogig.test.integration.OnlineTestProperties; 13 | 14 | public class IniOracleProperties extends OnlineTestProperties { 15 | 16 | private static final String[] DEFAULTS = { // 17 | "database.host", "192.168.1.99", // 18 | "database.port", "1521", // 19 | "database.schema", "ORACLE", // 20 | "database.database", "ORCL", // 21 | "database.user", "oracle", // 22 | "database.password", "oracle"// 23 | }; 24 | 25 | public IniOracleProperties() { 26 | super(".geogig-oracle-tests.properties", DEFAULTS); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/cli/geotools/src/test/java/org/locationtech/geogig/geotools/cli/test/functional/IniPGProperties.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (LMN Solutions) - initial implementation 9 | */ 10 | package org.locationtech.geogig.geotools.cli.test.functional; 11 | 12 | import org.locationtech.geogig.test.integration.OnlineTestProperties; 13 | 14 | public class IniPGProperties extends OnlineTestProperties { 15 | 16 | private static final String[] DEFAULTS = { // 17 | "database.host", "localhost", // 18 | "database.port", "5432", // 19 | "database.schema", "public", // 20 | "database.database", "database", // 21 | "database.user", "postgres", // 22 | "database.password", "postgres"// 23 | }; 24 | 25 | public IniPGProperties() { 26 | super(".geogig-pg-tests.properties", DEFAULTS); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/features/geopkg/GeoPkgDescribe.feature: -------------------------------------------------------------------------------- 1 | Feature: "geopkg describe" command 2 | In order to understand the structure of a table in a GeoPackage file 3 | As a Geogig User 4 | I want Geogig to describe the table 5 | 6 | Scenario: Try describing a GeoPackage table from an empty directory 7 | Given I am in an empty directory 8 | When I run the command "geopkg describe --table test" on an existing GeoPackage file 9 | Then the response should contain "Could not find the specified table." 10 | 11 | Scenario: Try describing a GeoPackage table 12 | Given I have a repository 13 | When I run the command "geopkg describe --table Points" on an existing GeoPackage file 14 | Then the response should contain "Table : Points" 15 | 16 | Scenario: Try to describe a GeoPackage table that doesn't exit in the database 17 | Given I have a repository 18 | When I run the command "geopkg describe --table nonexistant_table" on an existing GeoPackage file 19 | Then the response should contain "Could not find the specified table." 20 | -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/features/geopkg/GeoPkgList.feature: -------------------------------------------------------------------------------- 1 | Feature: "geopkg list" command 2 | In order to know all of the features available in a GeoPackage file 3 | As a Geogig User 4 | I want to list all of the features 5 | 6 | Scenario: Try listing whithout a current repository 7 | Given I am in an empty directory 8 | When I run the command "geopkg list" on an existing GeoPackage file 9 | Then the response should contain "Points" 10 | 11 | Scenario: Try listing from a valid directory 12 | Given I have a repository 13 | When I run the command "geopkg list" on an existing GeoPackage file 14 | Then the response should contain "Points" 15 | 16 | -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/features/online/PGDescribe.feature: -------------------------------------------------------------------------------- 1 | Feature: "pg describe" command 2 | In order to understand the structure of a table in a PostGIS database 3 | As a Geogig User 4 | I want Geogig to describe the table 5 | 6 | Scenario: Try describing a PostGIS table from an empty directory 7 | Given I am in an empty directory 8 | When I run the command "pg describe --table geogig_pg_test" on the PostGIS database 9 | Then the response should contain "Table : geogig_pg_test" 10 | 11 | Scenario: Try describing a PostGIS table 12 | Given I have a repository 13 | When I run the command "pg describe --table geogig_pg_test" on the PostGIS database 14 | Then the response should contain "Table : geogig_pg_test" 15 | 16 | Scenario: Try to describe a PostGIS table that doesn't exit in the database 17 | Given I have a repository 18 | When I run the command "pg describe --table nonexistant_table" on the PostGIS database 19 | Then the response should contain "Could not find the specified table." 20 | -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/features/online/PGList.feature: -------------------------------------------------------------------------------- 1 | Feature: "pg list" command 2 | In order to know all of the features available on a PostGIS database 3 | As a Geogig User 4 | I want to list all of the features 5 | 6 | Scenario: Try listing wihtout a current repository 7 | Given I am in an empty directory 8 | When I run the command "pg list" on the PostGIS database 9 | Then the response should contain "geogig_pg_test" 10 | 11 | Scenario: Try listing with a current repository 12 | Given I have a repository 13 | When I run the command "pg list" on the PostGIS database 14 | Then the response should contain "geogig_pg_test" 15 | 16 | -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/features/testdb.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/src/cli/geotools/src/test/resources/features/testdb.sqlite -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/org/locationtech/geogig/geotools/cli/geojson/sample.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "features": [ 4 | { 5 | "type": "Feature", 6 | "geometry": { 7 | "type": "LineString", 8 | "coordinates": [ 9 | [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] 10 | ] 11 | }, 12 | "properties": { 13 | "prop1": 0.0, 14 | "prop0": "value0" 15 | } 16 | }, 17 | { 18 | "type": "Feature", 19 | "geometry": { 20 | "type": "LineString", 21 | "coordinates": [ 22 | [ 23 | [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0] 24 | ] 25 | ] 26 | }, 27 | "properties": { 28 | "prop1": 0.2, 29 | "prop0": "value1" 30 | } 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /src/cli/geotools/src/test/resources/org/locationtech/geogig/geotools/cli/shp/shape.shp: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 2 | {\fonttbl} 3 | {\colortbl;\red255\green255\blue255;} 4 | \margl1440\margr1440\vieww10800\viewh8400\viewkind0 5 | } -------------------------------------------------------------------------------- /src/cli/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | org.locationtech.geogig 7 | geogig 8 | ${revision} 9 | 10 | 11 | geogig-cli-parent 12 | pom 13 | GeoGig Command Line Interface 14 | 15 | 16 | core 17 | geotools 18 | storage-postgres 19 | remoting 20 | app 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/cli/remoting/src/main/resources/META-INF/services/org.locationtech.geogig.cli.CLICommand: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.cli.remoting.Clone 2 | org.locationtech.geogig.cli.remoting.Fetch 3 | org.locationtech.geogig.cli.remoting.Pull 4 | org.locationtech.geogig.cli.remoting.Push 5 | org.locationtech.geogig.cli.remoting.RemoteExtension 6 | -------------------------------------------------------------------------------- /src/cli/remoting/src/test/java/org/locationtech/geogig/cli/test/functional/RunRemoteFunctionalIT.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.cli.test.functional; 11 | 12 | import org.junit.runner.RunWith; 13 | 14 | import cucumber.api.CucumberOptions; 15 | import cucumber.api.junit.Cucumber; 16 | 17 | /** 18 | * Single cucumber test runner. Its sole purpose is to serve as an entry point for junit. Step 19 | * definitions and hooks are defined in their own classes so they can be reused across features. 20 | * 21 | */ 22 | @RunWith(Cucumber.class) 23 | @CucumberOptions(// 24 | plugin = { "pretty", "html:cucumber-report-general" }// 25 | , strict = true// 26 | , features = { "src/test/resources/features/remote" } // 27 | , tags = "~@FileSystemReposOnly") 28 | public class RunRemoteFunctionalIT { 29 | } -------------------------------------------------------------------------------- /src/cli/remoting/src/test/resources/features/remote/Branch.feature: -------------------------------------------------------------------------------- 1 | Feature: "branch" command 2 | In order to work separately from the main history 3 | As a Geogig User 4 | I want to be able to create, delete and list branches 5 | 6 | Scenario: Try to list remote branches only 7 | Given I have a repository with a remote 8 | And I run the command "fetch origin" 9 | When I run the command "branch -r" 10 | Then the response should contain "origin/master" 11 | And the response should contain "origin/branch1" 12 | #And the response should contain "origin/HEAD" 13 | And the response should not contain "* master" 14 | 15 | Scenario: Try to list all branches 16 | Given I have a repository with a remote 17 | And I run the command "fetch origin" 18 | When I run the command "branch --all" 19 | Then the response should contain "origin/master" 20 | And the response should contain "origin/branch1" 21 | #And the response should contain "origin/HEAD" 22 | And the response should contain "* master" 23 | -------------------------------------------------------------------------------- /src/cli/remoting/src/test/resources/features/remote/Checkout.feature: -------------------------------------------------------------------------------- 1 | Feature: "checkout" command 2 | In order to view an alternate version of the data 3 | As a Geogig User 4 | I want to be able to checkout out branches 5 | 6 | Scenario: Try to checkout a remote branch 7 | Given I have a repository with a remote 8 | When I run the command "fetch origin" 9 | And I run the command "checkout branch1" 10 | Then the response should contain "Branch 'branch1' was set up to track remote branch 'branch1' from origin" 11 | And the response should contain "Switched to a new branch 'branch1'" 12 | -------------------------------------------------------------------------------- /src/core/.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | Default 4 | python 2.7 5 | 6 | -------------------------------------------------------------------------------- /src/core/NOTICE.txt: -------------------------------------------------------------------------------- 1 | The Content includes source code from the following projects: 2 | 3 | * Varint from the Apache Mahout under Apache License Version 2.0 4 | * DiffMatchPath from Neil Fraser under Apache License Version 2.0 -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/di/CanRunDuringConflict.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Victor Olaya (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.di; 11 | 12 | import java.lang.annotation.ElementType; 13 | import java.lang.annotation.Retention; 14 | import java.lang.annotation.RetentionPolicy; 15 | import java.lang.annotation.Target; 16 | 17 | /** 18 | * An annotation to indicate that a GeoGig operation can run during merge conflicts 19 | * 20 | */ 21 | @Retention(RetentionPolicy.RUNTIME) 22 | @Target(ElementType.TYPE) 23 | public @interface CanRunDuringConflict { 24 | } -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/di/Decorator.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.di; 11 | 12 | public interface Decorator { 13 | 14 | public boolean canDecorate(Object instance); 15 | 16 | public I decorate(I subject); 17 | } 18 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/di/SnapshotContext.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - pulled off from GuiceContext inner class 9 | */ 10 | package org.locationtech.geogig.di; 11 | 12 | import org.locationtech.geogig.repository.Context; 13 | 14 | class SnapshotContext extends DelegatingContext { 15 | 16 | private RefDatabaseSnapshot refsSnapshot; 17 | 18 | public SnapshotContext(Context context) { 19 | super(context); 20 | this.refsSnapshot = new RefDatabaseSnapshot(context.refDatabase()); 21 | this.refsSnapshot.open(); 22 | } 23 | 24 | public @Override Context snapshot() { 25 | return this; 26 | } 27 | } -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/dsl/Blobs.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.dsl; 2 | 3 | import java.util.Optional; 4 | 5 | import org.locationtech.geogig.repository.Context; 6 | import org.locationtech.geogig.storage.BlobStore; 7 | 8 | import lombok.NonNull; 9 | import lombok.RequiredArgsConstructor; 10 | 11 | public @RequiredArgsConstructor class Blobs { 12 | 13 | private final @NonNull Context context; 14 | 15 | private BlobStore store() { 16 | return context.blobStore(); 17 | } 18 | 19 | public void remove(@NonNull String blobName) { 20 | store().removeBlob(blobName); 21 | } 22 | 23 | public void put(String blobName, CharSequence contents) { 24 | org.locationtech.geogig.storage.impl.Blobs.putBlob(store(), blobName, contents); 25 | } 26 | 27 | public Optional asString(@NonNull String blobName) { 28 | return org.locationtech.geogig.storage.impl.Blobs.getBlobAsString(store(), blobName); 29 | } 30 | 31 | public boolean exists(@NonNull String blobName) { 32 | return store().getBlob(blobName).isPresent(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/dsl/Config.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019 Gabriel Roldan. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.dsl; 11 | 12 | import org.locationtech.geogig.repository.Context; 13 | 14 | import lombok.Getter; 15 | import lombok.NonNull; 16 | import lombok.RequiredArgsConstructor; 17 | 18 | public @RequiredArgsConstructor class Config { 19 | private final @NonNull @Getter Context context; 20 | 21 | public void remove(@NonNull String key) { 22 | context.configDatabase().remove(key); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/dsl/Conflicts.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.dsl; 2 | 3 | import java.util.Set; 4 | 5 | import org.locationtech.geogig.plumbing.merge.ConflictsWriteOp; 6 | import org.locationtech.geogig.repository.Conflict; 7 | import org.locationtech.geogig.repository.Context; 8 | 9 | import lombok.Getter; 10 | import lombok.NonNull; 11 | import lombok.RequiredArgsConstructor; 12 | 13 | public @RequiredArgsConstructor class Conflicts { 14 | private final @NonNull @Getter Context context; 15 | 16 | public boolean hasConflicts() { 17 | return context.conflictsDatabase().hasConflicts(null); 18 | } 19 | 20 | public void save(Iterable conflicts) { 21 | context.command(ConflictsWriteOp.class).setConflicts(conflicts).call(); 22 | } 23 | 24 | public Set find(@NonNull Iterable paths) { 25 | return context.conflictsDatabase().findConflicts(null, paths); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/dsl/Indexes.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019 Gabriel Roldan. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.dsl; 11 | 12 | import org.locationtech.geogig.repository.Context; 13 | 14 | public class Indexes extends ObjectStores { 15 | 16 | public Indexes(Context context) { 17 | super(context, context.indexDatabase()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/hooks/Hookable.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Victor Olaya (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.hooks; 11 | 12 | import java.lang.annotation.ElementType; 13 | import java.lang.annotation.Retention; 14 | import java.lang.annotation.RetentionPolicy; 15 | import java.lang.annotation.Target; 16 | 17 | import org.locationtech.geogig.repository.impl.AbstractGeoGigOp; 18 | 19 | /** 20 | * An annotation to indicate that a {@link AbstractGeoGigOp GeoGig operation} allows hooks 21 | */ 22 | @Retention(RetentionPolicy.RUNTIME) 23 | @Target(ElementType.TYPE) 24 | public @interface Hookable { 25 | /** 26 | * the name used to identify the script files corresponding to the hooks for the class annotated 27 | * with this annotation 28 | */ 29 | public String name(); 30 | } -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/plumbing/ResolveRepository.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Victor Olaya (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.plumbing; 11 | 12 | import org.locationtech.geogig.repository.Repository; 13 | import org.locationtech.geogig.repository.impl.AbstractGeoGigOp; 14 | 15 | /** 16 | * Resolves the current repository 17 | * 18 | */ 19 | public class ResolveRepository extends AbstractGeoGigOp { 20 | 21 | protected @Override Repository _call() { 22 | return repository(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/plumbing/merge/ConflictsCheckOp.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.plumbing.merge; 11 | 12 | import java.net.URI; 13 | import java.util.Optional; 14 | 15 | import org.locationtech.geogig.plumbing.ResolveGeogigURI; 16 | import org.locationtech.geogig.repository.impl.AbstractGeoGigOp; 17 | 18 | public class ConflictsCheckOp extends AbstractGeoGigOp { 19 | protected @Override Boolean _call() { 20 | final Optional repoUrl = command(ResolveGeogigURI.class).call(); 21 | Boolean hasConflicts = Boolean.FALSE; 22 | 23 | if (repoUrl.isPresent()) { 24 | boolean conflicts = conflictsDatabase().hasConflicts(null); 25 | hasConflicts = Boolean.valueOf(conflicts); 26 | } 27 | return hasConflicts; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/porcelain/BranchConfig.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018-present Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.porcelain; 11 | 12 | import java.util.Optional; 13 | 14 | import org.locationtech.geogig.model.Ref; 15 | 16 | import lombok.Builder; 17 | import lombok.NonNull; 18 | import lombok.Value; 19 | 20 | public @Value @Builder class BranchConfig { 21 | 22 | private @NonNull Ref branch; 23 | 24 | private @NonNull Optional remoteName, remoteBranch; 25 | 26 | private @NonNull Optional description; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/porcelain/ConflictsException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (LMN Solutions) - initial implementation 9 | */ 10 | package org.locationtech.geogig.porcelain; 11 | 12 | /** 13 | * Exception that indicates that an operation cannot be finished due to conflicts 14 | */ 15 | public class ConflictsException extends IllegalStateException { 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | public ConflictsException(String msg) { 20 | super(msg); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/porcelain/NothingToCommitException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.porcelain; 11 | 12 | /** 13 | * Indicates there are no staged changes to commit as the result of the execution of a 14 | * {@link CommitOp} 15 | * 16 | */ 17 | public class NothingToCommitException extends RuntimeException { 18 | 19 | private static final long serialVersionUID = 1L; 20 | 21 | /** 22 | * Constructs a new {@code NothingToCommitException} with the given message. 23 | * 24 | * @param msg the message for the exception 25 | */ 26 | public NothingToCommitException(String msg) { 27 | super(msg); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/porcelain/RebaseConflictsException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Victor Olaya (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.porcelain; 11 | 12 | /** 13 | * Exception that indicates that a rebase operation cannot be finished due to merge conflicts 14 | */ 15 | public class RebaseConflictsException extends ConflictsException { 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | public RebaseConflictsException(String msg) { 20 | super(msg); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/porcelain/RevertConflictsException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Victor Olaya (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.porcelain; 11 | 12 | /** 13 | * Exception that indicates that a revert operation cannot be finished due to merge conflicts 14 | */ 15 | public class RevertConflictsException extends RuntimeException { 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | public RevertConflictsException(String msg) { 20 | super(msg); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/porcelain/ValueAndCommit.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Victor Olaya (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.porcelain; 11 | 12 | import java.util.Optional; 13 | 14 | import org.locationtech.geogig.model.RevCommit; 15 | 16 | public class ValueAndCommit { 17 | 18 | public Optional value; 19 | 20 | public RevCommit commit; 21 | 22 | public ValueAndCommit(Optional value, RevCommit commit) { 23 | this.value = value; 24 | this.commit = commit; 25 | } 26 | 27 | public @Override String toString() { 28 | return new StringBuilder().append(value.orElse(null)).append('/').append(commit.getId()) 29 | .toString(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/repository/impl/GlobalContextBuilder.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.repository.impl; 11 | 12 | import org.locationtech.geogig.repository.ContextBuilder; 13 | 14 | public class GlobalContextBuilder { 15 | 16 | private static ContextBuilder builder = new ContextBuilderImpl(); 17 | 18 | public static ContextBuilder builder() { 19 | return builder; 20 | } 21 | 22 | public static void builder(ContextBuilder builder) { 23 | GlobalContextBuilder.builder = builder; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/storage/cache/CacheStats.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.storage.cache; 2 | 3 | public interface CacheStats { 4 | 5 | default long hitCount() { 6 | return 0L; 7 | } 8 | 9 | default double hitRate() { 10 | return 0D; 11 | } 12 | 13 | default long missCount() { 14 | return 0L; 15 | } 16 | 17 | default double missRate() { 18 | return 0D; 19 | } 20 | 21 | default long evictionCount() { 22 | return 0L; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/storage/cache/SharedCacheBuilder.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.cache; 11 | 12 | import org.locationtech.geogig.model.PriorityService; 13 | import org.locationtech.geogig.model.ServiceFinder; 14 | 15 | /** 16 | * A builder for {@link SharedCache}, intended for {@link CacheManager} to look up the default 17 | * interface using {@link ServiceFinder}. 18 | * 19 | * @since 1.4 20 | */ 21 | public interface SharedCacheBuilder extends PriorityService { 22 | 23 | void setMaxSizeBytes(long maxSizeBytes); 24 | 25 | SharedCache build(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/storage/datastream/DataStreamRevObjectSerializerV2_1.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.datastream; 11 | 12 | /** 13 | * Serialization factory for serial version 2.1 14 | * 15 | * @see FormatCommonV2_1 16 | */ 17 | public class DataStreamRevObjectSerializerV2_1 extends DataStreamRevObjectSerializerV2 { 18 | 19 | public static final DataStreamRevObjectSerializerV2_1 INSTANCE = new DataStreamRevObjectSerializerV2_1(); 20 | 21 | public DataStreamRevObjectSerializerV2_1() { 22 | super(FormatCommonV2_1.INSTANCE); 23 | } 24 | 25 | protected DataStreamRevObjectSerializerV2_1(FormatCommonV2 format) { 26 | super(format); 27 | } 28 | 29 | public @Override String getDisplayName() { 30 | return "Binary 2.1"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/storage/datastream/DataStreamRevObjectSerializerV2_2.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.datastream; 11 | 12 | /** 13 | * Serialization factory for serial version 2.2 14 | * 15 | * @see FormatCommonV2_2 16 | */ 17 | public class DataStreamRevObjectSerializerV2_2 extends DataStreamRevObjectSerializerV2_1 { 18 | 19 | public static final DataStreamRevObjectSerializerV2_2 INSTANCE = new DataStreamRevObjectSerializerV2_2(); 20 | 21 | public DataStreamRevObjectSerializerV2_2() { 22 | super(FormatCommonV2_2.INSTANCE); 23 | } 24 | 25 | public @Override String getDisplayName() { 26 | return "Binary 2.2"; 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/storage/memory/Edge.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Justin Deoliveira (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | /** 13 | * Edge class used by {@link Graph} 14 | * 15 | * @author Justin Deoliveira, Boundless 16 | */ 17 | class Edge { 18 | 19 | final Node src; 20 | 21 | final Node dst; 22 | 23 | /** 24 | * Creates a new edge between two nodes. 25 | */ 26 | Edge(Node src, Node dst) { 27 | this.src = src; 28 | this.dst = dst; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/core/src/main/java/org/locationtech/geogig/storage/text/Marshaller.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.text; 11 | 12 | /** 13 | * A simple value marshalling/unmarshalling interface 14 | */ 15 | public interface Marshaller { 16 | 17 | public String marshall(Object value); 18 | 19 | public Object unmarshall(String source); 20 | } 21 | -------------------------------------------------------------------------------- /src/core/src/main/resources/META-INF/native-image/org.locationtech.geogig/geogig-core/native-image.properties: -------------------------------------------------------------------------------- 1 | Args = -H:IncludeResources=git.geogig.properties \ 2 | -H:ReflectionConfigurationResources=${.}/reflection-config.json -------------------------------------------------------------------------------- /src/core/src/main/resources/META-INF/services/org.locationtech.geogig.hooks.CommandHook: -------------------------------------------------------------------------------- 1 | #Built in command hooks 2 | org.locationtech.geogig.hooks.builtin.UpdateIndexesHook 3 | org.locationtech.geogig.hooks.builtin.RefLogCommandHook -------------------------------------------------------------------------------- /src/core/src/main/resources/META-INF/services/org.locationtech.geogig.repository.ContextBuilder: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.repository.impl.ContextBuilderImpl -------------------------------------------------------------------------------- /src/core/src/main/resources/META-INF/services/org.locationtech.geogig.repository.RepositoryResolver: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.storage.memory.MemoryRepositoryResolver -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/model/impl/QuadTreeBuilderExpandCollapseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.model.impl; 11 | 12 | import org.junit.Rule; 13 | import org.junit.Test; 14 | import org.locationtech.geogig.model.internal.QuadTreeTestSupport; 15 | 16 | public class QuadTreeBuilderExpandCollapseTest { 17 | 18 | @Rule 19 | public QuadTreeTestSupport support; 20 | 21 | public @Test void testExpandCollapse() { 22 | // support.newStrategy(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/model/impl/QuadTreeBuilderTestPseudoMercator.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.model.impl; 11 | 12 | import org.locationtech.geogig.model.RevObjects; 13 | import org.locationtech.geogig.model.internal.QuadTreeTestSupport; 14 | import org.locationtech.jts.geom.Envelope; 15 | 16 | public class QuadTreeBuilderTestPseudoMercator extends QuadTreeBuilderTest { 17 | 18 | protected @Override Envelope createMaxBounds() { 19 | return RevObjects.makePrecise(QuadTreeTestSupport.epsg3857Bounds()); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/model/internal/CanonicalClusteringStrategyHeapStorageTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.model.internal; 11 | 12 | import org.locationtech.geogig.storage.ObjectStore; 13 | 14 | public class CanonicalClusteringStrategyHeapStorageTest extends CanonicalClusteringStrategyTest { 15 | 16 | protected @Override HeapDAGStorageProvider createStorageProvider(ObjectStore source) { 17 | return new HeapDAGStorageProvider(source); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/plumbing/TestSerializableObject.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (LMN Solutions) - initial implementation 9 | */ 10 | package org.locationtech.geogig.plumbing; 11 | 12 | import java.io.Serializable; 13 | 14 | public class TestSerializableObject implements Serializable { 15 | private static final long serialVersionUID = -5758528763744914139L; 16 | 17 | public String words; 18 | } 19 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/datastream/DataStreamRevObjectSerializerV1Test.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.datastream; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 14 | 15 | public class DataStreamRevObjectSerializerV1Test extends RevObjectSerializerConformanceTest { 16 | 17 | protected @Override RevObjectSerializer newObjectSerializer() { 18 | return DataStreamRevObjectSerializerV1.INSTANCE; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/datastream/DataStreamRevObjectSerializerV2Test.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.datastream; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 14 | 15 | public class DataStreamRevObjectSerializerV2Test extends RevObjectSerializerConformanceTest { 16 | 17 | protected @Override RevObjectSerializer newObjectSerializer() { 18 | return DataStreamRevObjectSerializerV2.INSTANCE; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/datastream/DataStreamRevObjectSerializerV2_1Test.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.datastream; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 14 | 15 | public class DataStreamRevObjectSerializerV2_1Test extends RevObjectSerializerConformanceTest { 16 | 17 | protected @Override RevObjectSerializer newObjectSerializer() { 18 | return DataStreamRevObjectSerializerV2_1.INSTANCE; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/fs/FileBlobStoreTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2012-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.fs; 11 | 12 | import java.io.File; 13 | 14 | import org.locationtech.geogig.test.TestPlatform; 15 | import org.locationtech.geogig.transaction.TransactionBlobStore; 16 | import org.locationtech.geogig.transaction.TransactionBlobStoreTest; 17 | 18 | public class FileBlobStoreTest extends TransactionBlobStoreTest { 19 | 20 | protected @Override TransactionBlobStore createBlobStore(File currentDirectory) { 21 | new File(currentDirectory, ".geogig").mkdir();// fake a repo directory 22 | FileBlobStore fileBlobStore = new FileBlobStore(new TestPlatform(currentDirectory)); 23 | fileBlobStore.open(); 24 | return fileBlobStore; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/fs/FileRefDatabaseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.fs; 11 | 12 | import org.locationtech.geogig.repository.Platform; 13 | import org.locationtech.geogig.storage.RefDatabase; 14 | import org.locationtech.geogig.test.integration.repository.RefDatabaseTest; 15 | 16 | public class FileRefDatabaseTest extends RefDatabaseTest { 17 | 18 | protected @Override RefDatabase createDatabase(Platform platform) throws Exception { 19 | return new FileRefDatabase(platform.pwd()); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/memory/HeapBlobStoreTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | import java.io.File; 13 | 14 | import org.locationtech.geogig.transaction.TransactionBlobStore; 15 | import org.locationtech.geogig.transaction.TransactionBlobStoreTest; 16 | 17 | public class HeapBlobStoreTest extends TransactionBlobStoreTest { 18 | 19 | protected @Override TransactionBlobStore createBlobStore(File currentDirectory) { 20 | return new HeapBlobStore(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/memory/HeapConflictsDatabaseConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | import org.locationtech.geogig.storage.impl.ConflictsDatabaseConformanceTest; 13 | 14 | public class HeapConflictsDatabaseConformanceTest 15 | extends ConflictsDatabaseConformanceTest { 16 | 17 | protected @Override HeapConflictsDatabase createConflictsDatabase() throws Exception { 18 | 19 | return new HeapConflictsDatabase(); 20 | } 21 | 22 | protected @Override void dispose(HeapConflictsDatabase conflicts) throws Exception { 23 | // nothing to do 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/memory/HeapGraphDatabaseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Justin Deoliveira (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | import org.locationtech.geogig.repository.Platform; 13 | import org.locationtech.geogig.storage.impl.GraphDatabaseTest; 14 | 15 | public class HeapGraphDatabaseTest extends GraphDatabaseTest { 16 | 17 | protected @Override HeapGraphDatabase createDatabase(Platform platform) { 18 | return new HeapGraphDatabase(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/memory/HeapIndexDatabaseConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (Prominent Edge) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | import org.locationtech.geogig.repository.Hints; 13 | import org.locationtech.geogig.storage.IndexDatabase; 14 | import org.locationtech.geogig.storage.impl.IndexDatabaseConformanceTest; 15 | 16 | public class HeapIndexDatabaseConformanceTest extends IndexDatabaseConformanceTest { 17 | 18 | protected @Override IndexDatabase createIndexDatabase(boolean readOnly) { 19 | Hints hints = new Hints(); 20 | hints.set(Hints.OBJECTS_READ_ONLY, readOnly); 21 | HeapIndexDatabase heapIndexDatabase = new HeapIndexDatabase(hints); 22 | return heapIndexDatabase; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/memory/HeapObjectStoreConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | import org.locationtech.geogig.storage.ObjectStore; 13 | import org.locationtech.geogig.storage.impl.ObjectStoreConformanceTest; 14 | 15 | public class HeapObjectStoreConformanceTest extends ObjectStoreConformanceTest { 16 | 17 | protected @Override ObjectStore createOpen() { 18 | HeapObjectStore store = new HeapObjectStore(); 19 | store.open(); 20 | return store; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/storage/memory/HeapRefDatabaseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.memory; 11 | 12 | import org.locationtech.geogig.repository.Platform; 13 | import org.locationtech.geogig.storage.RefDatabase; 14 | import org.locationtech.geogig.test.integration.repository.RefDatabaseTest; 15 | 16 | public class HeapRefDatabaseTest extends RefDatabaseTest { 17 | 18 | protected @Override RefDatabase createDatabase(Platform platform) throws Exception { 19 | return new HeapRefDatabase(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/core/src/test/java/org/locationtech/geogig/test/performance/HeapGraphDatabaseStressTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Justin Deoliveira (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.test.performance; 11 | 12 | import org.locationtech.geogig.storage.GraphDatabase; 13 | import org.locationtech.geogig.storage.memory.HeapGraphDatabase; 14 | import org.locationtech.geogig.test.TestPlatform; 15 | 16 | public class HeapGraphDatabaseStressTest extends AbstractGraphDatabaseStressTest { 17 | 18 | protected @Override GraphDatabase createDatabase(TestPlatform platform) { 19 | return new HeapGraphDatabase(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/core/src/test/resources/META-INF/services/org.locationtech.geogig.repository.RepositoryResolver: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.repository.impl.RepositoryResolverTest$TestResolver -------------------------------------------------------------------------------- /src/core/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/experimental/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | org.locationtech.geogig 7 | geogig 8 | ${revision} 9 | 10 | 11 | geogig-experimental 12 | pom 13 | GeoGig Experimental Modules 14 | 15 | 16 | ql 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/experimental/ql/README.md: -------------------------------------------------------------------------------- 1 | GeoGig extension to perform data manipulation using a SQL-like query language 2 | -------------------------------------------------------------------------------- /src/experimental/ql/src/main/resources/META-INF/services/org.locationtech.geogig.cli.CLICommand: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.ql.cli.QL -------------------------------------------------------------------------------- /src/geotools/adapter/src/main/java/org/locationtech/geogig/data/ForwardingFeatureCollection.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.data; 11 | 12 | import org.geotools.feature.FeatureCollection; 13 | import org.geotools.feature.collection.DecoratingFeatureCollection; 14 | import org.opengis.feature.Feature; 15 | import org.opengis.feature.type.FeatureType; 16 | 17 | public class ForwardingFeatureCollection 18 | extends DecoratingFeatureCollection { 19 | 20 | public ForwardingFeatureCollection(FeatureCollection delegate) { 21 | super(delegate); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/geotools/adapter/src/main/java/org/locationtech/geogig/data/ForwardingFeatureIterator.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.data; 11 | 12 | import org.geotools.feature.FeatureIterator; 13 | import org.geotools.feature.collection.DecoratingFeatureIterator; 14 | import org.opengis.feature.Feature; 15 | 16 | public class ForwardingFeatureIterator extends DecoratingFeatureIterator { 17 | 18 | public ForwardingFeatureIterator(FeatureIterator iterator) { 19 | super(iterator); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/geotools/adapter/src/main/resources/META-INF/services/org.geotools.util.ConverterFactory: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.geotools.adapt.PrimitiveArrayToStringConverterFactory 2 | org.locationtech.geogig.geotools.adapt.MapToStringConverterFactory 3 | -------------------------------------------------------------------------------- /src/geotools/commands/src/main/java/org/locationtech/geogig/geotools/geopkg/AuditReport.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.geotools.geopkg; 11 | 12 | import java.util.concurrent.atomic.AtomicLong; 13 | 14 | import lombok.Getter; 15 | 16 | public class AuditReport { 17 | 18 | public final AuditTable table; 19 | 20 | public final AtomicLong added = new AtomicLong(), removed = new AtomicLong(), 21 | changed = new AtomicLong(); 22 | 23 | private @Getter RocksdbMap newMappings; 24 | 25 | AuditReport(AuditTable table) { 26 | this.table = table; 27 | } 28 | 29 | public void addMapping(String key, String value) { 30 | if (newMappings == null) { 31 | newMappings = new RocksdbMap(); 32 | } 33 | newMappings.put(key, value); 34 | } 35 | } -------------------------------------------------------------------------------- /src/geotools/commands/src/main/java/org/locationtech/geogig/geotools/geopkg/GeopkgMergeConflictsException.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (Prominent Edge) - initial implementation 9 | */ 10 | package org.locationtech.geogig.geotools.geopkg; 11 | 12 | import org.locationtech.geogig.porcelain.MergeConflictsException; 13 | 14 | /** 15 | * During a geopackage import, a merge may happen after the import occurs. This exception provides 16 | * the import results in the case of a conflict during the merge. 17 | */ 18 | public class GeopkgMergeConflictsException extends MergeConflictsException { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | public GeopkgMergeConflictsException(MergeConflictsException e) { 23 | 24 | super(e.getMessage(), e.getOurs(), e.getTheirs(), e.getReport()); 25 | super.initCause(e); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/geotools/commands/src/main/resources/META-INF/services/org.locationtech.geogig.cli.CLIModule: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.geotools.cli.GeoToolsModule 2 | -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/features/geopkg/GeoPkgDescribe.feature: -------------------------------------------------------------------------------- 1 | Feature: "geopkg describe" command 2 | In order to understand the structure of a table in a GeoPackage file 3 | As a Geogig User 4 | I want Geogig to describe the table 5 | 6 | Scenario: Try describing a GeoPackage table from an empty directory 7 | Given I am in an empty directory 8 | When I run the command "geopkg describe --table test" on an existing GeoPackage file 9 | Then the response should contain "Could not find the specified table." 10 | 11 | Scenario: Try describing a GeoPackage table 12 | Given I have a repository 13 | When I run the command "geopkg describe --table Points" on an existing GeoPackage file 14 | Then the response should contain "Table : Points" 15 | 16 | Scenario: Try to describe a GeoPackage table that doesn't exit in the database 17 | Given I have a repository 18 | When I run the command "geopkg describe --table nonexistant_table" on an existing GeoPackage file 19 | Then the response should contain "Could not find the specified table." 20 | -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/features/geopkg/GeoPkgList.feature: -------------------------------------------------------------------------------- 1 | Feature: "geopkg list" command 2 | In order to know all of the features available in a GeoPackage file 3 | As a Geogig User 4 | I want to list all of the features 5 | 6 | Scenario: Try listing from an empty directory 7 | Given I am in an empty directory 8 | When I run the command "geopkg list" on an existing GeoPackage file 9 | Then the response should start with "Not in a geogig repository" 10 | 11 | Scenario: Try listing from a valid directory 12 | Given I have a repository 13 | When I run the command "geopkg list" on an existing GeoPackage file 14 | Then the response should contain "Points" 15 | 16 | -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/features/online/PGDescribe.feature: -------------------------------------------------------------------------------- 1 | Feature: "pg describe" command 2 | In order to understand the structure of a table in a PostGIS database 3 | As a Geogig User 4 | I want Geogig to describe the table 5 | 6 | Scenario: Try describing a PostGIS table from an empty directory 7 | Given I am in an empty directory 8 | When I run the command "pg describe --table geogig_pg_test" on the PostGIS database 9 | Then the response should contain "Table : geogig_pg_test" 10 | 11 | Scenario: Try describing a PostGIS table 12 | Given I have a repository 13 | When I run the command "pg describe --table geogig_pg_test" on the PostGIS database 14 | Then the response should contain "Table : geogig_pg_test" 15 | 16 | Scenario: Try to describe a PostGIS table that doesn't exit in the database 17 | Given I have a repository 18 | When I run the command "pg describe --table nonexistant_table" on the PostGIS database 19 | Then the response should contain "Could not find the specified table." 20 | -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/features/online/PGList.feature: -------------------------------------------------------------------------------- 1 | Feature: "pg list" command 2 | In order to know all of the features available on a PostGIS database 3 | As a Geogig User 4 | I want to list all of the features 5 | 6 | Scenario: Try listing from an empty directory 7 | Given I am in an empty directory 8 | When I run the command "pg list" on the PostGIS database 9 | Then the response should start with "Not in a geogig repository" 10 | 11 | Scenario: Try listing from a valid directory 12 | Given I have a repository 13 | When I run the command "pg list" on the PostGIS database 14 | Then the response should contain "geogig_pg_test" 15 | 16 | -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/features/online/geogig_pg_test.sql: -------------------------------------------------------------------------------- 1 | SET statement_timeout = 0; 2 | SET client_encoding = 'UTF8'; 3 | SET standard_conforming_strings = on; 4 | SET check_function_bodies = false; 5 | SET client_min_messages = warning; 6 | 7 | SET search_path = public, pg_catalog; 8 | 9 | SET default_tablespace = ''; 10 | 11 | SET default_with_oids = false; 12 | 13 | CREATE TABLE geogig_pg_test ( 14 | gid integer DEFAULT nextval(1) NOT NULL, 15 | geom geometry(Point), 16 | name character varying(35) 17 | ); 18 | 19 | 20 | ALTER TABLE public.geogig_pg_test OWNER TO postgres; 21 | 22 | INSERT INTO geogig_pg_test (gid, geom, name) VALUES 23 | (1,'0101000000B435A75B3AB75EC00391246F7B2B4540','feature1'); 24 | INSERT INTO geogig_pg_test (gid, geom, name) VALUES 25 | (2,'0101000000B435A75B3AB75EC00391246F7B2B4540','feature2'); 26 | INSERT INTO geogig_pg_test (gid, geom, name) VALUES 27 | (3,'0101000000B435A75B3AB75EC00391246F7B2B4540','feature3'); 28 | 29 | ALTER TABLE ONLY geogig_pg_test 30 | ADD CONSTRAINT geogig_pg_test_pkey PRIMARY KEY (gid); -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/features/testdb.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/locationtech/geogig/2d32af685fb3dd710bc1558cab36294ebbc65e9f/src/geotools/commands/src/test/resources/features/testdb.sqlite -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/org/locationtech/geogig/geotools/cli/geojson/sample.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "features": [ 4 | { 5 | "type": "Feature", 6 | "geometry": { 7 | "type": "LineString", 8 | "coordinates": [ 9 | [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] 10 | ] 11 | }, 12 | "properties": { 13 | "prop1": 0.0, 14 | "prop0": "value0" 15 | } 16 | }, 17 | { 18 | "type": "Feature", 19 | "geometry": { 20 | "type": "LineString", 21 | "coordinates": [ 22 | [ 23 | [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0] 24 | ] 25 | ] 26 | }, 27 | "properties": { 28 | "prop1": 0.2, 29 | "prop0": "value1" 30 | } 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /src/geotools/commands/src/test/resources/org/locationtech/geogig/geotools/cli/shp/shape.shp: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf390 2 | {\fonttbl} 3 | {\colortbl;\red255\green255\blue255;} 4 | \margl1440\margr1440\vieww10800\viewh8400\viewkind0 5 | } -------------------------------------------------------------------------------- /src/geotools/datastore/src/main/resources/META-INF/services/org.geotools.data.DataStoreFactorySpi: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.geotools.data.GeoGigDataStoreFactory -------------------------------------------------------------------------------- /src/geotools/datastore/src/main/resources/META-INF/services/org.geotools.filter.expression.PropertyAccessorFactory: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.geotools.data.reader.ExtraDataPropertyAccessorFactory -------------------------------------------------------------------------------- /src/geotools/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 7 | org.locationtech.geogig 8 | geogig 9 | ${revision} 10 | 11 | 12 | geogig-gt-parent 13 | pom 14 | GeoTools modules parent 15 | 16 | 17 | adapter 18 | commands 19 | datastore 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/metadata/src/main/java/org/locationtech/geogig/crs/CoordinateReferenceSystem.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.crs; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Value; 6 | 7 | @AllArgsConstructor(access = AccessLevel.PACKAGE) 8 | public @Value class CoordinateReferenceSystem { 9 | 10 | public static final CoordinateReferenceSystem NULL = new CoordinateReferenceSystem( 11 | "urn:ogc:def:crs:EPSG::0", null); 12 | 13 | public static final CoordinateReferenceSystem WGS84 = new CoordinateReferenceSystem("EPSG:4326", 14 | null); 15 | 16 | private String srsIdentifier; 17 | 18 | private String WKT; 19 | 20 | public boolean isNull() { 21 | return NULL.srsIdentifier.equals(this.srsIdentifier); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/pullrequests/src/main/java/org/geogig/commands/pr/PRListOp.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.geogig.commands.pr; 11 | 12 | import java.util.List; 13 | import java.util.stream.Collectors; 14 | import java.util.stream.IntStream; 15 | import java.util.stream.Stream; 16 | 17 | public class PRListOp extends PRCommand> { 18 | 19 | protected @Override List _call() { 20 | IntStream ids = configDatabase().getAllSubsections("pr").stream() 21 | .mapToInt(s -> Integer.valueOf(s)).sorted(); 22 | 23 | Stream prstream = ids.parallel() 24 | .mapToObj(prId -> command(PRFindOp.class).setId(prId).call().orElse(null)) 25 | .filter(r -> r != null); 26 | 27 | List prs = prstream.collect(Collectors.toList()); 28 | return prs; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/remoting/src/main/java/org/locationtech/geogig/remotes/internal/HeapDeduplicationService.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2013-2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * David Winslow (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.remotes.internal; 11 | 12 | public class HeapDeduplicationService implements DeduplicationService { 13 | public @Override Deduplicator createDeduplicator() { 14 | return new HeapDeduplicator(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/remoting/src/main/java/org/locationtech/geogig/remotes/internal/ObjectFunnel.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2014-2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.remotes.internal; 11 | 12 | import java.io.Closeable; 13 | import java.io.IOException; 14 | 15 | import org.locationtech.geogig.model.RevObject; 16 | 17 | /** 18 | * A closeable funnel used to transparently send objects to a remote resource. 19 | */ 20 | public interface ObjectFunnel extends Closeable { 21 | 22 | public void funnel(RevObject object) throws IOException; 23 | } 24 | -------------------------------------------------------------------------------- /src/remoting/src/main/java/org/locationtech/geogig/remotes/pack/BlockingIterator.java: -------------------------------------------------------------------------------- 1 | package org.locationtech.geogig.remotes.pack; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | 5 | import com.google.common.collect.AbstractIterator; 6 | 7 | class BlockingIterator extends AbstractIterator { 8 | 9 | private final BlockingQueue queue; 10 | 11 | private final T terminalToken; 12 | 13 | public BlockingIterator(BlockingQueue queue, T terminalToken) { 14 | this.queue = queue; 15 | this.terminalToken = terminalToken; 16 | } 17 | 18 | protected @Override T computeNext() { 19 | T object; 20 | try { 21 | object = queue.take(); 22 | } catch (InterruptedException e) { 23 | e.printStackTrace(); 24 | throw new RuntimeException(e); 25 | } 26 | if (terminalToken.equals(object)) { 27 | return endOfData(); 28 | } 29 | return object; 30 | } 31 | } -------------------------------------------------------------------------------- /src/remoting/src/main/java/org/locationtech/geogig/remotes/pack/LocalPackBuilder.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.remotes.pack; 11 | 12 | import static org.locationtech.geogig.base.Preconditions.checkState; 13 | 14 | import org.locationtech.geogig.repository.Repository; 15 | 16 | import lombok.NonNull; 17 | 18 | public class LocalPackBuilder extends AbstractPackBuilder { 19 | 20 | private final Repository localRepo; 21 | 22 | public LocalPackBuilder(@NonNull Repository localRepo) { 23 | checkState(localRepo.isOpen()); 24 | this.localRepo = localRepo; 25 | } 26 | 27 | public @Override Pack build() { 28 | PackImpl pack = new PackImpl(localRepo, tags, missingCommits, missingIndexes); 29 | return pack; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/remoting/src/main/java/org/locationtech/geogig/remotes/pack/PackBuilder.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.remotes.pack; 11 | 12 | import java.util.Set; 13 | 14 | import org.locationtech.geogig.model.ObjectId; 15 | import org.locationtech.geogig.model.RevCommit; 16 | import org.locationtech.geogig.model.RevTag; 17 | import org.locationtech.geogig.repository.IndexInfo; 18 | 19 | public interface PackBuilder { 20 | 21 | void start(Set tags); 22 | 23 | void startRefResponse(RefRequest req); 24 | 25 | void addCommit(RevCommit commit); 26 | 27 | public void addIndex(IndexInfo indexDef, ObjectId canonicalFeatureTreeId, 28 | ObjectId oldIndexTreeId, ObjectId newIndexTreeId); 29 | 30 | void endRefResponse(); 31 | 32 | Pack build(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/remoting/src/main/resources/META-INF/native-image/org.locationtech.geogig/geogig-remoting/native-image.properties: -------------------------------------------------------------------------------- 1 | Args = -H:IncludeResources=git.geogig.properties \ 2 | -H:ReflectionConfigurationResources=${.}/reflection-config.json -------------------------------------------------------------------------------- /src/remoting/src/main/resources/META-INF/services/org.locationtech.geogig.remotes.internal.RemoteResolver: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.remotes.internal.LocalRemoteResolver -------------------------------------------------------------------------------- /src/remoting/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/storage/cache/caffeine/src/main/java/org/locationtech/geogig/cache/caffeine/CaffeineCacheBuilder.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - Pulled off from SharedCache.Impl as a top level class 9 | */ 10 | package org.locationtech.geogig.cache.caffeine; 11 | 12 | import org.locationtech.geogig.storage.cache.SharedCache; 13 | import org.locationtech.geogig.storage.cache.SharedCacheBuilder; 14 | 15 | public class CaffeineCacheBuilder implements SharedCacheBuilder { 16 | 17 | private long maxSizeBytes; 18 | 19 | public @Override int getPriority() { 20 | return 0; 21 | } 22 | 23 | public @Override void setMaxSizeBytes(long maxSizeBytes) { 24 | this.maxSizeBytes = maxSizeBytes; 25 | } 26 | 27 | public @Override SharedCache build() { 28 | return new CaffeineSharedCache(maxSizeBytes); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/storage/cache/caffeine/src/main/resources/META-INF/services/org.locationtech.geogig.storage.cache.SharedCacheBuilder: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.cache.caffeine.CaffeineCacheBuilder -------------------------------------------------------------------------------- /src/storage/cache/caffeine/src/test/java/org/locationtech/geogig/cache/caffeine/CaffeineSharedCacheTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.cache.caffeine; 11 | 12 | import org.locationtech.geogig.storage.cache.SharedCache; 13 | import org.locationtech.geogig.storage.cache.SharedCacheTest; 14 | 15 | public class CaffeineSharedCacheTest extends SharedCacheTest { 16 | 17 | protected @Override SharedCache createCache(int l1Capacity, long maxCacheSizeBytes) { 18 | return new CaffeineSharedCache(maxCacheSizeBytes); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/storage/cache/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 7 | org.locationtech.geogig 8 | geogig-storage 9 | ${revision} 10 | 11 | 12 | geogig-storage-cache 13 | pom 14 | RevObject cache implementations 15 | 16 | 17 | caffeine 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/main/generated-sources/org/locationtech/geogig/flatbuffers/generated/v1/ObjectType.java: -------------------------------------------------------------------------------- 1 | // automatically generated by the FlatBuffers compiler, do not modify 2 | 3 | package org.locationtech.geogig.flatbuffers.generated.v1; 4 | 5 | public final class ObjectType { 6 | private ObjectType() { } 7 | public static final byte Commit = 0; 8 | public static final byte LeafTree = 1; 9 | public static final byte NodeTree = 2; 10 | public static final byte Feature = 3; 11 | public static final byte Tag = 4; 12 | public static final byte SimpleFeatureType = 5; 13 | 14 | public static final String[] names = { "Commit", "LeafTree", "NodeTree", "Feature", "Tag", "SimpleFeatureType", }; 15 | 16 | public static String name(int e) { return names[e]; } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/main/generated-sources/org/locationtech/geogig/flatbuffers/generated/v1/SHA.java: -------------------------------------------------------------------------------- 1 | // automatically generated by the FlatBuffers compiler, do not modify 2 | 3 | package org.locationtech.geogig.flatbuffers.generated.v1; 4 | 5 | import java.nio.ByteBuffer; 6 | 7 | import com.google.flatbuffers.FlatBufferBuilder; 8 | import com.google.flatbuffers.Struct; 9 | 10 | @SuppressWarnings("unused") 11 | public final class SHA extends Struct { 12 | public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; } 13 | public SHA __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } 14 | 15 | public int h1() { return bb.getInt(bb_pos + 0); } 16 | public long h2() { return bb.getLong(bb_pos + 8); } 17 | public long h3() { return bb.getLong(bb_pos + 16); } 18 | 19 | public static int createSHA(FlatBufferBuilder builder, int h1, long h2, long h3) { 20 | builder.prep(8, 24); 21 | builder.putLong(h3); 22 | builder.putLong(h2); 23 | builder.pad(4); 24 | builder.putInt(h1); 25 | return builder.offset(); 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/main/generated-sources/org/locationtech/geogig/flatbuffers/generated/v1/values/Bounds.java: -------------------------------------------------------------------------------- 1 | // automatically generated by the FlatBuffers compiler, do not modify 2 | 3 | package org.locationtech.geogig.flatbuffers.generated.v1.values; 4 | 5 | import java.nio.ByteBuffer; 6 | 7 | import com.google.flatbuffers.FlatBufferBuilder; 8 | import com.google.flatbuffers.Struct; 9 | 10 | @SuppressWarnings("unused") 11 | public final class Bounds extends Struct { 12 | public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; } 13 | public Bounds __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } 14 | 15 | public float x1() { return bb.getFloat(bb_pos + 0); } 16 | public float y1() { return bb.getFloat(bb_pos + 4); } 17 | public float x2() { return bb.getFloat(bb_pos + 8); } 18 | public float y2() { return bb.getFloat(bb_pos + 12); } 19 | 20 | public static int createBounds(FlatBufferBuilder builder, float x1, float y1, float x2, float y2) { 21 | builder.prep(4, 16); 22 | builder.putFloat(y2); 23 | builder.putFloat(x2); 24 | builder.putFloat(y1); 25 | builder.putFloat(x1); 26 | return builder.offset(); 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/main/generated-sources/org/locationtech/geogig/flatbuffers/generated/v1/values/ENCODEDGEOMETRY.java: -------------------------------------------------------------------------------- 1 | // automatically generated by the FlatBuffers compiler, do not modify 2 | 3 | package org.locationtech.geogig.flatbuffers.generated.v1.values; 4 | 5 | public final class ENCODEDGEOMETRY { 6 | private ENCODEDGEOMETRY() { } 7 | public static final byte NONE = 0; 8 | public static final byte WKBGEOMETRY = 1; 9 | public static final byte TWKBGEOMETRY = 2; 10 | public static final byte FLATGEOMETRY = 3; 11 | 12 | public static final String[] names = { "NONE", "WKBGEOMETRY", "TWKBGEOMETRY", "FLATGEOMETRY", }; 13 | 14 | public static String name(int e) { return names[e]; } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/main/generated-sources/org/locationtech/geogig/flatbuffers/generated/v1/values/GeometryType.java: -------------------------------------------------------------------------------- 1 | // automatically generated by the FlatBuffers compiler, do not modify 2 | 3 | package org.locationtech.geogig.flatbuffers.generated.v1.values; 4 | 5 | public final class GeometryType { 6 | private GeometryType() { } 7 | public static final byte Point = 0; 8 | public static final byte LineString = 1; 9 | public static final byte Polygon = 2; 10 | public static final byte MultiPoint = 3; 11 | public static final byte MultiLineString = 4; 12 | public static final byte MultiPolygon = 5; 13 | public static final byte GeometryCollection = 6; 14 | 15 | public static final String[] names = { "Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon", "GeometryCollection", }; 16 | 17 | public static String name(int e) { return names[e]; } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/main/resources/META-INF/services/org.locationtech.geogig.model.RevObjectFactory: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.flatbuffers.FlatBuffersRevObjectFactory -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/test/java/org/locationtech/geogig/flatbuffers/FlatBuffersRevObjectFactoryConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.flatbuffers; 11 | 12 | import org.locationtech.geogig.model.RevObjectFactory; 13 | import org.locationtech.geogig.model.RevObjectFactoryConformanceTest; 14 | 15 | public class FlatBuffersRevObjectFactoryConformanceTest extends RevObjectFactoryConformanceTest { 16 | 17 | protected @Override RevObjectFactory newFactory() { 18 | return new FlatBuffersRevObjectFactory(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/test/java/org/locationtech/geogig/flatbuffers/FlatBuffersRevObjectSerializerStreamingTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.flatbuffers; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 14 | 15 | public class FlatBuffersRevObjectSerializerStreamingTest 16 | extends RevObjectSerializerConformanceTest { 17 | 18 | protected @Override RevObjectSerializer newObjectSerializer() { 19 | return new FlatBuffersRevObjectSerializer(true); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/formats/flatbuffers/src/test/java/org/locationtech/geogig/flatbuffers/FlatBuffersRevObjectSerializerTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2018 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.flatbuffers; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 14 | 15 | public class FlatBuffersRevObjectSerializerTest extends RevObjectSerializerConformanceTest { 16 | 17 | protected @Override RevObjectSerializer newObjectSerializer() { 18 | return new FlatBuffersRevObjectSerializer(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/storage/formats/lz4/src/test/java/org/locationtech/geogig/storage/format/lz4/RevObjectSerializerLZ4Test.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.format.lz4; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.datastream.DataStreamRevObjectSerializerV2_1; 14 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 15 | 16 | public class RevObjectSerializerLZ4Test extends RevObjectSerializerConformanceTest { 17 | 18 | protected @Override RevObjectSerializer newObjectSerializer() { 19 | return new RevObjectSerializerLZ4(DataStreamRevObjectSerializerV2_1.INSTANCE); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/formats/lzf/src/test/java/org/locationtech/geogig/storage/format/lzf/RevObjectSerializerLZFTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.format.lzf; 11 | 12 | import org.locationtech.geogig.storage.RevObjectSerializer; 13 | import org.locationtech.geogig.storage.datastream.DataStreamRevObjectSerializerV2_1; 14 | import org.locationtech.geogig.storage.impl.RevObjectSerializerConformanceTest; 15 | 16 | public class RevObjectSerializerLZFTest extends RevObjectSerializerConformanceTest { 17 | 18 | protected @Override RevObjectSerializer newObjectSerializer() { 19 | return new RevObjectSerializerLZF(DataStreamRevObjectSerializerV2_1.INSTANCE); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/formats/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 7 | org.locationtech.geogig 8 | geogig-storage 9 | ${revision} 10 | 11 | 12 | geogig-storage-formats 13 | pom 14 | Storage RevObject serialization formats 15 | 16 | 17 | flatbuffers 18 | lz4 19 | lzf 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/storage/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 7 | org.locationtech.geogig 8 | geogig 9 | ${revision} 10 | 11 | 12 | geogig-storage 13 | pom 14 | Storage backends 15 | 16 | 17 | formats 18 | temporary-rocksdb 19 | postgres 20 | rocksdb 21 | cache 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/storage/postgres/src/main/java/org/locationtech/geogig/storage/postgresql/config/PGDataSourceProvider.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020 Gabriel Roldan 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.storage.postgresql.config; 11 | 12 | import javax.sql.DataSource; 13 | 14 | public interface PGDataSourceProvider { 15 | 16 | DataSource get(ConnectionConfig config); 17 | 18 | void close(DataSource dataSource); 19 | } 20 | -------------------------------------------------------------------------------- /src/storage/postgres/src/main/resources/META-INF/services/org.locationtech.geogig.repository.RepositoryResolver: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.storage.postgresql.PGRepositoryResolver -------------------------------------------------------------------------------- /src/storage/postgres/src/main/resources/META-INF/services/org.locationtech.geogig.storage.StorageProvider: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.storage.postgresql.PGStorageProvider 2 | -------------------------------------------------------------------------------- /src/storage/rocksdb/README.md: -------------------------------------------------------------------------------- 1 | #RocksDB Storage Backend 2 | 3 | This is the storage plugin for rocksdb 4 | 5 | RocksDB is an embeddable persistent key-value store for fast storage written in C++ 6 | 7 | The maven JNI bindings are obtained from Maven central at https://mvnrepository.com/artifact/org.rocksdb/rocksdbjni 8 | 9 | #Usage 10 | 11 | To create a repository with the rocksdb storage backend (objects, graph, blobs, and conflicts) use the following command: 12 | 13 | ``` 14 | gig init --config "rocksdb.version=1,storage.objects=rocksdb,storage.graph=rocksdb,storage.refs=file" 15 | ``` -------------------------------------------------------------------------------- /src/storage/rocksdb/src/main/resources/META-INF/services/org.locationtech.geogig.repository.RepositoryResolver: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.rocksdb.RocksdbRepositoryResolver -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/RocksdbBlobStoreTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Johnathan Garrett (Prominent Edge) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb; 11 | 12 | import java.io.File; 13 | 14 | import org.locationtech.geogig.transaction.TransactionBlobStore; 15 | import org.locationtech.geogig.transaction.TransactionBlobStoreTest; 16 | 17 | public class RocksdbBlobStoreTest extends TransactionBlobStoreTest { 18 | 19 | protected @Override TransactionBlobStore createBlobStore(File currentDirectory) { 20 | RocksdbBlobStore blobStore = new RocksdbBlobStore(currentDirectory, false); 21 | return blobStore; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/RocksdbGraphDatabaseConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb; 11 | 12 | import java.io.File; 13 | 14 | import org.locationtech.geogig.repository.Platform; 15 | import org.locationtech.geogig.storage.impl.GraphDatabaseTest; 16 | 17 | public class RocksdbGraphDatabaseConformanceTest extends GraphDatabaseTest { 18 | 19 | protected @Override RocksdbGraphDatabase createDatabase(Platform platform) throws Exception { 20 | File dbdir = new File(platform.getUserHome(), "graph.rocksdb"); 21 | boolean readOnly = false; 22 | RocksdbGraphDatabase db = new RocksdbGraphDatabase(dbdir, readOnly); 23 | return db; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/RocksdbObjectStoreConformanceTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb; 11 | 12 | import java.io.File; 13 | import java.io.IOException; 14 | 15 | import org.junit.Rule; 16 | import org.junit.rules.TemporaryFolder; 17 | import org.locationtech.geogig.storage.impl.ObjectStoreConformanceTest; 18 | 19 | public class RocksdbObjectStoreConformanceTest extends ObjectStoreConformanceTest { 20 | 21 | public @Rule TemporaryFolder folder = new TemporaryFolder(); 22 | 23 | protected @Override RocksdbObjectStore createOpen() throws IOException { 24 | File dbdir = folder.newFolder(".geogig"); 25 | RocksdbObjectStore store = new RocksdbObjectStore(dbdir, false); 26 | store.open(); 27 | return store; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksCheckSparsePathTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | 15 | public class RocksCheckSparsePathTest 16 | extends org.locationtech.geogig.test.integration.CheckSparsePathTest { 17 | 18 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 19 | 20 | public @Before void before() { 21 | testRepository.setURIBuilder(uriBuilder); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksCommitOpTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | import org.locationtech.geogig.test.integration.CommitOpTest; 15 | 16 | public class RocksCommitOpTest extends CommitOpTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksDiffOpTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | import org.locationtech.geogig.test.integration.DiffOpTest; 15 | 16 | public class RocksDiffOpTest extends DiffOpTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksFindCommonAncestorTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | 15 | public class RocksFindCommonAncestorTest 16 | extends org.locationtech.geogig.test.integration.FindCommonAncestorTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksLogOpTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | import org.locationtech.geogig.test.integration.LogOpTest; 15 | 16 | public class RocksLogOpTest extends LogOpTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksRebaseOpTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | import org.locationtech.geogig.test.integration.RebaseOpTest; 15 | 16 | public class RocksRebaseOpTest extends RebaseOpTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksRevParseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | import org.locationtech.geogig.plumbing.RevParseTest; 15 | 16 | public class RocksRevParseTest extends RevParseTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/rocksdb/src/test/java/org/locationtech/geogig/rocksdb/integration/RocksRevertOpTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.rocksdb.integration; 11 | 12 | import org.junit.Before; 13 | import org.junit.Rule; 14 | import org.locationtech.geogig.test.integration.RevertOpTest; 15 | 16 | public class RocksRevertOpTest extends RevertOpTest { 17 | public @Rule RocksdbTestRepositoryURIBuilder uriBuilder = new RocksdbTestRepositoryURIBuilder(); 18 | 19 | public @Before void before() { 20 | testRepository.setURIBuilder(uriBuilder); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/storage/temporary-rocksdb/src/main/resources/META-INF/services/org.locationtech.geogig.model.internal.DAGStorageProviderFactory: -------------------------------------------------------------------------------- 1 | org.locationtech.geogig.tempstorage.rocksdb.RocksdbDAGStorageProviderFactory -------------------------------------------------------------------------------- /src/storage/temporary-rocksdb/src/test/java/org/locationtech/geogig/tempstorage/rocksdb/CanonicalClusteringStrategyRocksdbStorageTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan (Boundless) - initial implementation 9 | */ 10 | package org.locationtech.geogig.tempstorage.rocksdb; 11 | 12 | import org.locationtech.geogig.model.internal.CanonicalClusteringStrategyTest; 13 | import org.locationtech.geogig.storage.ObjectStore; 14 | 15 | public class CanonicalClusteringStrategyRocksdbStorageTest extends CanonicalClusteringStrategyTest { 16 | 17 | protected @Override RocksdbDAGStorageProvider createStorageProvider(ObjectStore source) { 18 | return new RocksdbDAGStorageProvider(source); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/storage/temporary-rocksdb/src/test/java/org/locationtech/geogig/tempstorage/rocksdb/RocksdbDAGStorageProviderFactoryTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019 Boundless and others. 2 | * All rights reserved. This program and the accompanying materials 3 | * are made available under the terms of the Eclipse Distribution License v1.0 4 | * which accompanies this distribution, and is available at 5 | * https://www.eclipse.org/org/documents/edl-v10.html 6 | * 7 | * Contributors: 8 | * Gabriel Roldan - initial implementation 9 | */ 10 | package org.locationtech.geogig.tempstorage.rocksdb; 11 | 12 | import static org.junit.Assert.assertTrue; 13 | 14 | import org.junit.Test; 15 | import org.locationtech.geogig.model.ServiceFinder; 16 | import org.locationtech.geogig.model.internal.DAGStorageProviderFactory; 17 | 18 | public class RocksdbDAGStorageProviderFactoryTest { 19 | 20 | public final @Test void testServicePriority() { 21 | DAGStorageProviderFactory defaultService = new ServiceFinder() 22 | .lookupDefaultService(DAGStorageProviderFactory.class); 23 | assertTrue(defaultService instanceof RocksdbDAGStorageProviderFactory); 24 | } 25 | 26 | } 27 | --------------------------------------------------------------------------------