Показ По необходимости changelists отправленный начиная с последней синхронизации

Чтобы получить sha / hash коммита, на который ссылается тег (не sha тега):

git rev-list -1 <tag>

6
задан Brian Carlton 8 December 2009 в 14:30
поделиться

6 ответов

The simple answer is:

p4 changes -l "...#>have"

You need the quotes to avoid your shell doing redirection.

You can trivially iterate over the changes and call "p4 describe" on each one.

You can get a full diff by using "p4 diff2" (assuming you want a unidiff):

p4 diff2 -du ...#have ...#head

But that doesn't give you a per-changelist diff.

9
ответ дан 8 December 2019 в 17:26
поделиться

Полезен ли ответ на этот вопрос ?

Насколько я помню, вы должны сохранить дату и время последней синхронизации, а затем проанализировать вывод p4 изменяет -t , чтобы просто отображать эти списки изменений после вашей даты.

0
ответ дан 8 December 2019 в 17:26
поделиться

Со временем вы можете создать множество небольших фрагментов кода, посвященных использованию Perforce. Может быть хорошей идеей объединить их все в сценарий оболочки, который вызывает для вас p4 и передает ему команды, с дополнительными настраиваемыми шагами или без них.

Если вы используете такого рода оболочку с дисциплиной ( т. е. без прямого вызова p4) просто заставить его сохранить последнее синхронизированное изменение.

0
ответ дан 8 December 2019 в 17:26
поделиться

В пакетном файле DOS вы можете сделать что-то вроде следующего:

FOR /F "tokens=2 delims= " %%a IN ('p4 changes -m1') DO (SET TO_CHANGELIST=%%a)
FOR /F "tokens=2 delims= " %%a IN ('p4 changes -m1 -c <client_name>')
       DO (SET FROM_CHANGELIST=%%a)

p4 changes -s submitted @%TO_CHANGELIST%,@%FROM_CHANGELIST%

Он предоставит вам список всех списков изменений p4, которые находятся между тем, который был синхронизирован в последний раз на вашем клиенте, и список изменений, который был отправлен последним.

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

FOR /F "tokens=2 delims= " %%a 
     IN ('p4 changes -s submitted @%TO_CHANGELIST%,@%FROM_CHANGELIST%') 
     DO (p4 describe %%a)

Я бы посоветовал вам передать эти данные в файл, чтобы было проще для просмотра.

0
ответ дан 8 December 2019 в 17:26
поделиться

Осторожно!

p4 changes "...#>have"

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

Лучше всего кэшировать последнюю точку синхронизации, например

HEAD=`p4 counter change`
if [ -f lastbuild.txt ]
then
  OLDHEAD=`cat lastbuild.txt`
else
  OLDHEAD=`p4 changes -m1 ...#have`
  echo lastbuild.txt not found!  I will guess that your last sync was @$OLDHEAD
fi
p4 changes ...@$OLDHEAD,$HEAD > changes.txt
# -snip- review changes.txt, perhaps prompt "Continue with sync to $HEAD?"
p4 sync ...@$HEAD
echo $HEAD > lastbuild.txt

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


Не пытайтесь делать это дома

Для потомков, вот еще пара вещей, которые я пробовал в прошлом, но которые в конечном итоге потерпели неудачу:

p4 changes ...#have > have.txt
p4 changes ...#head > head.txt
diff have.txt head.txt

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

p4 sync -n ... | cut -f1 -d' ' | p4 -x- changes -m1 | sort | uniq

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

4
ответ дан 8 December 2019 в 17:26
поделиться

В более новых версиях P4V (начиная с 2009.2, возможно, 2009.1) есть что-то, называемое приборной панелью, которая содержит несколько «Задач». Один из них - списки изменений, которые еще не синхронизированы с вашим рабочим пространством.

В строке меню выберите View -> DashBoard. Справа от панели вкладок DashBoard есть значок шестеренки, который позволяет настраивать параметры. Один из них - «Файлы в моей рабочей области не последней редакции». Несинхронизированные файлы организованы списком изменений.

1
ответ дан 8 December 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: