Peut-être en filtrant le svn comme dans ce projet?

https://stackoverflow.com/questions/15535334/filter-a-lot-of-sensitive-code-from-an-svn-repository

Les gros fichiers obsoletes seraient exclus du dépôt.

Bien à vous,

-- Arnaud sur son iPhone


> Le 9 juil. 2021 à 14:58, Daniel Caillibaud <[email protected]> a écrit :
> Salut,
> 
> Une question git (qui n'a donc rien à voir avec debian).
> 
> - J'ai un dépôt svn d'un très vieux projet, encore actif, avec des 
> utilisateurs habitués à svn.
> 
> - J'aimerais permettre à ceux qui utilisent git couramment de pouvoir le 
> faire sur ce projet
>  => git-svn [1] permet de faire ça
> 
> - Le dépôt svn est énorme, avec des éléments de doc obsolètes dans 
> l'historique (plein de zip
>  et de vidéos ont été mis dans le dépôt, virés depuis), trop gros pour 
> l'envoyer sur un gitlab
>  => git-filter-repo [2] est parfait pour ça (conseillé dans la doc officielle 
> [3] à la place de
>  `git filter-branch …`)
> 
> Mon pb est qu'après avoir nettoyé l'historique, je peux plus lancer de `git 
> svn fetch` pour
> récupérer les nouveaux commits svn, ça plante :
> 
> error: invalid object xxx yyyyyy for 'fichier/viré'
> fatal: git-write-tree: error building trees 
> write-tree: command returned error: 128
> 
> J'ai alors pensé à un truc en deux temps
> - un gros dépôt xxxGitSvn qui fetch le svn, en local chez moi, avec tout 
> l'historique
> - un dépôt git xxxGit, initié comme clone de xxxGitSvn, nettoyé avec 
> git-filter-repo puis
>  utilisé comme relai, pull de xxxGitSvn et push vers mon gitlab
> (pas trop grave si ça empêche d'envoyer des modifs faites sous git vers svn, 
> l'usage principal
> est de pouvoir se balader dans l'historique et regarder des diff, un truc 
> théoriquement
> possible avec svn mais en pratique complètement infernal sur un projet aussi 
> gros avec 10 ans
> d'historique et 15k révisions).
> 
> Mais ça marche pas, au premier pull
>  xxxGit <= xxxGitSvn
> il récupère dans son historique tout ce que j'avais viré…
> 
> Je reconnais que c'est un cas un peu tordu, mais est-ce qu'il y a un moyen de 
> faire ça ?
> (ne pas récupérer tout l'historique qu'on a pas localement lors d'un pull je 
> suppose que ça
> revient à dire à git de considérer que le commit xx local est le même que le 
> commit yy de
> tel remote) ?
> 
> Si y'a pas de solution, j'irai filtrer l'historique à la source, avec 
> svnadmin dump /
> svndumpfilter exclude / svnadmin create / svnadmin load, mais je préférais 
> garder le dépôt svn
> intact.
> 
> 
> [1] https://git-scm.com/docs/git-svn
> [2] https://github.com/newren/git-filter-repo (qui demande git ≥ 2.22.0 => 
> paquet git de
>    unstable)
> [3] https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History ou
>    
> https://git-scm.com/book/fr/v2/Utilitaires-Git-R%C3%A9%C3%A9crire-l%E2%80%99historique
> 
> -- 
> Daniel
> 
> Dans le passé, il y avait plus de futur que maintenant ?
> Philippe Geluck, Le chat

Répondre à