docs(sync): note l'idee d'un bouton Reinitialiser l'historique, sans la faire

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-17 22:55:18 +01:00
parent 9b79d62553
commit 3eb26e23e5
+29
View File
@@ -1083,6 +1083,35 @@ QR que l'application Android scanne elle-meme.
toutes les icones, ce qui reduisait le QR a la taille d'une icone. La taille toutes les icones, ce qui reduisait le QR a la taille d'une icone. La taille
est donc posee **en style direct** sur le `<svg>`. est donc posee **en style direct** sur le `<svg>`.
### Idee gardee : « Reinitialiser l'historique » du depot de synchro
**Rien n'est fait, et le code actuel reste tel quel** (decide le 2026-09-17).
Chaque synchro est un commit, donc le depot garde TOUS les instantanes
precedents. Ca ne coute rien en place (Git ne stocke que les differences,
86 commits au 2026-09-17), mais **apres un changement de mot de passe de
synchro les anciens restent dechiffrables avec l'ancien** - c'est la seule
raison de vouloir les couper.
- **L'application ne peut pas le faire par l'API des contenus de Gitea** :
elle sait ajouter un commit, rien d'autre. Supprimer des commits demande
un `git push --force`, donc un client git dans l'exe.
- **Ce qui serait possible par l'API** : `DELETE /repos/…` puis
`POST /user/repos`, puis republier. **Ecarte en automatique** : entre les
deux, le depot ne contient plus rien - une coupure reseau la et la copie
distante est perdue -, et le jeton devrait porter le droit de supprimer un
depot, ce qui en fait une bien plus grosse prise s'il fuit.
- **La forme retenue le jour ou on le fera** : un bouton
« Reinitialiser l'historique » dans Settings -> Sync, avec confirmation,
jamais a chaque synchro.
- **En attendant**, la commande manuelle sur un clone, apres une rotation du
mot de passe de synchro :
```
git checkout --orphan tronque HEAD~10 && git commit -m "historique tronque"
git rebase --onto tronque HEAD~10 main && git push --force origin main
```
Sans danger pour les appareils : Gitea identifie le fichier par le hachage
de son **contenu**, que la reecriture d'historique ne change pas.
**Tombstone purge on (re)create** : `POST /entries` and **Tombstone purge on (re)create** : `POST /entries` and
`POST /entries/bulk-import` both DELETE any `entry_tombstones` row `POST /entries/bulk-import` both DELETE any `entry_tombstones` row
matching the inserted uuid (same transaction). Without this, restoring matching the inserted uuid (same transaction). Without this, restoring