MyTetra Share
Делитесь знаниями!
Синхронизация данных 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.
Лицензия:
GPL v.3

Хранилище записей можно хранить просто локально, или синхронизировать с удаленным репозиторием. Данные хранятся в виде простых текстовых файлов (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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

#!/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'


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

@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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

" "

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

 

 
MyTetra Share v.0.59
Яндекс индекс цитирования