Question

Utilisation https://github.com/AndreyNikiforov/vault2git j'ai pu convertir un repo Vault à Git, puis utilisé le hg convert de Mercurial pour obtenir une prise en pension de hg. Les seuls problèmes est que après l'exécution hg convert les dates sur l'ensemble du changement engagent les dates sont incorrectes.

Les dates montrent le temps l'ensemble de changement a été converti à mercurial obtenu au lieu de la date commettras.

Y at-il autre chose que je dois faire pour préserver les dates?

Était-ce utile?

La solution

Je suis arrivé ce travail en supprimant le code qui vérifie les informations committer dans l'extension de hg convert git dans le fichier https://www.mercurial-scm.org/repo/hg-stable/file/09b200396384/hgext/convert/git.py lignes 125 à 130:

        if n == "committer":
            p = v.split()
            tm, tz = p[-2:]
            committer = " ".join(p[:-2])
            if committer[0] == "<": committer = committer[1:-1]
            committer = self.recode(committer)

Une fois que vous supprimez ce, hg convert utilisera les informations sur l'auteur pour la date. Vous aurez besoin de copier sur l'extension de conversion à partir du lien repo, le modifier puis l'ajouter à TortoiseHg.

Pourquoi cela doit se faire:

commis avec git, il y a deux enregistrements dans les métadonnées: changeset. committer et author

  • Auteur est la personne responsable du code.

  • validateur est la personne qui a commis les changements au référentiel.

Cette distinction est importante dans un projet open-source où la personne qui a rédigé le code est pas nécessairement la personne qu'il engage dans le dépôt: en général il y a mainteneurs (committers) du projet qui acceptent les demandes de tirage d'un contributeur (auteur) et engage au dépôt.

Vault2Git utilise le coffre-fort info checkin (date de livreur et commit) comme git info auteur changeset. L'info committers git utilise l'information de l'utilisateur git et la date réelle de commit (votre utilisateur par défaut du référentiel). Vous pouvez voir cette différence en faisant git cat-file <rev hash> sur un changeset Vault2Git fait.

Cela fonctionne très bien pour git, mais lorsque vous exécutez hg convert, Mercurial utilise le nom de author et la date de committer pour créer les métadonnées changeset Mercruial.

Autres conseils

Vous pouvez essayer hg-git plutôt que l'extension de conversion. Il est un pont bidirectionnel entre les deux qui est censé être sans perte. Cela doit inclure les dates sinon les hash changeraient à chaque fois que vous avez tiré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top