Para um build sério (aquele que está sendo preparado para teste), especifique explicitamente o rótulo desejado ou número da lista de mudanças, sincronize com o rótulo e inclua-o nos artefatos de compilação.
Se uma changelist (ou rótulo) não for fornecido, use p4 counter change
para obter o número da alteração atual e registre-o. Mas você ainda precisa sincronizar tudo usando esse número de alteração.
Não acho que você possa conseguir exatamente o que deseja, porque, em geral, um espaço de trabalho inteiro não é sincronizado com um número de changelist específico. É possível sincronizar explicitamente alguns arquivos para revisões mais antigas e, então, um único número da lista de mudanças não faz sentido. É por isso que um novo sync
é necessário para garantir que um único número da lista de mudanças represente com precisão a versão do código.
Com relação aos comentários: Sim, minha resposta deve ser usada por gerentes de configuração que estão preparando uma construção para fornecer ao controle de qualidade. Nossos desenvolvedores normalmente não sincronizam como parte de uma construção; eles fazem uma compilação antes de enviar - para que possam ter certeza de que suas alterações não quebrem a compilação ou os testes. Nesse contexto, não nos preocupamos em incorporar um rótulo de repositório.
Com sua abordagem, você está assumindo que todo o seu espaço de trabalho foi sincronizado com o head no momento do seu último envio de changelist e que a changelist incluiu todos os seus arquivos abertos. É muito fácil se enganar nessas suposições, difíceis de detectar e terrivelmente caro em termos de tempo perdido. Por outro lado, resolver o problema é fácil, sem inconvenientes. E como um número da lista de mudanças pode ser especificado explicitamente, não importa qual revisão você precisa ou quão rápido a base de código está mudando.
p4 changes | head -1
parece mais fácil do que a maioria dessas soluções.