Skip to content

Commit e319f8a

Browse files
committed
Update to geodiff 1.0 (fixes #49) and version++ (1.0.5)
1 parent c87123b commit e319f8a

File tree

8 files changed

+26
-21
lines changed

8 files changed

+26
-21
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 1.0.5
4+
5+
- Switched to geodiff 1.0 and mergin-client 0.6 (#49)
6+
- Robustness improvement: mark base schema as invalid if init fails (#46)
7+
38
## 1.0.4
49

510
- More fixes for loss of precision of floating point numbers

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ RUN apt-get update && apt-get install -y \
1818
RUN python3 -m pip install --upgrade pip
1919
RUN pip3 install mergin-client
2020

21-
# geodiff (needed with PostgreSQL support and in master version)
22-
RUN git clone https://github.com/lutraconsulting/geodiff.git
21+
# geodiff (version >= 1.0.0 is needed with PostgreSQL support - we have to compile it)
22+
RUN git clone --branch 1.0.0 https://github.com/lutraconsulting/geodiff.git
2323
RUN cd geodiff && mkdir build && cd build && \
2424
cmake -DWITH_POSTGRESQL=TRUE ../geodiff && \
2525
make

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ CREATE TABLE sync_data.points (
135135
To run automatic tests:
136136
137137
cd mergin
138-
export TEST_GEODIFFINFO_EXE=<geodiffinfo> # path to geodiffinfo executable
138+
export TEST_GEODIFF_EXE=<geodiff> # path to geodiff executable
139139
export TEST_DB_CONNINFO=<conninfo> # connection info for DB
140140
export TEST_MERGIN_URL=<url> # testing server
141141
export TEST_API_USERNAME=<username>

config-dockerfile.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
[general]
33
working_dir=/tmp/dbsync
4-
geodiffinfo_exe=/geodiff/build/geodiffinfo
4+
geodiff_exe=/geodiff/build/geodiff
55

66
[db]
77
driver=postgres

config.ini.default

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
[general]
33
working_dir=/tmp/dbsync
4-
geodiffinfo_exe=geodiffinfo
4+
geodiff_exe=geodiff
55

66
[mergin]
77
username=john

dbsync.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from version import __version__
2424
from psycopg2 import sql
2525

26-
# set high logging level for geodiff (used by geodiffinfo executable)
26+
# set high logging level for geodiff (used by geodiff executable)
2727
# so we get as much information as possible
2828
os.environ["GEODIFF_LOGGER_LEVEL"] = '4' # 0 = nothing, 1 = errors, 2 = warning, 3 = info, 4 = debug
2929

@@ -37,7 +37,7 @@ class Config:
3737

3838
def __init__(self):
3939
self.project_working_dir = None
40-
self.geodiffinfo_exe = None
40+
self.geodiff_exe = None
4141

4242
self.mergin_url = 'https://public.cloudmergin.com'
4343

@@ -76,7 +76,7 @@ def load(self, filename):
7676
cfg.read(filename)
7777

7878
self.project_working_dir = cfg['general']['working_dir']
79-
self.geodiffinfo_exe = cfg['general']['geodiffinfo_exe']
79+
self.geodiff_exe = cfg['general']['geodiff_exe']
8080

8181
if 'mergin' in cfg:
8282
cfg_mergin = cfg['mergin']
@@ -143,26 +143,26 @@ def _check_has_password():
143143

144144

145145
def _run_geodiff(cmd):
146-
""" will run a command (with geodiffinfo) and report what got to stderr and raise exception
146+
""" will run a command (with geodiff) and report what got to stderr and raise exception
147147
if the command returns non-zero exit code """
148148
res = subprocess.run(cmd, stderr=subprocess.PIPE)
149149
geodiff_stderr = res.stderr.decode()
150150
if geodiff_stderr:
151151
print("GEODIFF: " + geodiff_stderr)
152152
if res.returncode != 0:
153-
raise DbSyncError("geodiffinfo failed!\n" + str(cmd))
153+
raise DbSyncError("geodiff failed!\n" + str(cmd))
154154

155155

156156
def _geodiff_create_changeset(driver, conn_info, base, modified, changeset):
157-
_run_geodiff([config.geodiffinfo_exe, "createChangesetEx", driver, conn_info, base, modified, changeset])
157+
_run_geodiff([config.geodiff_exe, "diff", "--driver", driver, conn_info, base, modified, changeset])
158158

159159

160160
def _geodiff_apply_changeset(driver, conn_info, base, changeset):
161-
_run_geodiff([config.geodiffinfo_exe, "applyChangesetEx", driver, conn_info, base, changeset])
161+
_run_geodiff([config.geodiff_exe, "apply", "--driver", driver, conn_info, base, changeset])
162162

163163

164-
def _geodiff_rebase(driver, conn_info, base, modified, base2their, conflicts):
165-
_run_geodiff([config.geodiffinfo_exe, "rebaseEx", driver, conn_info, base, modified, base2their, conflicts])
164+
def _geodiff_rebase(driver, conn_info, base, our, base2their, conflicts):
165+
_run_geodiff([config.geodiff_exe, "rebase-db", "--driver", driver, conn_info, base, our, base2their, conflicts])
166166

167167

168168
def _geodiff_list_changes_details(changeset):
@@ -173,7 +173,7 @@ def _geodiff_list_changes_details(changeset):
173173
tmp_output = os.path.join(tmp_dir, 'dbsync-changeset-details')
174174
if os.path.exists(tmp_output):
175175
os.remove(tmp_output)
176-
_run_geodiff([config.geodiffinfo_exe, "listChanges", changeset, tmp_output])
176+
_run_geodiff([config.geodiff_exe, "as-json", changeset, tmp_output])
177177
with open(tmp_output) as f:
178178
out = json.load(f)
179179
os.remove(tmp_output)
@@ -188,19 +188,19 @@ def _geodiff_list_changes_summary(changeset):
188188
tmp_output = os.path.join(tmp_dir, 'dbsync-changeset-summary')
189189
if os.path.exists(tmp_output):
190190
os.remove(tmp_output)
191-
_run_geodiff([config.geodiffinfo_exe, "listChangesSummary", changeset, tmp_output])
191+
_run_geodiff([config.geodiff_exe, "as-summary", changeset, tmp_output])
192192
with open(tmp_output) as f:
193193
out = json.load(f)
194194
os.remove(tmp_output)
195195
return out["geodiff_summary"]
196196

197197

198198
def _geodiff_make_copy(src_driver, src_conn_info, src, dst_driver, dst_conn_info, dst):
199-
_run_geodiff([config.geodiffinfo_exe, "makeCopy", src_driver, src_conn_info, src, dst_driver, dst_conn_info, dst])
199+
_run_geodiff([config.geodiff_exe, "copy", "--driver-1", src_driver, src_conn_info, "--driver-2", dst_driver, dst_conn_info, src, dst])
200200

201201

202202
def _geodiff_create_changeset_dr(src_driver, src_conn_info, src, dst_driver, dst_conn_info, dst, changeset):
203-
_run_geodiff([config.geodiffinfo_exe, "createChangesetDr", src_driver, src_conn_info, src, dst_driver, dst_conn_info, dst, changeset])
203+
_run_geodiff([config.geodiff_exe, "diff", "--driver-1", src_driver, src_conn_info, "--driver-2", dst_driver, dst_conn_info, src, dst, changeset])
204204

205205

206206
def _compare_datasets(src_driver, src_conn_info, src, dst_driver, dst_conn_info, dst, summary_only=True):

test/test_basic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from dbsync import dbsync_init, dbsync_pull, dbsync_push, dbsync_status, config, DbSyncError, _geodiff_make_copy, \
1212
_get_db_project_comment
1313

14-
GEODIFFINFO_EXE = os.environ.get('TEST_GEODIFFINFO_EXE')
14+
GEODIFF_EXE = os.environ.get('TEST_GEODIFF_EXE')
1515
DB_CONNINFO = os.environ.get('TEST_DB_CONNINFO')
1616
SERVER_URL = os.environ.get('TEST_MERGIN_URL')
1717
API_USER = os.environ.get('TEST_API_USERNAME')
@@ -74,7 +74,7 @@ def init_sync_from_geopackage(mc, project_name, source_gpkg_path):
7474
mc.push_project(project_dir)
7575

7676
# prepare dbsync config
77-
config.geodiffinfo_exe = GEODIFFINFO_EXE
77+
config.geodiff_exe = GEODIFF_EXE
7878
config.mergin_username = API_USER
7979
config.mergin_password = USER_PWD
8080
config.mergin_url = SERVER_URL

version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.0.4'
1+
__version__ = '1.0.5'

0 commit comments

Comments
 (0)