technical:notes_cherrytree_git_sync

This is an old revision of the document!


FIXME

Using Git to sync CherryTree notes between systems

As much as I love posting information and stories to this site for others to consume there are other things I don't want put out on the web like my personal journal. Not like there is anything “bad” in there its just boring stuff I don't think most people would be interested in. I like to keep these notes in CherryTree. As it says in the official repo “A hierarchical note taking application, featuring rich text and syntax highlighting, storing data in either a single file (xml or sqlite) or multiple files and directories.”

I have used the application on Windows for keeping track of my projects at work and other one offs. I was really bad about just keeping things in notepad and after a while looked for alternatives. Spent a little bit of time with notepad++ but ended up pretty happy with CherryTree and I have used it ever since.

The one feature CherryTree is missing is the ability to sync between different host. I am not trying to sync things between teams of people or anything I just want to sync my own notes between my own devices. Well it looks like this is another job for my personal git repos.

Alright I explained enough about the git repo setup on the host your own git page, in the case of CherryTree I am not going to use the repos directory. I had already started saving CherryTree notes to a folder under my home documents called “CherryTree_Docs”. When saving files in CherryTree they aren't saved as raw text files you can save them in a SQLite file or in XML format.

I saved my documents as SQLite before I started this whole process

cd ~/Documents/CherryTree_Docs/

git init

git status

On branch main No commits yet Untracked files:

(use "git add <file>..." to include in what will be committed)
Erics_Journal.ctb
Erics_Journal.ctb~
Erics_Journal.ctb~~
Erics_Journal.ctb~~~
Kaiser_IT_Personal.ctb
Kaiser_IT_Personal.ctb~
Kaiser_IT_Personal.ctb~~
Kaiser_IT_Personal.ctb~~~
Kaiser_IT_Planning.ctb
Kaiser_IT_Planning.ctb~
Kaiser_IT_Planning.ctb~~
Kaiser_IT_Planning.ctb~~~

nothing added to commit but untracked files present (use “git add” to track) eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git add -A eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git status On branch main

No commits yet

Changes to be committed:

(use "git rm --cached <file>..." to unstage)
new file:   Erics_Journal.ctb
new file:   Erics_Journal.ctb~
new file:   Erics_Journal.ctb~~
new file:   Erics_Journal.ctb~~~
new file:   Kaiser_IT_Personal.ctb
new file:   Kaiser_IT_Personal.ctb~
new file:   Kaiser_IT_Personal.ctb~~
new file:   Kaiser_IT_Personal.ctb~~~
new file:   Kaiser_IT_Planning.ctb
new file:   Kaiser_IT_Planning.ctb~
new file:   Kaiser_IT_Planning.ctb~~
new file:   Kaiser_IT_Planning.ctb~~~

eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git commit -m “Initialize repository”

[main (root-commit) 1c6be2f] Initialize repository 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Erics_Journal.ctb create mode 100644 Erics_Journal.ctb~ create mode 100644 Erics_Journal.ctb~~ create mode 100644 Erics_Journal.ctb~~~ create mode 100644 Kaiser_IT_Personal.ctb create mode 100644 Kaiser_IT_Personal.ctb~ create mode 100644 Kaiser_IT_Personal.ctb~~ create mode 100644 Kaiser_IT_Personal.ctb~~~ create mode 100644 Kaiser_IT_Planning.ctb create mode 100644 Kaiser_IT_Planning.ctb~ create mode 100644 Kaiser_IT_Planning.ctb~~ create mode 100644 Kaiser_IT_Planning.ctb~~~ eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$

SSH to your remote host and setup the bare repo: (this is assuming you have the right accounts and sshkeys setup) ssh eric@gitshed.igazine.com

mkdir -p git/cherrytree.git git init –bare git/cherrytree.git

Now return back to the host with the ChreeyTree .ctb files and sync these files to the remote repo.

eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git remote add origin eric@gitshed.igazine.com:/home/eric/projects/git/cherrytree.git eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git branch -M main eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git push -u origin main

Enumerating objects: 20, done. Counting objects: 100% (20/20), done. Delta compression using up to 16 threads Compressing objects: 100% (20/20), done. Writing objects: 100% (20/20), 158.20 KiB | 17.58 MiB/s, done. Total 20 (delta 16), reused 0 (delta 0), pack-reused 0 To gitshed.igazine.com:/home/eric/projects/git/cherrytree.git * [new branch] main → main branch 'main' set up to track 'origin/main'.

And this is my first edit after pulling the DB down to my laptop… Holy Hell it works! I just need to remember to git push from my laptop to the remote server and sync on my workstation before editing again.

I am saving these files as SQLite but I am now thinking I could do XML instead, the git merge possiblites are attractive but need to test.

  • technical/notes_cherrytree_git_sync.1748368738.txt.gz
  • Last modified: 2025/05/27 17:58
  • by super_stunder