Read the statement by Michael Teeuw here.
Backing up via GitHub repo
-
you can do that with a git repo which is located above your
MagicMirror
git repo.If you have a path structure e.g.
~/mm/MagicMirror
whereMagicMirror
contains the MagicMirror-git-repo goto~/mm
and create a new git repo there withgit init
. Create a.gitignore
file in~/mm
and put the lineMagicMirror
in it so this subdir is ignored.Now you can add files or directories with
git add -f MagicMirror/config/config.js git add -f MagicMirror/modules/*
Then commit.
-
The MM repo has a git configuration to only track the “default” folder in the MM/modules folder. This is cool because you can have a separate git repository inside another! When you like a module someone (even yourself) created on github, you need to install it in the MM/modules folder. For example, from the MagicMirror/modules directory, I’m cloning a repo:
[MagicMirror/modules]> git clone https://github.com/sdetweil/MyCovid19.git
You’ll see that a new directory is created under the “modules” directory – and it’s the same name as the git repository. Important to this discussion; the MagicMirror repo doesn’t care about this new directory! You follow the usual steps to update MM with no git side-effects … and … you can update the new module directory that you cloned using the same “git pull” process!
Side note: there are often a few more steps needed to install a module. In this example, @sdetweil follows best practice to include installation instructions in the module README.
So, in a general case, you can create a repo, for example, “MyStuff” in the MM/modules folder. It can contain anything and you can manage it (edit files/push/pull/branch/etc.) all within the “MM/modules/MyStuff” directory.
Just don’t call your repository “default”! :-b
fyi - Git keeps track of files/directories to ignore within a repository by using a .gitignore file located in the repo’s root folder. Check out all the files the MagicMirror ignores!
-
@karsten13 Git supports nested repositories. No need to create a higher level repo and then ignore the MagicMirror. There’s already a line in the MagicMirror/.gitignore
# Ignore all modules except the default modules. /modules/**
So anything can be created in the MagicMirror/modules directory – and it is ignored by the MM repo.
-
My answer is related to
I was wondering how I could backup my config and modules folder to a private repository on GitHub
.So if you want to put
config
andmodules
in one git repo without the other MagicMirror stuff, if found no other solution as doing it with such a “parent” construction as described … -
@karsten13 You are correct that a parent /mm/ repository could nicely include the MagicMirror/config/config.js file while excluding the ‘core’ MagicMirror! :clapping_hands_medium-light_skin_tone:
Minor thoughts:
- Using your suggested command in that parent /mm/ repository,
… will include the modules/default/ directory.git add -f MagicMirror/modules/*
Since it is included by the MagicMirror repository. I suggest only adding the specific paths to any modules you have edited. - also add the .gitignore to the parent /mm/ repository.
- Using your suggested command in that parent /mm/ repository,
-
:thumbs_up:
-
Here’s what I’ve done.
Everything I modify, including instructions for things that can’t be moved is stored in a “MyConfigs” directory on my harddrive, with symlinks in the original folder - so config.js and custom.css is actually symlinks in the magicmirror folders.
Modifications to modules that I do are all forked off the original and stored independently.
It took me literally 5 minutes to get config up again after a SD Card blowout…
Pros: no work to get unmodified modules and MagicMirror up to current.
Cons: remembering the dang symlink command. I’m gonna write a script.
-
Thanks all for your responses! I am going to try @karsten13’s answer and setup a parent repository above the MagicMirror directory! Funny how I did not thank of that :D