summaryrefslogtreecommitdiff
path: root/PROJECT.md
blob: ee2d62d860c457278ae74341ecda2b12fc1510bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# 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é