From b33ff5f1fa86a8989ef1be65fd636b0458c0e9d1 Mon Sep 17 00:00:00 2001 From: ertopogo Date: Wed, 26 Nov 2025 19:52:23 +0100 Subject: Chore: Normalisation des fin de ligne (LF) via .gittattributs --- PROJECT.md | 340 ++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 204 insertions(+), 136 deletions(-) (limited to 'PROJECT.md') diff --git a/PROJECT.md b/PROJECT.md index ee2d62d..4ef0961 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -1,136 +1,204 @@ -# Projet : Synchronisation de fichiers de configuration - -## Objectif - -Ce projet permet de centraliser et synchroniser tous les fichiers de configuration (vim, bash, screen, cursor, documentation, etc.) depuis Windows et WSL vers un dépôt git sur chillka. - -## Structure du projet - -``` -config-files-keyvault/ -├── .git/ # Dépôt git local -├── configs/ -│ ├── windows/ # Fichiers provenant de Windows -│ └── wsl/ # Fichiers provenant de WSL -├── scripts/ -│ ├── sync-to-project.ps1 # Script pour copier fichiers vers le projet -│ └── sync-from-project.ps1 # Script pour restaurer fichiers depuis le projet -├── files-config.txt # Liste des fichiers à synchroniser -├── path-mapping.json # Mapping chemins originaux <-> chemins dans le projet -└── PROJECT.md # Documentation du projet -``` - -## Utilisation - -### 1. Ajouter des fichiers à synchroniser - -Éditer le fichier `files-config.txt` et ajouter les fichiers au format : -``` -windows|%USERPROFILE%\.vimrc -wsl|~/.bashrc -``` - -### 2. Copier les fichiers vers le projet - -Exécuter le script PowerShell : -```powershell -.\scripts\sync-to-project.ps1 -``` - -Ce script va : -- Lire `files-config.txt` -- Copier chaque fichier vers `configs/{system}/` -- Créer/mettre à jour `path-mapping.json` avec les chemins originaux - -### 3. Restaurer les fichiers depuis le projet - -Exécuter le script PowerShell : -```powershell -.\scripts\sync-from-project.ps1 -``` - -Ce script va : -- Lire `path-mapping.json` -- Copier chaque fichier depuis `configs/{system}/` vers son emplacement original -- Créer les répertoires parents si nécessaire - -### 4. Synchronisation Git - -Le dépôt git est configuré avec le remote : -``` -toshiro@chillka:/var/data/git/repositories/config-files-keyvault.git -``` - -Pour synchroniser : -```powershell -git add . -git commit -m "Mise à jour des fichiers de configuration" -git push origin main -``` - -### 5. Diagnostic et Commandes Git Utiles - -Pour vérifier l'état du dépôt et diagnostiquer les problèmes : - -**Voir les dépôts distants configurés :** -```powershell -git remote -v -``` - -**Voir l'historique des commits :** -```powershell -git log --oneline --graph --decorate --all -``` - -**Voir l'état des fichiers (modifiés, ajoutés, non suivis) :** -```powershell -git status -``` - -**Créer le dépôt distant sur le serveur (si "fatal: repository not found") :** -```powershell -ssh toshiro@chillka "mkdir -p /var/data/git/repositories/config-files-keyvault.git && git init --bare /var/data/git/repositories/config-files-keyvault.git" -``` - -## Format de fichiers-config.txt - -Chaque ligne doit suivre le format : -``` -{système}|{chemin} -``` - -Où : -- `{système}` : `windows` ou `wsl` -- `{chemin}` : Chemin du fichier avec support des variables d'environnement Windows (`%VAR%`) ou expansion WSL (`~`) - -Exemples : -``` -windows|%USERPROFILE%\.vimrc -windows|%APPDATA%\Cursor\User\settings.json -wsl|~/.bashrc -wsl|~/.bash_aliases -wsl|~/.screenrc -``` - -## Format de path-mapping.json - -Ce fichier est généré automatiquement par le script `sync-to-project.ps1`. Il contient le mapping entre les chemins originaux et les chemins dans le projet : - -```json -{ - "windows": { - "%USERPROFILE%\\.vimrc": "configs/windows/.vimrc" - }, - "wsl": { - "~/.bashrc": "configs/wsl/.bashrc" - } -} -``` - -## Notes - -- Les fichiers sont organisés par système d'origine (windows/wsl) pour faciliter la gestion -- Le mapping des chemins permet de restaurer les fichiers à leur emplacement exact -- Les répertoires parents sont créés automatiquement lors de la restauration -- Les fichiers WSL sont accessibles via le chemin Windows `\\wsl.localhost\Ubuntu\` pour une meilleure performance et fiabilité - +# Projet : Synchronisation de fichiers de configuration + +## Objectif + +Ce projet permet de centraliser et synchroniser tous les fichiers de configuration (vim, bash, screen, cursor, documentation, etc.) depuis Windows et WSL vers un dépôt git sur chillka. + +## Structure du projet + +``` +config-files-keyvault/ +├── .git/ # Dépôt git local +├── configs/ +│ ├── windows/ # Fichiers provenant de Windows +│ └── wsl/ # Fichiers provenant de WSL +├── scripts/ +│ ├── sync-to-project.ps1 # Script pour copier fichiers vers le projet +│ └── sync-from-project.ps1 # Script pour restaurer fichiers depuis le projet +├── files-config.txt # Liste des fichiers à synchroniser +├── path-mapping.json # Mapping chemins originaux <-> chemins dans le projet +└── PROJECT.md # Documentation du projet +``` + +## Utilisation + +### 1. Ajouter des fichiers à synchroniser + +Éditer le fichier `files-config.txt` et ajouter les fichiers au format : +``` +windows|%USERPROFILE%\.vimrc +wsl|~/.bashrc +``` + +### 2. Copier les fichiers vers le projet + +Exécuter le script PowerShell : +```powershell +.\scripts\sync-to-project.ps1 +``` + +Ce script va : +- Lire `files-config.txt` +- Copier chaque fichier vers `configs/{system}/` +- Créer/mettre à jour `path-mapping.json` avec les chemins originaux + +### 3. Restaurer les fichiers depuis le projet + +Exécuter le script PowerShell : +```powershell +.\scripts\sync-from-project.ps1 +``` + +Ce script va : +- Lire `path-mapping.json` +- Copier chaque fichier depuis `configs/{system}/` vers son emplacement original +- Créer les répertoires parents si nécessaire + +### 4. Synchronisation Git + +Le dépôt git est configuré avec le remote : +``` +toshiro@chillka:/var/data/git/repositories/config-files-keyvault.git +``` + +**Pousser les changements (workflow standard) :** +```powershell +git add . +git commit -m "Message décrivant les changements" +git push +``` + +**Premier push (si la branche n'est pas encore liée) :** +```powershell +git push --set-upstream origin main +``` + +### 5. Diagnostic et Commandes Git Utiles + +Pour vérifier l'état du dépôt et diagnostiquer les problèmes : + +**Voir les dépôts distants configurés :** +```powershell +git remote -v +``` + +**Voir l'historique des commits :** +```powershell +git log --oneline --graph --decorate --all +``` + +**Voir l'état des fichiers (modifiés, ajoutés, non suivis) :** +```powershell +git status +``` + +**Créer le dépôt distant sur le serveur (si "fatal: repository not found") :** +```powershell +ssh toshiro@chillka "mkdir -p /var/data/git/repositories/config-files-keyvault.git && git init --bare /var/data/git/repositories/config-files-keyvault.git" +``` + +### 6. Administration du Serveur (Chillka) + +Commandes pour interagir directement avec le dépôt distant via SSH : + +**Vérifier si le dépôt existe et voir les 5 derniers commits sur le serveur :** +```powershell +ssh toshiro@chillka "cd /var/data/git/repositories/config-files-keyvault.git && git log --oneline -n 5" +``` + +**Vérifier l'intégrité du dépôt distant (fsck) :** +```powershell +ssh toshiro@chillka "cd /var/data/git/repositories/config-files-keyvault.git && git fsck" +``` + +### 7. Gestion des Branches et Workflow Avancé + +**Scénario A : Créer une branche locale et la publier** +```powershell +# 1. Créer la branche et basculer dessus +git checkout -b ma-nouvelle-branche + +# 2. Travailler, ajouter, commiter... +git add . +git commit -m "Travail sur ma branche" + +# 3. Publier la branche sur le serveur (crée la branche distante) +git push -u origin ma-nouvelle-branche +``` + +**Scénario B : Récupérer une branche existante sur le serveur** +```powershell +# 1. Mettre à jour la liste des branches distantes +git fetch --all + +# 2. Voir toutes les branches (locales et distantes) +git branch -a + +# 3. Créer une copie locale d'une branche distante et basculer dessus +# (Git comprend automatiquement qu'il doit suivre origin/nom-branche) +git checkout nom-branche-distante +``` + +**Maintenance et Nettoyage (Admin)** +```powershell +# Supprimer une branche locale +git branch -d nom-branche + +# Supprimer une branche sur le serveur (DANGER) +git push origin --delete nom-branche + +# Nettoyer les références locales vers des branches distantes supprimées +git fetch --prune +``` + +**Commandes utiles pour l'historique** +```powershell +# Voir les différences entre la branche actuelle et main +git diff main + +# Voir quel fichier a été modifié par qui et quand (blame) +git blame chemin/vers/fichier +``` + +## Format de fichiers-config.txt + +Chaque ligne doit suivre le format : +``` +{système}|{chemin} +``` + +Où : +- `{système}` : `windows` ou `wsl` +- `{chemin}` : Chemin du fichier avec support des variables d'environnement Windows (`%VAR%`) ou expansion WSL (`~`) + +Exemples : +``` +windows|%USERPROFILE%\.vimrc +windows|%APPDATA%\Cursor\User\settings.json +wsl|~/.bashrc +wsl|~/.bash_aliases +wsl|~/.screenrc +``` + +## Format de path-mapping.json + +Ce fichier est généré automatiquement par le script `sync-to-project.ps1`. Il contient le mapping entre les chemins originaux et les chemins dans le projet : + +```json +{ + "windows": { + "%USERPROFILE%\\.vimrc": "configs/windows/.vimrc" + }, + "wsl": { + "~/.bashrc": "configs/wsl/.bashrc" + } +} +``` + +## Notes + +- Les fichiers sont organisés par système d'origine (windows/wsl) pour faciliter la gestion +- Le mapping des chemins permet de restaurer les fichiers à leur emplacement exact +- Les répertoires parents sont créés automatiquement lors de la restauration +- Les fichiers WSL sont accessibles via le chemin Windows `\\wsl.localhost\Ubuntu\` pour une meilleure performance et fiabilité + -- cgit v1.2.3