Mercurial / hg: получить изменения из ветки и в ствол - PullRequest
3 голосов
/ 20 августа 2011

Видимо, я проверил последние пару недель коммитов в ветке. Помимо изменений в одном файле, я хочу передать все в ствол. Что мне делать?

Ответы [ 2 ]

6 голосов
/ 21 августа 2011

Когда вы говорите по имени ветви с Mercurial, вы говорите о постоянном атрибуте в наборе изменений.Набор изменений не может быть в другой ветви и все еще быть тем же набором изменений.Вы можете (как @Matt Ball) предложить объединить результат этой ветви в значение по умолчанию:

hg update default
hg merge thebranchname

Или вы можете пройти через сумасшедшие, разрушающие историю искажения, чтобы представить, что эти изменения не были сделаны в ветви (@Rudi детали (извините)).

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

1 голос
/ 20 августа 2011

Если вы не выдвинули ни одного из наборов изменений новой ветви, и у вас нет слияний в ветви, вы можете использовать расширение mq для перемещения нежелательного набора изменений в соединительной линии к концу ветви.

$EDITOR ~/.hgrc
[extensions]
mq =
«save+quit»
# import all revisions up to the unwanted rev into a patch queue
hg qimport -r$BRANCH_TIP_REVISION:$IN_TRUNK_UNWANTED_REVISION

# edit the order of the patches, so that the unwanted patch is the last patch
$EDITOR .hg/patches/series
  «Move the in trunk unwanted patch to the last line of the file»
# Variant 1: don't change the branch
hg qpush -a    # apply all patches
hg qfinish -a  # finish all patches to regular hg changesets
hg log -l2     # find out the revision number of the latest revision you want in trunk
hg up -r trunk # checkout trunk
hg merge -r $LATEST_WANTED_REVISION_NUMBER # merge only the wanted changesets

# Variant 2: *All* patches are on the new branch, and
# you want only the differing changeset on the new branch
hg up -r trunk # move the working copy to trunk
hg qpush -a    # apply all patches
hg qpop        # unapply the unwanted one
hg qfinish     # finish the applied patches
hg branch $OLD_BRANCH_NAME # switch the working copy to the new branch
                           # if there is already another branch of this name,
                           # you need to checkout the other branch, apply the
                           # patch and merge trunk into that branch afterwards.
hg qpush       # apply the branch-specific patch
hg qfinish -a  # finish the patch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...