Синхронизация MyTetroid на Android (git)

Mytetroid — это Android-клиент полноценного менеджера заметок MyTetra.

Для работы с одним и тем же хранилищем данных на разных устройствах (Android/Windows/Linux) можно использовать синхронизацию с помощью системы версионирования git. Для этого были написаны bash-скрипты с командами git.

Как известно, Android хоть и основан на Linux, но в нем нет возможности установить и использовать нативный git-клиент. Но есть другие способы работы с git:

1) использовать специализированные для этого приложения. Например:

  • Pocket git – хоть и платный, но, кажется, лучший. Но есть недостаток: почему-то нельзя одной командой зафиксировать изменения сразу нескольких файлов, нужно каждый файл по отдельности пометить как stage, а лишь потом делать коммит.
  • Green Git Client – бесплатный, но сырой и код закрыт.
  • GitNex, Bitbasket – написаны под конкретный сервис.
  • MGit – бесплатный, с открытым исходным кодом.

Была попытка сделать свой вклад в проект MGit, добавив поддержку вызова команд git в нем, переданных из сторонних приложений (а точнее, из MyTetroid) с помощью механизма Intent в Android.  Но я остановил разработку по нескольким причинам:

  • сам MGit не очень стабилен
  • мне не удалось добиться стабильного выполнения без ошибок того же git pull из MyTetroid, хотя из самого MGit выполнение той же команды выполнялось удачно (может быть я что-то недоглядел)
  • привязка лишь к одному MGit – это неправильно. А остальные git-клиенты на Android, которые я нашел, либо с закрытым кодом, либо мертвые.

Поэтому опции в настройках MyTetroid, связанные с синхронизацией, можно использовать только с MGit (на данный момент только команда git pull). Скорее всего, они вообще не понадобятся, и в будущем будут выпилены из приложения.

2) использовать нативный git-клиент в Termux (для Android >=7) – приложение, реализующее Linux-подобную среду, взаимодействие с которой происходит посредством консоли (основная статья о Termux).


Git с помощью Termux

1) установить и настроить Termux 

2) открыть для Termux доступ к внешнему хранилищу телефона, выполнив:

При этом в домашнем каталоге $HOME появится каталог storage.

3) установить git, если не установлен:

4) указать первоначальные настройки git:

Логин и эмейл:

Алгоритм команды pull :

Если для доступа к удаленному репозиторию используется логин/пароль (а не ssh ключ), то указать git, чтобы он сохранил пароль локально:

Просмотреть внесенные настройки:

5) клонировать репозиторий:

6) хранилище скачано. В качестве теста можно зайти в MyTetroid, указать путь к хранилищу и сделать какие-либо изменения.


Автоматизация git-синхронизации в MyTetroid (в разработке)

Под автоматизацией имеется ввиду автоматический запуск скрипта синхронизации перед запуском MyTetroid и после выхода из приложения.

К сожалению, вызвать выполнение скрипта Termux “напрямую” из приложения MyTetroid нельзя (причина описана здесь).

Но существуют другие варианты:

  • использовать дополнение Termux:Widget для быстрого запуска синхронизации вручную (описание здесь)
  • использовать приложения Tasker/Automate/Locale для запуска синхронизации по событиям в системе Android

Использование Tasker

Tasker – приложение для автоматизации пользовательского интерфейса Android-устройств. Позволяет по разным событиям в системе производить собственные действия.

Автоматически запускать скрипт синхронизации ПЕРЕД открытием MyTetroid с помощью Tasker можно так (спасибо Григорию Хримяну за алгоритм, основа взята отсюда):

1) Создать задачу, в которой выполняется запуск скрипта синхронизации Termux с помощью дополнения Termux:Tasker

2) Создать вторую задачу, в которой выполняется задача 1, а потом с помощью “Wait Until” отслеживается переменная %PACTIVE (активные профили) на наличие в списке активных профилей  приложение Termux. Как только профиль пропадает из списка активных (а значит выполнился), запускается MyTetroid.

3) Создать иконку запуска второй задачи на рабочий стол с помощью обычного виджета у Tasker.

Автоматически запускать скрипт синхронизации ПОСЛЕ закрытия MyTetroid с помощью Tasker можно так:

1) Создать профиль по запуску MyTetroid

2) Добавить задачу, в которой выполняется запуск скрипта синхронизации Termux с помощью дополнения Termux:Tasker

3) Сделать задачу выполняемой на выходе из MyTetroid (долгий тап на задаче => “Move To Exit“)

Механизм автоматизации еще в разработке, т.к. процесс настройки нужно упростить.

1+

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *