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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top