diff options
Diffstat (limited to 'PROJECT.md')
| -rw-r--r-- | PROJECT.md | 340 |
1 files changed, 204 insertions, 136 deletions
@@ -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é + |
