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 доступ к внешнему хранилищу телефона, выполнив:
1 |
$ termux-setup-storage |
При этом в домашнем каталоге $HOME появится каталог storage.
3) установить git, если не установлен:
1 |
$ pkg install git |
4) указать первоначальные настройки git:
Логин и эмейл:
1 2 |
$ git config --global user.name NAME $ git config --global user.email EMAIL |
Алгоритм команды pull :
1 |
$ git config pull.rebase false |
Если для доступа к удаленному репозиторию используется логин/пароль (а не ssh ключ), то указать git, чтобы он сохранил пароль локально:
1 |
$ git config credential.helper store |
Просмотреть внесенные настройки:
1 |
$ git config -l |
5) клонировать репозиторий:
1 2 |
$ cd ~/storage/shared/path_to_repos $ git clone https://github.com/user/repo.git |
6) хранилище скачано. В качестве теста можно зайти в MyTetroid, указать путь к хранилищу и сделать какие-либо изменения.
1 2 3 |
$ git status $ git commit -m "First commit from Android" $ git push origin master |
Автоматизация 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
“)
Механизм автоматизации еще в разработке, т.к. процесс настройки нужно упростить.