2016-03-15 1 views
0

Быстрый вопрос Я не могу найти для себя жизнь: как сравнить 2 ревизии в PyCharm без изменений между ними будучи включенным в сравнение?Как сравнить 2 ревизии в PyCharm без учета промежуточных версий

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

Пример:

| 
o   r10 - baseline 
o \  r11 - feature B work 
| o \  r12 - feature A work 
| | o \ r13 - feature C work 
| o | | r14 - feature A work (complete) 

Я хочу сделать сравнение между пересмотром 14 и 10, чтобы сделать обзор кода на особенность а, но когда я делаю код от изменений 11, 12 и 13 включены в сравнение.

Это бесит, потому что, когда я решаю, что код хорош и объединить закладку в базовую линию, после совершения я получаю список изменений, которые показывают мне изменения между базовым уровнем и функцией A без промежуточных ревизий. Я мог бы просто использовать это, но я бы предпочел, так как случайное нажатие «ввести» может передать код, я не могу использовать другие инструменты PyCharm, так как я «застрял» в окне обзора фиксации и по другим причинам.

+0

Вы не показываете, как на самом деле отображается * график * ваших изменений, но, учитывая ваш вопрос, я предполагаю, что это линейная история для этих наборов изменений. Тогда вы неправильно используете ртуть. Вы должны использовать отдельную голову, таким образом, расходящуюся историю, для каждой отдельной функции, над которой вы работаете, и пытаться протестировать и не сбрасывать все вместе в одной линейной истории. И только слияние функции в вашу основную линию приняло голову, когда она была одобрена. – planetmaker

+0

Каждая функция представляет собой отдельную закладку и, следовательно, отвлекается от базовой линии (по моему мнению, это то, что делает Mercurial, когда есть 2 или более закладок, и вы выполняете работу с ними, автоматически создается новая глава). Проблема в том, что, когда я нажимаю код, который нужно пересмотреть, история переплетает номера ревизий, поэтому, несмотря на то, что каждая функция расходится, их номера пересмотра смешиваются вместе, и это похоже на приведенный выше пример. Вот почему я получаю желаемую функциональность, когда я снова объединяю закладку; Я просто хочу, чтобы эта функция была отделена от окна фиксации. – MendAndDefend

+0

В вашем отредактированном примере с графиком: 'hg diff -r10: 14' предоставит вам diff, который состоит из линейной истории между r10 и r14, таким образом, изменения 12 и 14). Таким образом, либо pycharm делает что-то внятное, либо ваш график выглядит по-другому. Но не забудьте дать как начальную, так и конечную ревизию, или ваша текущая проверенная ревизия принимается за один конец. – planetmaker

ответ

0

Закладка ревизии автоматически не создает новую голову - она ​​просто придает имя данной ревизии.

Однако, если вы создали новый анонимный заголовок для каждой из ваших функций и занесены в закладки, таким образом создавая расходящуюся историю с вашей базовой ревизией r10 как общим предком и всеми функциями, основанными на том, что показано на вашем графике, вы должны быть в порядке и получить с hg diff -r10:14 именно то, что вы ожидаете получить: изменения, внесенные изменениями 12 и 14.

Если это не так, то либо вы создали некоторую форму более линейной истории (таким образом, ваш график выглядит по-разному , возможно, вы не проверили базовую версию r10 перед началом работы с функциями B и C), или PyCharm делает что-то другое. Когда вы запрашиваете diff, убедитесь, что вы дадите как начальную, так и завершающую ревизию или меркурий, замените последнюю на последнюю.