|
☝️
|
This is only a mirror from my personal git-server. |
I use stow to sync my dotfiles between the OS and this repository.
Install git and stow if not already present on the system.
sudo apt install git stowbrew install git stow|
☝️
|
My dev-machine setup will install and setup these dotfiles automatically.
So, the only thing I’ve to care about is the stow . --adopt command and to commit changes to the VSC.
|
Checkout this repository into ~/dotfiles and apply run stow to sync the dotfiles.
|
❗
|
The directory should be located directly in the HOME directory.
Otherwise stow needs an additional flat -t $HOME every time, which is a bit annoying!
|
git clone git@gitea.nehrke.info:nemoinho/dotfiles.git ~/dotfiles # (1)
cd $_
stow --adopt . # (2)
[ -n "$(git status --short)" ] && git restore . # (3)-
Clone this repository
-
Create symlinks for all files managed by this repository, so that the file in the $HOME points to the file in this repository
-
In case of differences between existing files and the ones from this repository keep the version of the repository
If a file is going to be removed make sure to remove the linked file as well.
Otherwise we end up with a bunch of dangling files in $HOME!
To automatically delete these dangling links we can use a git-hook as the following. That will remove the links pre-commit.
cat <<EOF > .git/hooks/pre-commit
#!/usr/bin/env bash
set -e
git status --short | grep -E '^D|^R' | sed 's/...//;s/ -> .*//' | while read f
do
test -L "\$HOME/\$f" && rm "\$HOME/\$f"
done
EOF
chmod +x .git/hooks/pre-commit