家のubuntu desktopは2代目ですがwslの環境も入れるとそこそこなLinuxの台数を渡り歩いてきた気がします。
移行の度にDriveに保存してある設定ファイルからリストアしていて移行は出来ていますがスマートではありません。
やはりバージョン管理したいところなのでdotfileのリポジトリを作ろうと思います。
dotfile管理のベストプラクティス
初めての管理なのでベストも何も無いのですがArch wikiの記事が良さそうだったのでこちらで作ります。
やり方は
というものです。
これだと管理したいファイルだけ指定しておけば良いということらしいです。
良くみる記事だとdotfileフォルダを作って本体の設定ファイル置いてシンボリックリンク張って、というのがほとんどでリンク用のスクリプトとか書くのめんどくさいと思って着手出来ませんでした。
ちなみにハードリンクを使う記事が無かったのですが都合が悪いんですかね?
一回挑戦してみればよかった。
リポジトリ作成
wikiに沿って作成。
❯ git init --bare ~/.dotfiles hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /home/masashi/.dotfiles/ ❯ alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' ❯ config config status.showUntrackedFiles no
使ったことないオプションだらけですが
らしい。一応調べたけど単語で何となくわかる。
今後はconfigコマンドで操作していくことになります。
homeがワークディレクトリだから必要なファイルを選んでcommitしていく感じですね。
デスクトップまわりはどうするか考えますが.bashrc .zshrc .conkyrc .vimrc辺りは必ず欲しいです。
とりあえずこの辺をcommit。
❯ config add .bashrc .p10k.zsh .vimrc .zshrc .zshrc.pre-oh-my-zsh ❯ ❯ config status ブランチ master No commits yet コミット予定の変更点: (use "git rm --cached <file>..." to unstage) new file: .bashrc new file: .p10k.zsh new file: .vimrc new file: .zshrc new file: .zshrc.pre-oh-my-zsh Untracked files not listed (use -u option to show untracked files) ❯ config commit -m "First commit" [master (root-commit) d09968a] First commit 5 files changed, 2088 insertions(+) create mode 100644 .bashrc create mode 100644 .p10k.zsh create mode 100644 .vimrc create mode 100644 .zshrc create mode 100644 .zshrc.pre-oh-my-zsh
commit後のリポジトリ
リポジトリはどうなってるのかなっと。
❯ ls .dotfiles
COMMIT_EDITMSG branches description index logs refs
HEAD config hooks info objects
bareだからファイルが無いですね。
clone
PCを新調した体で1個ディレクトリ下げてcloneしてみます。
❯ mkdir testhome ❯ cd testhome ❯ ls ❯ ls -a . .. ❯ git clone ../.dotfiles Cloning into '.dotfiles'... done. ❯ ls -a . .. .dotfiles ❯ ls -a .dotfiles . .. .bashrc .git .p10k.zsh .vimrc .zshrc .zshrc.pre-oh-my-zsh
ちゃんとファイルがありますね。
homeで実行すれば上書いてくれるのかな?
こうならデスクトップ環境もリストアできそうなのでリポジトリに入れるべきですね。
push(失敗)
最後にGithubに上げようと思いましたがpermission deniedでpushできず...
これは別の機会にチャレンジします。