Все комментарии к изменению perforce ветки между 2 метками? (включая слияния)

Наш индивидуальный администратор ограничивает сканирование "max-row", поэтому моя первая идея запустить следующее не сработает:

  1. Все изменения, в том числе интегрируется в ветку в определенное время метки 1
  2. Все изменения, в том числе интегрируется в ветку на конкретном более раннем метке времени 2
  3. Вычтите изменения времени 2 из времени 1, чтобы получить новые изменения с комментариями.

Есть ли альтернативный способ получить тот же результат без такого массового запроса (когда perforce содержит 7-летнюю историю, а -i запускает сканирование назад к заре истории)

На основе комментариев Грегса добавил этот комментарий:

В основном цель состоит в том, чтобы увидеть, какие ошибки были исправлены в конкретной ветке выпуска между двумя ярлыками (или, чаще, какой-то старой и сегодняшней). Я хочу упростить (ускорить) слишком сложный сценарий, который у нас есть в настоящее время, который рассматривает изменения, которые вошли в ветку выпуска, он следует за файлами, которые вошли в них, по крайней мере, на 2 ветки вверх, чтобы распечатать все комментарии к набору изменений из исходного изменения (промежуточные комментарии слияния, как правило, просто говорят что-то вроде merge123 и т. д. вместо описания фактических комментариев к изменениям, поэтому нам также нужно пройти вверх по дереву к исходному комментарию), скрипт наконец выводит что-то вроде ниже (мы помещаем идентификаторы центров качества в комментарии к ревизии):

  1. qualityCenterId123 - исправлена ​​ошибка
  2. в графическом интерфейсе qcId124 - исправлены некоторые другие
  3. bug qcId125 - исправлена ​​другая ошибка
  4. merge123

ОБНОВЛЕНИЕ на основе комментариев:

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


person Ville M    schedule 22.01.2009    source источник


Ответы (4)


Я не вижу простого ответа на этот вопрос, но у меня есть еще пара предложений, которые, возможно, помогут указать правильное направление.

  1. Уговорите администратора увеличить лимит строк maxscan. Если он нервничает, что это приведет к проблемам со всей пользовательской базой, просто попросите его добавить вас в новую группу пользователей (например, «Сценарии») и установите ограничения только для этой группы. Это приведет к тому, что только члены этой группы смогут использовать верхние пределы, и вы сможете договориться о подходящем времени для запуска сценария. Вы даже можете сделать это за ночь.
  2. Ознакомьтесь с руководством администратора P4 и посмотрите, поможет ли какой-либо из советов по написанию сценариев - например, возможно, более жесткий взгляд на данные ограничит запрос в достаточной степени, чтобы не нарушить ограничения maxscanrows.
  3. Как твой SQL? Вы можете создать эффективный запрос, используя P4Report инструмент.
  4. Попробуйте задать вопрос в списке рассылки Perforce. Это очень активный список, в котором много очень опытных людей, которые могут очень помочь. См. эту ссылку для страницы регистрации. Есть хороший шанс, что они предложат несколько хороших подходов.
  5. Возможно, уже слишком поздно для существующих лейблов, но подумайте об использовании системы заданий для отслеживания работы. Perforce имеет встроенные инструменты запросов, чтобы отслеживать, какие задания попали в разные ветки. Однако это требует изменения рабочей практики для вашей команды.

Извините, я не могу дать более конкретного ответа.

person Greg Whitfield    schedule 04.02.2009
comment
Я думаю, что это ответ, который я искал, нелегкий ответ, полезно знать, продолжу работу по списку и т. Д., Как вы предложили, спасибо. - person Ville M; 05.02.2009
comment
Спасибо. Это одна из тех сложных проблем, когда у вас уже есть решение, которое решает основную проблему создания отчета, но не укладывается в те ограничения, в которых вы находитесь. Удачи. - person Greg Whitfield; 06.02.2009

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

Скажем, самое близкое изменение к дате вашей первой этикетки - 23000, а ваше окончательное изменение даты вашей второй этикетки - 25000, тогда

p4 изменяет //depot/PATHTOMYCODE/...@23000,@25000

предоставит вам все изменения в вашем кодовом пути между этими двумя списками изменений.

person Toby Allen    schedule 26.01.2009
comment
Нет - см. answers.perforce.com/articles/KB/3429, который согласуется с моими эксперименты - результат неверен. - person Arlie Stephens; 11.02.2016

Разве обычный Label-diff не сделает то, что вы хотите?

  • Из P4V, Инструменты-> Различ. Выберите две метки
  • В P4Win щелкните правой кнопкой мыши метку, выберите файлы различий в 2 метках.
  • Из командной строки p4 diff2 //codeline/...@label1 //codeline/...@label2

Или мне не хватает именно того, что вам нужно?

Дальнейшее предложение после комментария Вилле к вышеизложенному

Если вам нужна информация только по списку изменений, а не по файлу, попробуйте "p4 interchanges" из командной строки. Это даст вам только сводку того, какие изменения в одной ветке не произошли в другой, и вы можете указать диапазон ревизий, чтобы ограничить его нужными вам ярлыками.

Для получения подробной информации выполните "p4 help interchanges" из командной строки.

К сожалению, команда обмена пока не отображается в P4V или P4Win.

person Greg Whitfield    schedule 26.01.2009
comment
Мне понадобятся комментарии для каждого изменения, поскольку при использовании подхода с этикетками diff 2 не печатаются комментарии для каждого изменения. - person Ville M; 27.01.2009
comment
Я отредактировал свой ответ, чтобы дать вам еще одну возможность. Если это не сработает, не могли бы вы напечатать несколько строк того, как вы ожидаете, что результат будет выглядеть? - person Greg Whitfield; 27.01.2009
comment
Спасибо, я только начал изучать команду interchanges, очень интересно.Ваш вопрос; я хочу упростить (ускорить) скрипт, который смотрит на изменения в ветке, следует до 2 веток для распечатки комментариев к набору изменений, выходы: qualityCenterId123 - исправлена ​​ошибка в графическом интерфейсе qcId124 - исправлена ​​другая ошибка - person Ville M; 30.01.2009
comment
Я играл с командой p4 interchanges, но я не совсем понимаю, что если я дам это: p4 interchanges -l //depot/path/...@label_old // depot / path / ... он будет говорят, что все уже интегрировано, даже если разница между головкой и этим ярлыком покажет разницу? Почему это так? - person Ville M; 30.01.2009

Ответ Тоби Аллена - лучший подход, если ваши лейблы - простые списки изменений.

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

Вы можете получить списки файлов и версий с помощью:

p4 fstat -Of //...@MyLabel

РЕДАКТИРОВАТЬ:

Рассмотрим две сложные метки:

VERSION_A:
 //depot/file_A.cpp#4
 //depot/file_B.cpp#7
 //depot/file_C.cpp#1

VERSION_B:
 //depot/file_A.cpp#6
 //depot/file_B.cpp#5
 //depot/file_C.cpp#4

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

Если у вас могут быть такие метки, то вы можете запустить команду p4 fstat для каждой метки, а затем найти различия. В этом примере file_A.cpp изменился дважды, а file_C.cpp - 3 раза. file_B.cpp старше во второй метке, поэтому его можно игнорировать.

Итак, теперь вам нужно посмотреть на изменения, которые коснулись этих версий:

file_A.cpp#5
file_A.cpp#6
file_C.cpp#2
file_C.cpp#3
file_C.cpp#4

Эти изменения можно получить с помощью p4 filelog, поэтому вы хотите запустить что-то вроде этого:

p4 filelog file_A.cpp#6
p4 filelog file_C.cpp#4

Затем вам нужно удалить все дубликаты и любую историю для более ранних версий.

Как я уже сказал, вам это нужно только в том случае, если у вас грязные ярлыки. Если есть способ сделать так, чтобы ваши ярлыки представляли списки изменений, вам следует использовать ответ Тоби Аллена.

person Mark James    schedule 30.01.2009
comment
Добавлено ОБНОВЛЕНИЕ к вопросу на основе первой части ваших ответов. Не уверен, что понял, как fstat поможет мне получить комментарии коммита между двумя ярлыками? - person Ville M; 31.01.2009
comment
Программа fstat предоставит вам номера версий для каждого файла в метке. Я предполагал, что ваши лейблы не были просто последним списком изменений, когда они были созданы. Если метки сложные, вам нужно посмотреть отдельные версии файлов, а затем найти различия. Подробности добавлю выше. - person Mark James; 04.02.2009
comment
Если подумать, вам все равно нужно будет запускать filelog с флагом -i, поэтому мой пример, вероятно, вам не поможет. - person Mark James; 04.02.2009
comment
Марк, я думаю, вы правы, проблема на самом деле заключается в флаге -i и огромном запросе, который он запускает. Возможно, мне просто нужно изменить свой процесс и запустить команду interchanges перед выполнением слияния, и это должно более или менее дать мне то, что мне нужно. Тем не менее, я оставлю вопрос открытым. - person Ville M; 04.02.2009