Untuk build yang serius (yang sedang disiapkan untuk pengujian), tentukan secara eksplisit nomor daftar perubahan atau label yang diinginkan, sinkronkan ke label, dan tanamkan dalam artefak build.
Jika daftar perubahan (atau label) tidak diberikan, gunakan p4 counter change
untuk mendapatkan nomor perubahan saat ini, dan catat. Tetapi Anda masih perlu menyinkronkan semuanya menggunakan nomor perubahan itu.
Saya tidak berpikir Anda dapat mencapai apa yang Anda inginkan, karena secara umum, seluruh ruang kerja tidak disinkronkan ke nomor daftar perubahan tertentu. Seseorang dapat secara eksplisit menyinkronkan beberapa file ke revisi lama, dan kemudian nomor daftar perubahan tunggal tidak ada artinya. Itu sebabnya segarsync
itu, diperlukan perubahan baru untuk memastikan bahwa satu nomor daftar perubahan secara akurat mewakili versi kode.
Mengenai komentar: Ya, jawaban saya dimaksudkan untuk digunakan oleh manajer konfigurasi yang mempersiapkan build untuk diberikan kepada QA. Pengembang kami biasanya tidak menyinkronkan sebagai bagian dari build; mereka melakukan build sebelum dikirim — sehingga mereka dapat memastikan perubahan mereka tidak merusak build atau pengujian. Dalam konteks itu, kami tidak repot-repot menyematkan label repositori.
Dengan pendekatan Anda, Anda membuat asumsi bahwa seluruh ruang kerja Anda telah disinkronkan ke head pada saat pengiriman daftar perubahan terakhir Anda, dan daftar perubahan tersebut menyertakan semua file terbuka Anda. Terlalu mudah untuk salah dalam asumsi tersebut, sulit untuk dideteksi, dan sangat mahal dalam hal waktu yang hilang. Di sisi lain, memecahkan masalah itu mudah, tanpa kekurangan. Dan karena nomor daftar perubahan dapat ditentukan secara eksplisit, tidak masalah revisi apa yang Anda butuhkan atau seberapa cepat basis kode berubah.
p4 changes | head -1
tampaknya lebih mudah daripada kebanyakan solusi ini.