Все изменения комментариев для выполнения ветки между 2 ярлыками? (включая слияния) - PullRequest
1 голос
/ 23 января 2009

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

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

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

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

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

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

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

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

Ответы [ 4 ]

1 голос
/ 05 февраля 2009

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

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

Извините, я не могу дать более точный ответ.

1 голос
/ 26 января 2009

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

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

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

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

0 голосов
/ 30 января 2009

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

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

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

p4 fstat -Of //...@MyLabel

EDIT:

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

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

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

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

0 голосов
/ 26 января 2009

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

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

Или мне не хватает именно того, что вы ищете?

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

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

Сделайте "p4 help interchanges" из командной строки для деталей.

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

...