blob: 4ef096160d2f81b48f96b5a8fc21ecbda146be5c (
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
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
```
**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é
|