technical:notes_cherrytree_git_sync

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
technical:notes_cherrytree_git_sync [2025/05/27 17:58] super_stundertechnical:notes_cherrytree_git_sync [2025/05/27 18:44] (current) super_stunder
Line 1: Line 1:
-FIXME 
- 
 ====== Using Git to sync CherryTree notes between systems ====== ====== 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 [[https://www.giuspen.net/cherrytree/|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." 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 [[https://www.giuspen.net/cherrytree/|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."
Line 14: Line 12:
 {{ :technical:screenshot_from_2025-05-27_09-59-08.png?nolink |}} {{ :technical:screenshot_from_2025-05-27_09-59-08.png?nolink |}}
  
-I saved my documents as SQLite before I started this whole process +I saved my documents as SQLite before I started this whole process.  These files are in binary database type format which so far is working when I push/pull from the git repo, but If I had to do it again I may go with XML format for the git merging possibilities.  I am going to stick with the SQLite for now and will update this if I ever decide to change.
  
- +** Step 1: Initialize the repository from the directory you save CherryTree files in ** 
- +<code> 
-cd ~/Documents/CherryTree_Docs/ +nugget@tiptop:~$ cd ~/Documents/CherryTree_Docs/ 
- +nugget@tiptop:~/Documents/CherryTree_Docs/ git init 
-git init +nugget@tiptop:~/Documents/CherryTree_Docs/ git status
- +
-git status+
  
 On branch main On branch main
Line 42: Line 38:
  
 nothing added to commit but untracked files present (use "git add" to track) 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+nugget@tiptop:~/Documents/CherryTree_Docs$ git add -A 
 +nugget@tiptop:~/Documents/CherryTree_Docs$ git status
 On branch main On branch main
  
Line 63: Line 60:
  new file:   Kaiser_IT_Planning.ctb~~~  new file:   Kaiser_IT_Planning.ctb~~~
  
-eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git commit -m "Initialize repository"+nugget@tiptop:~/Documents/CherryTree_Docs$ git commit -m "Initialize repository"
  
 [main (root-commit) 1c6be2f] Initialize repository [main (root-commit) 1c6be2f] Initialize repository
Line 79: Line 76:
  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$ +nugget@tiptop:~/Documents/CherryTree_Docs$  
 +</code>
  
 +As you may notice CherryTree has some of its own versioning/roll back methods.  I believe this is done by naming files with the ctb extension then adding the tilde ~, ~~, ~~~ I haven't had to dig that far into it yet but I this seems to be the logic from some of my brief reading. 
 +
 +** Step 2: Building a bare repo on your git server ** 
  
 SSH to your remote host and setup the bare repo: (this is assuming you have the right accounts and sshkeys setup) 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 +<code> 
-git init --bare git/cherrytree.git+nugget@tiptop:~$ ssh nugget@gitshed.igazine.com 
 +Last login: Tue May 27 15:18:33 2025 from 127.0.0.1 
 +nugget@gitshed:~$ mkdir -p git/cherrytree.git 
 +nugget@gitshed:~$ git init --bare git/cherrytree.git 
 +</code>
  
 +** Step 3: Pushing to the git server **
 Now return back to the host with the ChreeyTree .ctb files and sync these files to the remote repo. 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 +<code> 
-eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git branch -M main +nugget@tiptop:~/Documents/CherryTree_Docs$ git remote add origin nugget@gitshed.igazine.com:/home/nugget/git/cherrytree.git 
-eric@kalin-emcwilliams:~/Documents/CherryTree_Docs$ git push -u origin main+nugget@tiptop:~/Documents/CherryTree_Docs$ git branch -M main 
 +nugget@tiptop:~/Documents/CherryTree_Docs$ git push -u origin main
  
 Enumerating objects: 20, done. Enumerating objects: 20, done.
Line 100: Line 106:
 Writing objects: 100% (20/20), 158.20 KiB | 17.58 MiB/s, 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 Total 20 (delta 16), reused 0 (delta 0), pack-reused 0
-To gitshed.igazine.com:/home/eric/projects/git/cherrytree.git+To gitshed.igazine.com:/home/nugget/git/cherrytree.git
  * [new branch]      main -> main  * [new branch]      main -> main
 branch 'main' set up to track 'origin/main'. branch 'main' set up to track 'origin/main'.
 +
 +</code>
  
 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.    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. 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