Mercurial: посмотрите, как часто ветка сливается с и по умолчанию - PullRequest
2 голосов
/ 14 июня 2011

Допустим, у меня есть две ветви: default и mybranch. Я хотел бы написать небольшой скрипт для просмотра:

  1. Как часто mybranch сливается со значением по умолчанию (изменения переходят с mybranch на значения по умолчанию)
  2. Как часто mybranch сливается со стандартным (изменения переходят из стандартного в mybranch)

Псевдокод для # 1:

    m_lastmergetime = 0
    for each m in [all merges with default from mybranch]
        m_mergetime = m.date_in_hours
        m_timebetweenmerges = m_mergetime - m_lastmergetime
        if m_lastmergetime > 0
            print m_timebetweenmerges

Sub.steps:

  1. Mercurial-запрос, который соответствует всем слияниям по умолчанию из mybranch
  2. Стиль для Mercurial, который показывает дату в часах
  3. Рассчитать время между слияниями, как в приведенном выше псевдокоде, используя Bash или Python

Случай № 2 будет очень похож. Мне нужно только:

  1. Запрос Mercurial, который соответствует всем слияниям с mybranch по умолчанию

1 Ответ

7 голосов
/ 15 июня 2011

Чтобы найти все наборы изменений в ветви X, которые были объединены из ветви Y, вы должны выполнить следующую команду Mercurial:

hg log --rev "children(branch(X)) and children(branch(Y)) and branch(X)"

Чтобы найти все в ветви Y, которая была объединена из ветви X (т. Е. В противоположном направлении), просто измените имя последней ветви на Y:

hg log --rev "children(branch(X)) and children(branch(Y)) and branch(Y)"
                              ^                       ^              ^
                              +------ leave these ----+              |
                                                                     |
                                      but change this ---------------+

В основном запрос говорит, что вы хотите все наборы изменений, которые:

  • является потомком любого из наборов изменений в ветви X
  • также является потомком любого из наборов изменений в ветви Y (только у наборов изменений слияния есть два родителя, и, таким образом, может быть потомком наборов изменений в двух ветвях одновременно)
  • равно на ветви Y (так что вы объединили с ветви Y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...