Soxsten пишет:Недолго думая я вставил в него инфо со второго компа и, о чудо!, все заработало!
Поэтому найдено костыльное решение - запретить изменение файла database.ini и добавить его в .gitignore
P.S. Вопрос: где хранится информация о текущем месте базы? А то я решил переместить базу, программа ругается, но не предлагает указать новое расположение.
А удаление папки конфиг просто создало новую базу...
Схема работы следующая: database.ini - это неотъемлемая часть хранимых данных. Поэтому этот файл хранится рядом с mytetra.xml. В настоящий момент в нем хранятся только данные, необходимые для шифрования. Пока нет шифрования - он с пустыми значениями. Если есть шифрование - он заполняется в момент задания (или смены) пароля. Важно то, что в этом файле хранится, например, соль, которая перемешивается с паролем для выработки ключа шифрования. Поэтому, если этот файл находится не в консистентном состоянии с зашифрованными в базе данными, то даже зная пароль, расшифровать данные будет невозможно (т. е. в случае если в database.ini лежит не та соль, которая была использована при задании пароля, или этой соли вообще нет). В любом случае, если таскать с собой полностью каталог /data, неважно каким способом - копированием, через git, через dropbox, то данные не потеряются, потому что сохраняется консистентность.
Информация о текущем месте базы хранится в файле conf.ini. Параметр называется tetradir. Это то значение, которое вы видите в настройках Основные - Директория с данными. Между директориями с данными можно переключаться. Проблема в том, что переключаться можно через интерфейс, уже находясь в существующей директории с данными. То есть, MyTetra должна корректно запуститься, чтобы можно было переключиться на другую базу через интерфейс.
Вы же, видимо, перенесли базу, и в старом месте базы не осталось. Поэтому интерфейс MyTetra не может стартовать, и MyTetra не может вам показать красивое окошечко где вы могли бы указать местоположение данных. Поэтому вам нужно просто отредактировать вышеуказанный параметр. Можете писать там абсолютный путь, можете писать там относительный путь относительно бинарника mytetra (если это Linux) или mytetra.exe (если Windows), MyTetra поймет и так и так.
В новой версии я наверно сделаю появление выбора каталога с данными при старте программы, если таковой не найден.
Файл conf.ini - это файл, который уникальный для каждого инстанса MyTetra, даже если включена синхронизация. В рекомендациях по синхронизации написано, что синхронизировать нужно именно каталог /data, но не выше. Различные conf.ini на разных инстансах позволяет иметь разные настройки. Например, на работе у вас Windows, и одно размещение базы. А дома у вас Linux с совершенно другим путем до синхронизируемой базы. На работе у вас одни команды синхронизации, а дома другие. И так далее.
* * *
Единственный тонкий момент с conf.ini - это ситуации, когда вы на двух инстансах поставили галочку "Хранить пароль локально". Пароль (точнее его хеш) сохраняется в conf.ini. Что произойдет, если вы решите поменять пароль? Это действие вы будете делать на одном интансе, а потом синхронизировать базу. И окажется, что на втором инстансе в файле conf.ini хранится хеш старого пароля (ведь conf.ini не должен синхронизироваться). И после синхронизации данные на втором инстансе не будут расшифровываться. Тут придется ручками в conf.ini очистить параметр passwordMiddleHash и установить passwordSaveFlag=false. Тогда MyTetra не будет автоматически пытаться расшифровать данные с помощью запомненного устаревшего пароля.
Рекомендация тут такая: хотите без проблем поменять пароль - предварительно уберите локальное хранение пароля на всех инстансах. Понимаю, что порой это бывает сложно (у меня, например, четыре инстанса, и не всегда они доступны), поэтому разруливать приходится ручками, как я выше написал. Главное в такой ситуации - не пытаться изменять или перешифровывать данные на инстансе со старым паролем. Увидели кракозябры или странный запрос пароля, которого быть не должно - выходите из MyTetra и поправьте conf.ini.
Soxsten пишет:P.P.S. При перемещении записи из одной ветки в другую - у записи меняется дата создания. Мне кажется это не логичным.
Да, это явная недоработка, я на нее в свое время забил как на несущественную.