Nano Hash - криптовалюты, майнинг, программирование

Как узнать, откуда исходит один список изменений в Perforce

В Perforce мы делаем много ветвлений и слияний. Как мы можем узнать исходный список изменений, в который внесено одно изменение?

Например, я отправил список изменений с идентификатором 53343 в свою собственную частную ветку, и через два дня он был объединен с веткой корпорации A, затем через неделю он был объединен с интеграционной веткой B и, в конце концов, он был объединен. в основную ветку. Теперь идентификатор списка изменений совершенно другой, скажем, 55445, потому что это слияние, которое на самом деле включает много списков изменений, может быть, 300, кроме моего.

Как теперь получить оригинальный "53343"?

далее более подробное описание.

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

$ p4 changes //prod/main/platform/abc.txt
Change 560938 on 2017/04/13 by user1@user1:main 'bug fix2'
Change 559384 on 2017/03/24 by user1@user1:main 'bug fix1'
Change 559178 on 2017/03/22 by branchowner@branchowner:ws 'Merge Integration@558992 to main '

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

$ p4 annotate -I //prod/main/platform/abc.txt
.
.
.
554294: Monday morning
554294: I love foot ball
554294: XNES rocks
.
.
.

мы можем сказать, что изменение впервые поступило от 554294

$ p4 describe 554294|more
Change 554294 by user2@user2:coorA on 2017/01/17 19:24:51
Integrate  all dev changes to coorA 

Affected files ...

.
.
.
... //prod/coorA/platform/abc.txt#1 add
.

554294 — это слияние, и в этом слиянии добавляется файл abc.txt. Но на самом деле этот abc.txt создан не здесь. Я создал этот abc.txt в своей ветке разработки, но хранитель ветки скопировал его у меня и сделал «добавление p4» в своей ветке. Итак, теперь для основной ветки он может видеть только файл abc.txt, исходный из ветки coorA. Мы потеряли настоящего первого владельца этого файла, мы можем проследить только до хранителя ветки.

то, что мы хотим сейчас, это получить первоначального владельца, но мы потеряли связь, когда он был добавлен в ветку coorA, можно ли как-то проследить его глубже, например, по файлу md5sum?

20.04.2017

  • Если хранитель ветки вручную скопировал файлы, не сообщая Perforce о том, что файлы были скопированы (т. е. без использования p4 copy или p4 integrate), вы не можете разумно ожидать, что Perforce по волшебству выяснит, откуда взялись эти файлы. . 23.04.2017

Ответы:


1

Я предполагаю, что вы смотрите на изменение в конкретном файле. Найдите этот файл в P4V, щелкните правой кнопкой мыши и выберите График изменений. Это покажет вам график распространения изменений. Каждый узел графа представляет собой одну версию файла. Слияния отображаются в виде стрелок (ребер), поэтому при переходе вверх вы увидите ошибки с 55445 до 53343.

Кроме того, чтобы быстро увидеть изменения между различными версиями файла, вы можете перетащить один узел графика на другой, и P4V покажет вам разницу.

20.04.2017
  • спасибо, да, это помогает в большинстве случаев. мой случай немного другой.. возможно неправильное использование Perforce. см. выше. 21.04.2017

  • 2

    Как вы сказали, изменение 55445 может включать множество изменений из множества разных веток. Вы можете просмотреть их все, запустив:

    p4 changes -i @55445,55445
    

    Но когда вы говорите, что пытаетесь получить источник более конкретного «изменения», я думаю, что вы спрашиваете о конкретном diff в изменении 55445, то есть в конкретном файле есть определенная строка, которую вы пытаетесь найти происхождение. Для этого запустите:

    p4 annotate -I //depot/file
    

    Команда p4 annotate показывает ревизию/изменение каждой строки в этом файле; флаг -I отслеживает отношения слияния, чтобы найти истинную точку начала каждой строки в разных ветвях.

    Источник: сообщение в блоге, которое я написал об этом несколько лет назад. :) https://www.perforce.com/blog/101213/p4-annotate-i-going-deeper

    20.04.2017
  • Спасибо за помощь. Мой случай немного другой, возможно, из-за неправильного использования Perforce. В моем случае мой список изменений добавляет несколько файлов, и из моей частной ветки -> ветка корпорации A, владелец ветки использует p4, добавляет эти файлы в ветку корпорации A, которая скопирована из моей частной ветки, поэтому даже из аннотации p4 исходная отправка в филиале корпорации А..... 21.04.2017
  • Для меня это не совсем понятно - если это совершенно новые файлы, которые были добавлены в ветку А, какое отношение они имеют к изменению, которое было в вашей ветке? 21.04.2017
  • не могу поместить все в комментарий, мне придется отредактировать вопрос, чтобы показать, в чем моя проблема 21.04.2017
  • хранитель ветки в вашем примере должен научиться разветвлять файлы вместо того, чтобы вручную копировать + добавлять их. :\ Если в истории нет записи о том, что файлы связаны, нет способа построить запрос, который будет следовать этой связи. 21.04.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..