Vault a git to mercurial non preservare le date
-
27-10-2019 - |
Domanda
Usando https://github.com/andreynikiforov/vault2git Sono stato in grado di convertire un repository Vault in Git e poi ho usato Mercurial hg convert
Per ottenere un repository HG. L'unico problema è che dopo aver corso hg convert
Le date delle date di commit set di modifiche non sono corrette.
Le date mostrano il tempo in cui il set di modifiche è stato convertito da GoT a Mercurial invece della data di commit.
C'è qualcos'altro che devo fare per preservare le date?
Soluzione
Ho fatto funzionare rimuovendo il codice che controlla le informazioni di committer in hg convert
git
Estensione nel file https://www.mercurial-scm.org/repo/hg-stable/file/09b200396384/hgext/convert/git.py linee 125
a 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)
Una volta rimosso questo, hg convert
Utilizzerà le informazioni dell'autore per la data. Dovrai copiare l'estensione convertita dal collegamento Repo, modificarlo e quindi aggiungerlo a Tortoisehg.
Perché questo deve essere fatto:
Quando si impegna con git
, ci sono due record nei metadati dei cambiamenti: committer
e author
.
L'autore è la persona responsabile del codice.
Committer è la persona che ha effettivamente commesso le modifiche al repository.
Questa distinzione è importante in un progetto open source in cui la persona che ha scritto il codice non è necessariamente la persona che lo commette nel repository: di solito ci sono manutentori (impegni) del progetto che accettano richieste di pull da un collaboratore (autore) e impegnarlo nel repository.
Vault2Git
Utilizza le informazioni sul check -in Vault (commotter e data di commit) come informazioni sull'autore di Git Modifica. Le informazioni sui committer GIT utilizzano le informazioni dell'utente GIT e la data effettiva del commit (l'utente predefinito per il repository). Puoi vedere questa differenza facendo git cat-file <rev hash>
su un cambiamento che quello Vault2Git
fa.
Funziona bene per Git, ma quando corri hg convert
, Mercuriale usa il author
nome e il committer
Data per creare i metadati dei cambiamenti mercruali.
Altri suggerimenti
Potresti provare HG-GIT piuttosto che convertire l'estensione. È un ponte bidirezionale tra i due che dovrebbe essere senza perdita di perdita. Ciò deve includere date altrimenti gli hash cambierebbero ogni volta che hai tirato.