Dotfiles Repository

    Definição curta: Estrutura de repositório de dotfiles para versionar configurações do Neovim e outros programas. Inclui script de instalação.

    Antes de começar

    O que você vai aprender

    • Explicar Estrutura do repositório com suas palavras
    • Explicar script/install.sh com suas palavras
    • Explicar .gitignore do repositório com suas palavras
    • Localizar o assunto desta página no :help do seu próprio Neovim

    O que é

    Dotfiles são arquivos de configuração que começam com . (como .bashrc, init.lua). Versionar dotfiles permite sincronizar configurações entre máquinas.

    Estrutura do repositório

    dotfiles/
    ├── git/
    │   └── .gitconfig
    ├── nvim/
    │   ├── init.lua
    │   └── lua/
    │       └── user/
    │           └── *.lua
    ├── bash/
    │   └── .bashrc
    ├── script/
    │   └── install.sh
    ├── Makefile
    └── README.md

    script/install.sh

    #!/usr/bin/env bash
    set -e
    
    DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
    
    echo "Installing dotfiles from $DOTFILES_DIR"
    
    # Create symlinks
    ln -sf "$DOTFILES_DIR/nvim" ~/.config/nvim
    ln -sf "$DOTFILES_DIR/git/.gitconfig" ~/.gitconfig
    ln -sf "$DOTFILES_DIR/bash/.bashrc" ~/.bashrc
    
    echo "Done!"

    .gitignore do repositório

    # Ignore sensitive data
    *.local
    *.local.lua
    # Swap files
    *.swp
    *.swo
    # Session files
    Session.vim
    # Plugin data
    *.local/

    Makefile

    .PHONY: install update
    
    install:
        ./script/install.sh
    
    update:
        git pull origin main
        ./script/install.sh
    
    sync:
        git add -A
        git commit -m "Update dotfiles"
        git push

    Git bare repository approach

    Alternativa usando git bare:

    # Configurar
    alias df='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
    echo ".dotfiles" >> .gitignore
    
    # Clone
    git clone --bare https://github.com/user/dotfiles.git $HOME/.dotfiles
    
    # Checkout
    df checkout
    
    # Configurar
    df config status.showUntrackedFiles no

    Fluxo de trabalho

    flowchart TD
        A["Editar configs"] --> B["git add"]
        B --> C["git commit"]
        C --> D["git push"]
        D --> E["Outra máquina"]
        E --> F["git pull"]
        F --> G["configs atualizados"]

    Você aprendeu

    • Estrutura do repositório
    • script/install.sh
    • .gitignore do repositório
    • Makefile
    • Git bare repository approach

    Perguntas para reflexão

    1. O que Estrutura do repositório resolve, e o que se perde sem isso?
    2. O que script/install.sh resolve, e o que se perde sem isso?
    3. O que .gitignore do repositório resolve, e o que se perde sem isso?
    4. Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?

    Artigos relacionados

    Veja também

    Referências