|
|||||||
Синхронизация данных MyTetra (git)
Время создания: 07.06.2019 18:00
Раздел: INFO - Development - git
Запись: wwwlir/Tetra/master/base/1559919641zbhj3uy31y/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
MyTetra — это полнофункциональный кроссплатформенный менеджер заметок (PIM-manager), использующийся для сбора и накопления различного рода информации. Все записи (заметки, статьи) организуются в древовидную структуру, а так же снабжаются ключевыми словами-тегами, позволяющими быстро находить нужные записи. Ссылки между записями, прикрепляемые файлы, шифрование, развернутый поиск, синхронизация, копирование из браузера, кроссплатформенность, один из лучших визуальных WYSIWYG редакторов текста – все это есть в PIM-менеджере MyTetra. Хранилище записей можно хранить просто локально, или синхронизировать с удаленным репозиторием. Данные хранятся в виде простых текстовых файлов (xml, html, ini), поэтому легко можно отслеживать все изменения. Разработчик предоставил возможность запуска собственного скрипта для синхронизации записей при старте и завершении программы. Я использовал Git, хотя имею только базовые навыки работы с ним. Для меня было несколько необычно запихать в скрипт функционал сразу и чтения, и записи изменений, но в результате все работает как надо. Я использую программу на 2-х машинах: Windows 7 и Xubuntu 16.04 (а также на Android 4.4, но это уже другая история).
UPDATE: На момент написания статьи я еще не знал о существовании подобной статьи на сайте разработчика. Но, в любом случае, алгоритм оказался идентичен, я лишь добавил сохранение логов и оформил в виде отдельных командных файлов.
В скриптах я пытался сделать более-менее наглядное отображение результата команд одновременно и в консоль, и в лог-файл. Скрипт для linux: #!/bin/sh # переменные # получаем рабочий каталог из параметра DATADIR=$1 LOGFILE="$DATADIR/scripts/linux_sync.log" # функции log(){ echo "$(date +""%d.%m.%Y\ %T"") === $@" } # перенаправляем вывод exec 2>>$LOGFILE 1>>$LOGFILE # вступление echo "" log "===============================================" log "Changes from Linux" # выполнение команд log Command \"cd $DATADIR\" cd $DATADIR log Command \"git diff\" git diff --name-status log Command \"git add .\" git add . log Command \"git commit\" curdate=$(date +"%d.%m.%Y\ %T") git commit -a -v -m "Changes from Linux - $curdate" log Command \"git pull\" git pull origin log Command \"git push\" git push -v origin master Такой получается лог: 27.11.2018 06:37:28 === =============================================== 27.11.2018 06:37:28 === Changes from Linux 27.11.2018 06:37:28 === Command "cd /home/gee12/Repositories/MyTetraData" 27.11.2018 06:37:28 === Command "git diff" M base/1536511432orta3a8gwd/text.html M mytetra.xml 27.11.2018 06:37:28 === Command "git add ." 27.11.2018 06:37:28 === Command "git commit" [master a2c1562] Changes from Linux - 27.11.2018\ 06:37:28 3 files changed, 1 insertion(+) rewrite base/1536511432orta3a8gwd/text.html (100%) create mode 100644 base/1543287498c50bmxqsuz/text.html 27.11.2018 06:37:30 === Command "git pull" Already up-to-date. 27.11.2018 06:37:33 === Command "git push" Отправка в https://path/to/repo/mytetradata.git POST git-receive-pack (16603 bytes) To https://path/to/repo/mytetradata.git e2117aa..a2c1562 master -> master updating local tracking ref 'refs/remotes/origin/master' Скрипт для Windows: @echo off rem Переменные rem Получаем рабочий каталог из параметра set DATADIR=%1 set LOGFILE="%DATADIR%/scripts/windows_sync.log" rem Вступление echo " ">>%LOGFILE% call :log "===============================================" call :log "Changes from Windows" rem Выполнение команд call :log "Command 'cd %DATADIR%'" cd /d %DATADIR% call :log "Command 'git diff'" git diff --name-status >>%LOGFILE% 2>>&1 call :log "Command 'git add .'" git add . >>%LOGFILE% 2>>&1 call :log "Command 'git commit'" git commit -a -m "Changes from Windows - %date% %time%" >>%LOGFILE% 2>>&1 call :log "Command 'git pull'" git pull origin >>%LOGFILE% 2>>&1 call :log "Command 'git push'" git push origin master >>%LOGFILE% 2>>&1 rem Функции :log set MES=%date% %time% === %1 echo %MES% echo %MES%>>%LOGFILE% 2>>&1 exit /b Пример лога Windows: " " 27.11.2018 16:50:19.80 === "===============================================" 27.11.2018 16:50:19.80 === "Changes from Windows" 27.11.2018 16:50:19.80 === "Command 'cd D:/Repositories/MyTetraData'" 27.11.2018 16:50:19.81 === "Command 'git diff'" M base/1536511432orta3a8gwd/text.html M base/1537772800u0p1ofoq6s/text.html M mytetra.xml 27.11.2018 16:50:30.01 === "Command 'git add .'" warning: LF will be replaced by CRLF in mytetra.xml. The file will have its original line endings in your working directory. 27.11.2018 16:50:37.72 === "Command 'git commit'" [master 04fa488] Changes from Windows - 27.11.2018 16:50:37.72 5 files changed, 38 insertions(+), 1 deletion(-) rewrite base/1536511432orta3a8gwd/text.html (100%) create mode 100644 base/1543318761s593nwntjt/text.html create mode 100644 base/154332341860takhm0l1/text.html 27.11.2018 16:50:46.06 === "Command 'git pull'" Already up-to-date. 27.11.2018 16:50:59.69 === "Command 'git push'" To https://path/to/repo/mytetradata.git a2c1562..04fa488 master -> master 27.11.2018 16:51:10.20 === D:/Repositories/MyTetraData
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|