W przypadku poważnej kompilacji (takiej, która jest przygotowywana do testowania), wyraźnie określ żądaną etykietę lub numer listy zmian , zsynchronizuj z etykietą i umieść ją w artefaktach kompilacji.
Jeśli lista p4 counter change
zmian (lub etykieta) nie jest podana, użyj, aby uzyskać bieżący numer zmiany i zapisz go. Ale nadal musisz zsynchronizować wszystko za pomocą tego numeru zmiany.
Nie sądzę, że możesz osiągnąć dokładnie to, co chcesz, ponieważ ogólnie cały obszar roboczy nie jest zsynchronizowany z określonym numerem na liście zmian. Można jawnie zsynchronizować niektóre pliki ze starszymi wersjami, a wtedy pojedynczy numer listy zmian jest bez znaczenia. Dlatego sync
potrzebny jest nowy, aby mieć pewność, że pojedynczy numer listy zmian dokładnie reprezentuje wersję kodu.
Odnośnie komentarzy: Tak, moja odpowiedź jest przeznaczona dla menedżerów konfiguracji przygotowujących kompilację do kontroli jakości. Nasi programiści zwykle nie synchronizują się jako część kompilacji; robią kompilację przed przesłaniem - dzięki czemu mogą mieć pewność, że wprowadzone przez nich zmiany nie zakłócą kompilacji ani testów. W tym kontekście nie zawracamy sobie głowy osadzaniem etykiety repozytorium.
W swoim podejściu zakładasz, że cały obszar roboczy został zsynchronizowany z głową w momencie ostatniego przesłania listy zmian, a lista zmian zawierała wszystkie otwarte pliki. Zbyt łatwo jest się pomylić w tych założeniach, trudnych do wykrycia i potwornie kosztownych, jeśli chodzi o stracony czas. Z drugiej strony rozwiązanie problemu jest łatwe, bez wad. A ponieważ numer listy zmian można wyraźnie określić, nie ma znaczenia, jakiej wersji potrzebujesz ani jak szybko zmienia się baza kodów.
p4 changes | head -1
wydaje się łatwiejsze niż większość tych rozwiązań.