Убежище Git в Mercurial, не сохранив даты - PullRequest
2 голосов
/ 04 декабря 2011

Используя https://github.com/AndreyNikiforov/vault2git Я смог преобразовать хранилище Vault в Git, а затем использовал Mercurial's hg convert для получения репозитория hg.Единственная проблема заключается в том, что после выполнения hg convert даты в датах фиксации набора изменений являются неправильными.

Даты показывают время, когда набор изменений был преобразован из полученного в Mercurial вместо даты фиксации.

Что еще нужно сделать, чтобы сохранить даты?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Я получил эту работу, удалив код, который проверяет информацию о коммитере в расширении hg convert git в файле https://www.mercurial -scm.org / repo / hg-stable / file / 09b200396384 / hgext /convert/git.py строк 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)

Как только вы удалите это, hg convert будет использовать информацию об авторе для даты. Вам нужно будет скопировать расширение конвертации из ссылки на репозиторий, изменить его и затем добавить в TortoiseHg.

Почему это нужно сделать:

При фиксации с помощью git в метаданных набора изменений есть две записи: committer и author.

  • Автор - лицо, ответственное за код.

  • Отправитель - это лицо, которое фактически внесло изменения в хранилище.

Это различие важно в проекте с открытым исходным кодом, где тот, кто создал код, не обязательно тот, кто его фиксирует в репозитории: обычно есть сопровождающие (коммиттеры) проекта, которые принимают запросы извлечения от участника (автор) и зафиксируйте его в хранилище.

Vault2Git использует информацию о регистрации Vault (коммиттер и дату принятия) в качестве информации об авторе git changeset. Информация о коммитере git использует информацию о пользователе git и фактическую дату фиксации (ваш пользователь по умолчанию для хранилища). Вы можете увидеть эту разницу, выполнив git cat-file <rev hash> для набора изменений, который Vault2Git делает.

Это прекрасно работает для git, но когда вы запускаете hg convert, Mercurial использует имя author и дату committer для создания метаданных набора изменений Mercruial.

1 голос
/ 04 декабря 2011

Вы можете попробовать hg-git вместо расширения для преобразования. Это двунаправленный мост между двумя, который должен быть без потерь. Это должно включать даты, иначе хеши будут меняться каждый раз, когда вы извлекаете.

...