Passer de Mercurial Ă  GIT dans Atlassian Bitbucket avec enregistrer des fichiers en cyrillique

Contexte


En été, un article de blog officiel a été publié sur le blog officiel de BitBucket annonçant la fin de la prise en charge des référentiels Mercurial.

L'arrĂȘt de Mercurial se fera en deux temps:

  1. À partir du 1er fĂ©vrier 2020, les utilisateurs ne pourront plus crĂ©er de nouveaux rĂ©fĂ©rentiels.
  2. À compter du 1er juin 2020, les utilisateurs ne pourront plus utiliser les fonctions Mercurial dans Bitbucket ou via son API, et tous les rĂ©fĂ©rentiels Mercurial seront supprimĂ©s.

Les raisons de cette décision sont plus ou moins claires, mais j'utilise plusieurs référentiels sur Mercurial dans mon travail (j'ai toujours plus aimé Mercurial, mais je laisserai cette question hors du champ de cet article), dont j'avais besoin pour convertir en GIT.

En fait, cet endroit a commencé ...

Le problĂšme


Les dĂ©veloppeurs et le service d'assistance de BitBucket ont offert plusieurs options pour une telle conversion, je les ai toutes essayĂ©es et en mĂȘme temps, j'ai essayĂ© des outils tiers, comme l' importation de rĂ©fĂ©rentiels dans GitHub.

Il s'est avéré que tous ces outils gùchent les noms de fichiers et de répertoires qui contiennent des caractÚres de l'alphabet cyrillique, et j'ai beaucoup de ces fichiers (savoirs traditionnels, spécifications et autres fichiers similaires). C'est drÎle que les commentaires contenant du cyrillique soient bien tolérés et affichés aprÚs la migration.

J'ai trouvĂ© des informations sur Internet qu'il existe des outils dans Mercurial (clĂ©s dans le fichier de configuration du rĂ©fĂ©rentiel) qui vous permettent de contrĂŽler l'encodage des caractĂšres par dĂ©faut, mais d'une part, ils ne sont inclus qu'explicitement, et d'autre part, il n'y a pas d'outil pour convertir le rĂ©fĂ©rentiel existant . Eh bien, je n'ai pas vĂ©rifiĂ© en quoi cette option aide Ă  la migration Ă  l'aide d'outils prĂȘts Ă  l'emploi - il est trop tard pour moi de suivre cette voie.

Il n'y avait aucun désir de rechercher manuellement les fichiers problématiques et de faire un remplissage manuel, j'ai donc dû creuser un peu et trouver une solution.

Peut-ĂȘtre, le transfert d'un rĂ©fĂ©rentiel avec des caractĂšres russes dans les noms de fichiers est Ă©galement pertinent pour quelqu'un, et mon article vous fera gagner un peu de temps.

Solution


Procédure de base


  1. Prenez le référentiel git@github.com: seewindcn / tortoisehg.git - il a le plugin fixutf8, qui n'est pas dans la distribution principale. Il est en outre supposé que la copie locale sera située dans le répertoire D: \ Development \ tortoisehg
  2. Faites une copie de votre référentiel Mercurial afin de ne pas endommager l'emplacement principal. De plus, toutes les commandes sont exécutées dans le répertoire de copie.
  3. Corrigez les noms de fichiers et de répertoires avec la commande D: \ Development \ tortoisehg \ hg.exe addremove -s 100
  4. Validez dans le référentiel D: \ Development \ tortoisehg \ hg.exe commit -m "Fix filen names"
  5. Activez le plugin hggit - dans le fichier .hg \ hgrc que vous devez ajouter
    [extensions]
    hggit =
  6. Préparez-vous à convertir en GIT - créez une étiquette principale avec la commande D: \ Development \ tortoisehg \ hg.exe bookmark -r default master
  7. Créer un référentiel GIT dans BitBucket
  8. Nous nous engageons dans le référentiel hg push git + ssh: //git@bitbucket.org: <user> / <reponame> .git ( notez que cela utilise hg normal car le clone de seewindcn ne veut pas travailler sur SSH)
  9. Nous vérifions sur le site Web de BitBucket, assurez-vous que les noms de fichiers cyrilliques ne cassent pas
  10. Nous clonons le rĂ©fĂ©rentiel GIT pour nous-mĂȘmes, vĂ©rifions les noms de fichiers, effectuons une comparaison d'octets de tous les fichiers, construisons le projet, testons
  11. AprĂšs la construction, il y aura probablement une tonne de nouveaux fichiers que GIT suggĂ©rera de valider. Le fichier .hgignore devra ĂȘtre converti Ă  la main en .gitignore. Heureusement, vous pouvez le faire une fois et utiliser un seul fichier pour tous les autres rĂ©fĂ©rentiels.

En consĂ©quence, nous avons rĂ©ussi Ă  transfĂ©rer la branche principale par dĂ©faut du rĂ©fĂ©rentiel Mercurial d'origine avec l'historique complet des validations vers le maĂźtre du rĂ©fĂ©rentiel GIT et mĂȘme avec des Ă©tiquettes. Parmi les inconvĂ©nients, je note uniquement le manque total d'informations sur les modifications apportĂ©es aux fichiers avec cyrillique dans l'historique des validations - il y a des validations, et il n'y a mĂȘme pas de rĂ©fĂ©rences aux fichiers avec cyrillique (le reste des fichiers, bien sĂ»r, sont en parfait Ă©tat).

En gĂ©nĂ©ral, la tĂąche pouvait ĂȘtre considĂ©rĂ©e comme terminĂ©e, mais par intĂ©rĂȘt sportif, il Ă©tait Ă©galement intĂ©ressant pour moi de transfĂ©rer les branches restantes.

Habillage de branche sauf par défaut


  1. Obtenir une liste des succursales hg branches
  2. Pour chaque branche
    1. Passer Ă  la branche hg up <branchname>
    2. Créez une étiquette (le nom de l'étiquette ne doit pas correspondre au nom de la branche): hg bookmark -r <hgbranchname> <gitbranchname>
    3. Versez la branche dans GIT hg push git@bitbucket.org: <user> / <reponame> .git

Il peut arriver que le nom de la branche contienne également l'alphabet cyrillique, dans ce cas les branches hg afficheront krakozyabry. Dans ce cas, j'ai utilisé un plan de travail visuel hg - passé à une branche et créé une étiquette là-bas.

À ce stade, vient le Feng Shui complet.

Si quelqu'un souhaite creuser plus profondément, je pars ...

Liste de références


Source: https://habr.com/ru/post/fr483454/


All Articles