Integration équipe¶
Versionner et partager les dotfiles pour que chaque membre de l'équipe ait un shell productif des le premier jour.
Le problème¶
Chaque développeur a sa propre configuration shell. Sans standardisation :
- L'onboarding prend des heures de configuration manuelle
- Les aliases et conventions divergent entre les postes
- Un poste reformate = tout reconfigurer
Dotfiles versionnes¶
Le principe : stocker les fichiers de configuration dans un dépôt Git et les lier vers leur emplacement attendu.
Avec chezmoi (recommande)¶
chezmoi est un gestionnaire de dotfiles qui gère les différences entre machines (OS, hostname) :
# Installation
brew install chezmoi
# Initialiser
chezmoi init
# Ajouter un fichier de config
chezmoi add ~/.zshrc
chezmoi add ~/.config/starship.toml
chezmoi add ~/.gitconfig
# Editer un fichier gere
chezmoi edit ~/.zshrc
# Appliquer les changements
chezmoi apply
# Versionner
chezmoi cd # ouvre le depot chezmoi
git add -A && git commit -m "update zshrc"
git push
Sur une nouvelle machine :
Avec GNU Stow (alternative simple)¶
# Structure du depot
dotfiles/
├── zsh/
│ └── .zshrc
├── git/
│ └── .gitconfig
└── starship/
└── .config/
└── starship.toml
# Lier tout
cd ~/dotfiles
stow zsh git starship
Configuration d'équipe partagee¶
Séparer la configuration en deux niveaux :
| Fichier | Portee | Contenu |
|---|---|---|
.zshrc.team | Équipe (commite dans le dépôt du projet ou un dépôt d'équipe) | Aliases standards, conventions, plugins obligatoires |
.zshrc | Personnel | Source .zshrc.team + ajouts personnels |
# .zshrc.team — commite dans le depot d'equipe
# Aliases d'equipe standardises
alias dc="docker compose"
alias k="kubectl"
alias tf="tofu"
# Conventions
export EDITOR="code --wait"
# Outils requis (verification)
for cmd in git docker code rg fzf; do
command -v $cmd &>/dev/null || echo "⚠ $cmd non installe"
done
# .zshrc personnel — source la config d'equipe
source ~/equipe/dotfiles/.zshrc.team
# Ajouts personnels
alias vim="nvim"
Bootstrap d'un poste¶
Script d'installation pour un nouveau poste :
#!/bin/bash
# bootstrap.sh — setup initial d'un poste de dev
set -euo pipefail
echo "=== Installation des outils ==="
# Detecter l'OS
case "$(uname -s)" in
Darwin) PKG="brew install" ;;
Linux) PKG="sudo apt install -y" ;;
esac
# Outils essentiels
$PKG git curl wget jq
# Shell
$PKG zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
# Outils modernes
$PKG bat eza ripgrep fd fzf zoxide
# Prompt
$PKG starship
# Dotfiles
chezmoi init --apply https://github.com/equipe/dotfiles.git
echo "=== Bootstrap termine ==="
echo "Redemarrer le terminal pour appliquer les changements."
Conventions de nommage¶
| Convention | Exemple | Justification |
|---|---|---|
| Aliases en 1-3 lettres | k, dc, tf | Rapidite |
| Fonctions en snake_case | mkcd, git_clean_branches | Lisibilite |
| Variables d'env en UPPER_CASE | $EDITOR, $PROJECT_ROOT | Convention POSIX |
Fichiers de config avec préfixe . | .zshrc, .gitconfig | Convention Unix |