LINUX.ORG.RU

sqlite файлы в git

 , ,


0

2

Взлетит ли?

В смысле, храниться будут только изменения или каждый раз он будет сохранять новую версию файла как с бинарниками типа жпега?

Задача: сделать хранилище заметок QOwnNotes в гите. По сути это набор md файлов в каталогах, но рядом с ними валяется системный файлик sqlite.

★★★★★
Ответ на: комментарий от vvn_black

А, в принципе я как всегда задал тут вопрос раньше, чем потыкал.

Создал руками новую заметку в каталоге, обновил дерево в программе - взлетело. Так что просто добавлю его в гитигнор и пофиг.

Посмотрел в файл скулайта - там таки да, список каталогов и заметок. Но, видимо, при ручном добавлении файлика md он обновляет и локальную базу.

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

Мне где-то попадался вариант с дампом в текст, как раз для хранения sqlite в git с целью версионирования изменений.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Мне где-то попадался вариант с дампом в текст, как раз для хранения sqlite в git с целью версионирования изменений.

Да ну зачем эти извращения, если и так работать будет?

Zhbert ★★★★★
() автор топика

Гит только для текста. Про дампы уже сказали.

Princesska ★★★★
()
Ответ на: комментарий от Zhbert

ну зачем эти извращения

Чтобы сохранять историю и индекса. Разве не в этом смысл git?

anonymous
()

В sqlite там только тэги вроде.
Там (в QOwnNotes) есть искоробочная функция автосохранения в git, она сохраняет вместе с sqlite-бинарником

pru-mike ★★
()

Сохраняй base64 от своей БД. В гите можно какие-нибудь скрипты/хуки навешать, чтобы перед коммитом выполнялись?

anonymous
()

Взлетит:

.gitconfig:

[filter "sqlite_text_dump"]
	smudge = "sqliteload.sh"
	clean = "sqlitedump.sh"

.gitattributes:

*.sqlite filter=sqlite_text_dump

sqlitedump.sh:

TMPFILE=$(mktemp)
trap "rm -f '$TMPFILE'" EXIT
cat > "$TMPFILE"
echo '.dump' | sqlite3 "$TMPFILE" | sed 's/replace(\(.*\),'"'"'\\r'"'"',char(13))/\1/;s/replace(\(.*\),'"'"'\\n'"'"',char(10))/\1/;s/\(\\r\)\?\\n/\n/g' | dos2unix

sqliteload.sh:

TMPFILE=$(mktemp)
trap "rm -f '$TMPFILE'" EXIT
dos2unix | sqlite3 "$TMPFILE"
cat "$TMPFILE"
E ★★★
()
Ответ на: комментарий от anonymous

SQLite .dump по умолчанию многострочные значения заворачивает в функцию replace('...\n...\n...'), для хранения под VCS я лично предпочитаю их форматировать, чтобы трекать изменения в самих значениях построчно. Но если это не нужно, то вызов sed можно безболезненно убрать, конечно.

E ★★★
()
Ответ на: комментарий от E

М, понятно. Спасибо :)

Лучшее решение, однозначно!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.