Mercurial толчок определенную ревизию - PullRequest
3 голосов
/ 15 ноября 2010

Я искал здесь, но не нашел ни одного вопроса, связанного с этим. У меня такая проблема в Mercurial: Я управляю проектом с открытым исходным кодом в bitbucket, поэтому у меня есть клон исходного кода в моей локальной сети. Но я также использовал этот проект для своего живого сайта, поэтому я сделал 2 клона bitbucket repo

Bitbucket Repo
|
==local_clone1
|
==local_clone2-> commit1            => commit2    => commit3
                (personalization)     (bug fix)     (add feature)

Вопрос в том, что я хочу перенести коммит2 и коммит3 обратно в local_clone1, чтобы позже я мог перенести репозиторий в Bitbucket. Но не хочу нажимать commit1, так как он содержит мои личные данные.

Хотите знать, как мы это делаем в Mercurial?

Ответы [ 2 ]

5 голосов
/ 15 ноября 2010

В этом случае это можно сделать без особых сложностей.См. Удаление истории в Руководстве по Mercurial для получения дополнительной информации.

Вот основы того, что вам нужно сделать:

  • Перейти к local_clone2
  • Получить номер ревизии (hg tip покажет вам) из текущего номера.Мы назовем это 731.
  • hg export 730-731 > ../local_clone1/changes.diff (или где угодно)
  • Перейти к local_clone1
  • hg import changes.diff

Вывозможно, придется редактировать вещи вручную;обратитесь к этому руководству за дополнительной информацией в этом случае.

1 голос
/ 15 ноября 2010

Вот несколько вариантов:

backout

Учитывая историю, построенную как:

hg init db
cd db
echo >file1
hg ci -Am clone              # rev 0
echo >file2
hg ci -Am personalization    # rev 1
echo >file3
hg ci -Am bugfix             # rev 2
echo >file4
hg ci -Am feature            # rev 3 <tip>

Тогда, если текущим рабочим каталогом является подсказка, следующееКоманды «отменят» ревизию персонализации:

hg backout 1
hg ci -m backout

Преимущество в том, что история остается неизменной, но показывает добавление и возврат изменений персонализации.

Mercurial Queues

С расширением mq историю можно редактировать, чтобы удалить набор изменений:

hg qimport -r 1:3  # convert changesets 1-3 to patches
hg qpop -a         # remove all patches (can't delete an applied patch)
hg qdel 1.diff     # delete rev 1's patch
hg qpush -a        # reapply remaining patches
hg qfin -a         # convert all applied patches back to changesets.

Преимущество состоит в том, что набор изменений персонализации исчезает.Недостатком является изменение хэшей набора изменений из-за редактирования истории, поэтому это никогда не следует делать для наборов изменений, которые уже были переданы другим.Существует также риск ошибки редактирования истории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...