Tim saya menggunakan Team Foundation Server untuk kontrol sumber, dan hari ini saya memperbaiki beberapa aplikasi pengujian bug dan asap sebelum saya memeriksanya, tetapi saya lupa mengomentari beberapa kode. (Kode ini membuat UI sedikit aneh.)
Saya ingin tahu praktik apa yang ada sebelum memeriksa kode - Saya tidak ingin membuat kesalahan seperti ini lagi.
Anda tidak boleh check-in kode komentar. Jika Anda memiliki kode yang perlu dikomentari sebelum check-in, Anda salah melakukannya.
Adapun aturan:
Membangun
3.1 Memperbaiki kesalahan build
Jalankan tes
4.1 Memperbaiki tes yang rusak
Pergi ke 1 (sampai tidak ada yang baru untuk didapatkan)
Hanya masuk saat semua langkah selesai.
Lihat tarian check-in .
Praktik baik lainnya:
sumber
rebase -i
dan bersihkan riwayat lokal Anda, hancurkan komitmen seperlunya, sehingga garis utama tidak memiliki komitmen pekerjaan yang sedang berjalan yang buruk.Saya tidak mencoba untuk menjadi terlalu banyak di sini, tetapi asumsi dalam pertanyaan ini (dan semua kecuali salah satu jawaban) sebagian besar berlaku untuk VCS Terpusat, seperti TFS, SVN, Perforce, dll.
Cukup adil, itulah yang OP menggunakan.
Namun, di sisi lain, ketika menggunakan DVCS (seperti Mercurial dan Git), Anda biasanya tidak perlu menunggu untuk checkin, dan sebagian besar hal yang disebutkan dalam jawaban - seperti diff, dapatkan yang terbaru, gabungkan, dll - tidak diperlukan . Bahkan hal-hal seperti ulasan kode dan tes lebih baik dilakukan setelah checkin (meskipun mungkin sebelum mendorong, tergantung ...)
Satu-satunya pengecualian yang saya lihat di sini (sejauh ini) terkait dengan item pekerjaan. Tentu saja, mengomentari checkin juga bagus ...
sumber
Tiga hal yang tidak saya lihat dalam jawaban lain:
Sertakan file baru
Kembalikan file yang tidak berubah
Periksa komit yang Anda kirim
Dua hal ketika saya menggunakan Git:
Atom melakukan:
git add --patch
untuk membagi perubahan saya menjadi beberapa bagian jika perlu.Lihat perbedaan saat meringkas
git commit --verbose
sehingga saya dapat melihat perbedaan dari perubahan saya saat saya mengetikkan pesan komit saya. (Atau saya menggunakan git-vim tambalan saya untuk menampilkan diff.)sumber
Beberapa item 'praktik bagus' yang saya terapkan di server tim saya cukup mudah. Pertama, sebelum Anda check-in, Anda harus selalu mendapatkan yang terbaru dan menjalankan build lokal, untuk memastikan bahwa tidak ada orang lain yang memeriksa apa pun yang kode Anda akan bentrok. Selain itu, atasi konflik kode apa pun di mesin lokal Anda, bukan server. Setelah kode Anda, dengan kode terbaru diunduh, telah dikonfirmasi untuk membangun dan berfungsi dengan baik Anda siap untuk langkah selanjutnya. Jalankan tes otomatis apa pun kemudian mulai check-in Anda untuk memastikan tes tersebut masih berfungsi dengan baik. Kemudian, hanya untuk memastikan, dapatkan yang terbaru lagi.
Mungkin, sebagai Admin TFS, untuk memberlakukan komentar pada semua check-in. Saya akan merekomendasikan selalu memasukkan komentar check-in untuk pekerjaan Anda terlepas dari apakah itu diberlakukan atau tidak. Jika Anda memiliki pilihan untuk melakukannya, tegakkan itu. Pastikan komentarnya, setidaknya, adalah ringkasan umum tentang apa yang Anda ubah sejak terakhir kali Anda memeriksa kode. Dengan begitu, jika terjadi kesalahan, Anda dapat melihat melalui check-in dan melihat, secara kasar, apa yang diubah pada saat check-in itu. Itu membuat debug bangunan yang rusak jauh lebih mudah.
Selain itu, jika Anda memiliki hak istimewa TFS Admin, memberlakukan rolling build berdasarkan check-in (untuk memastikan semua orang langsung tahu jika check-in mereka merusak sesuatu), dan Anda dapat mengatur server untuk melakukan check-in yang terjaga keamanannya ( jika kode yang diperiksa merusak build, server menolaknya), atau Anda dapat membuatnya membuat bug dan memberikannya kepada siapa pun yang melanggar build.
Ada beberapa opsi lain yang bisa Anda nyalakan atau matikan untuk menjaga agar semuanya tetap baik, atau untuk menyarankan kepada TFS-Admin Anda untuk menghidupkan agar barang-barang tetap bagus dan bersih ... tetapi mereka sebagian besar lebih disukai
sumber
Cari dan ganti kata-kata kutukan ;-)
sumber
Jika Anda check in dari Windows, periksa apakah kode Anda tidak memiliki karakter ^ M - editor di UNIX yang sering memberikan kesalahan / peringatan karena itu.
Juga coba dan ganti tab - pengguna yang berbeda akhirnya akan melihat tabstop berbeda beberapa dengan 4 spasi, beberapa 8 dan tidak baik untuk keterbacaan kode.
IMHO pendekatan terbaik adalah memiliki skrip yang telah ditentukan memeriksa kode Anda terhadap pedoman pengkodean organisasi Anda. Banyak sistem kontrol sumber memiliki fungsi ini.
sumber
Di perusahaan saya, kami menggunakan ulasan check-in. Ini tidak harus dirinci, tetapi hanya menunjukkan kepada seseorang perbedaan dalam daftar perubahan Anda dan berbicara melalui mereka kadang-kadang akan menyoroti kesalahan ketik aneh yang Anda lewatkan dalam pengujian.
Server kontrol sumber kami tidak akan mengizinkan Anda untuk check-in kecuali jika Anda mencatat nama pengulas di komentar (dalam formulir! Inisial, misalnya! BW jika Bruce Wayne melakukan review Anda). Peninjau mendapat email yang menyatakan bahwa mereka membantu meninjau. Ini terbuka untuk eksploitasi yang jelas tetapi tampaknya bekerja dengan cukup baik.
sumber
Kapan pun memungkinkan, saya ingin mengaitkan check-in dengan item pekerjaan. Ini memberi Anda beberapa informasi kontekstual tentang MENGAPA ini diubah, bukan hanya APA yang diubah. TFS memiliki sistem pelacakan item pekerjaan yang cukup baik, jadi ini agak sepele untuk dilakukan pada saat check-in.
(ini selain meninjau perbedaan perubahan saya)
sumber
Satu hal kecil yang saya lakukan adalah tidak memeriksa file yang belum benar-benar berubah. File-file ini mungkin telah dimodifikasi secara tidak sengaja, atau mungkin telah terlibat dalam refactor yang telah dibatalkan atau telah diperdebatkan.
Dengan cara ini, changeset Anda (terkait dengan item kerja) berisi persis file yang diperlukan untuk memenuhi item kerja.
sumber
Untuk menggabungkan semua jawaban di sini dan berikan daftar periksa lengkap
[check-in / check-out] Anda tidak boleh check-in langsung ke aliran tempat orang lain bekerja. Anda harus memiliki strategi aliran: misalnya per pengembang aliran di mana Anda dapat memeriksa dan memeriksa secara mandiri tanpa mengganggu orang lain: pekerjaan Anda akan aman tetapi dalam arus pengembangan Anda sendiri sehingga [hanya dalam aliran pengembangan Anda sendiri]. Dengan setiap cek di Anda kaitkan dengan catatan perubahan sehingga perubahan Anda adalah atom terhadap perubahan yang disebut set perubahan (sehingga Anda dapat mendistribusikan rfc individu / bug dll ... tanpa harus memberikan 'segalanya').
[lalu rebase dengan aliran tim Anda] itu berarti Anda mendapatkan perubahan dari orang lain di aliran Anda sendiri. Selama operasi itu, Anda dapat melihat dalam dialog menggabungkan semua "diff" dan pergi melalui mereka atau ... jika ada ribuan dan / atau Anda menggunakan bukan kode tetapi juga misalnya model data / proyek siebel dll ... bergantung pada salah satu non trivial merge, trivial-automatic dan trivial manual merge, kategori terakhir berisi yang sulit. Ingatlah bahwa Anda masih bekerja di aliran Anda sendiri.
[selesai rebase] Jika semuanya baik-baik saja maka periksa semua perubahan yang baru saja Anda dapatkan dari aliran tim: aliran Anda sendiri sekarang terbarui
[serahkan] sekarang serahkan pekerjaan Anda ke aliran tim. JIKA Anda tidak ingin memberikan semua yang Anda juga dapat memilih misalnya 1 RFC tertentu dengan versi file tertentu atau satu set RFC / cacat diselesaikan.
[test deliver] seharusnya tidak apa-apa, tetapi karena ada kemungkinan seseorang pada saat itu menyampaikan perubahan juga: Anda dapat menguji apakah pekerjaan Anda bekerja dengan perubahan terbaru pada aliran tim. Dengan dialog gabungan yang sama menunjukkan perbedaan.
[pengiriman lengkap] selesaikan pengiriman Anda dan pekerjaan Anda sekarang ada di aliran tim.
Untuk membuatnya lebih kompleks: Karena masih ada kemungkinan bahwa pekerjaan yang Anda kirimkan = ok TAPI Anda sudah bekerja pada versi lebih lanjut, Anda harus membuat garis dasar setelah memberikan dan menunjukkan garis dasar yang mana yang lebih disukai pengguna lain untuk diubah dari . Itu memastikan bahwa pengembang lain mendapatkan yang direkomendasikan dan bukan versi terbaru di aliran (jika Anda bekerja dalam skenario itu). Itu juga merupakan Triple check sehingga JIKA bahkan versi terbaru dalam aliran tim adalah "buruk" mereka masih bukan yang orang lain ulangi atau lihat dan manajer konfigurasi Anda dapat menggabungkan versi sebelumnya ke versi berikutnya untuk membatalkan pengiriman Anda.
Dalam contoh Anda, Anda memberi Anda lupa berkomentar kode. Kesalahan terjadi. Sistem manajemen konfigurasi di sekitarnya harus mengatasinya. Bisa jadi satu misalnya ribuan perubahan datang dan "membangun" dan "integrasi" terjadi dalam hierarki aliran pada server yang berbeda dirantai dan diproses dalam waktu. Jadi, bahkan jika setelah 5 bulan kode komentar Anda diuji pada server integrasi karena kode Anda membutuhkan integrasi dengan kode dan sistem lain, masih mungkin untuk secara atomik mengambil set perubahan Anda dan masih melanjutkan. Jadi praktik terbaik kurang lebih pada tingkat yang lebih tinggi. Desain keseluruhan aliran manajemen konfigurasi harus mengatasinya. Untuk pengembang individu praktik terbaik adalah tentu saja untuk memvalidasi / uji unit. Tapi dari gambaran besar sampai "
sumber
Beberapa dari yang berikut ini berlaku lebih dari yang lain (atau dalam bentuk yang berbeda) tergantung pada SCM Anda, jadi inilah mereka:
CATATAN : beberapa item di atas tampak agak jelas, tetapi Anda tidak akan percaya berapa banyak orang yang benar-benar bekerja di cabang utama atau membuat perubahan pada produksi pertama dan kemudian secara manual membuat delta untuk pergi pada kontrol versi ... langsung di cabang utama. .. dan dengan label. Manis seperti empedu fermentasi dicampur dengan jus ketiak yang tidak dicuci ... ya, seperti itu.
sumber
Memiliki daftar periksa pribadi. Mulai kosong saat Anda mengacaukan, pada sebuah entri. Ketika menjadi sifat kedua hapus dari daftar.
Jalankan tes. Jika mereka lulus check in. Jika Anda mengacaukan dan sesuatu melewati tes, kemudian menulis tes.
sumber
Kami melakukan yang berikut ...
Tes - Kami ingin memastikan itu berfungsi. Paling tidak, kami ingin tahu bahwa itu tidak merusak apa pun.
Peninjauan kode, atau setidaknya pemeriksaan teman - Ini adalah cara yang bagus untuk memastikan bahwa pengetahuan tersebar dan orang-orang selalu terbarui. Ini juga membantu menangkap bug sebelum memeriksa.
Kirim pemberitahuan sebelumnya - Pemberitahuan sebelumnya dikirim ke grup sebelum checkin. Tujuannya tidak hanya untuk memberi tahu orang lain file atau area mana yang berubah, tetapi juga memberi mereka informasi (jika mereka memilih untuk memperhatikan) jika perubahan itu diharapkan mempengaruhi mereka.
Beberapa jam setelah mengirim pemberitahuan sebelumnya, check-in dilakukan, dan grup diinformasikan melalui email. Setiap orang dalam grup dapat mengetahui kapan fitur bug atau fitur tertentu selesai.
Salinan pemberitahuan checkin disisipkan ke dalam catatan perbaikan yang terkait dengan bug atau fitur. Saat mencari di seluruh catatan, kami menemukan bahwa sangat praktis untuk mengetahui apa yang termasuk dalam perbaikan / fitur.
sumber
Jalankan tes unit yang telah Anda garap dengan rajin. Hijau itu baik.
sumber
Pastikan kode Anda diformat dengan benar (misalnya untuk Java: pilih kode Anda dan tekan Ctrl-Shift-F di Eclipse). Tapi hati-hati melakukan hal yang sama untuk seluruh dokumen.
sumber
Selalu, selalu, selalu , periksa bahwa perubahan apa pun yang Anda lakukan tidak merusak build. Terutama perubahan kecil yang mungkin tampak sepele.
Suatu kali saya membuat perubahan kecil yang saya pikir tidak akan menimbulkan masalah tepat sebelum saya meninggalkan pekerjaan untuk akhir pekan. Benar saja, perubahan kecil itu merusak pembangunan dan tidak ada uji coba malam dilaksanakan untuk proyek kami. Kepala Q&A tidak terlalu senang tentang itu, dan memang begitu.
sumber
Cari bagian dari perubahan Anda yang bisa masuk sebagai unit mandiri.
Seringkali, pada saat saya memiliki perbaikan atau penyempurnaan kode, ada beberapa perubahan. Beberapa dari mereka khusus untuk perubahan perilaku yang saya jalani; yang lain adalah refactoring yang saya lakukan untuk membuat perubahan itu lebih bersih.
Saya lebih suka memeriksa di setiap refactoring secara terpisah, dengan deskripsi perubahannya sendiri, seperti ini:
Kemudian, setelah setiap refactoring yang baik diperiksa, perubahan perilaku akhir sering sepele.
Juga, beberapa perubahan memengaruhi banyak baris kode tetapi tidak terlalu menarik, sementara perubahan lainnya sangat lokal tetapi memiliki dampak penting. Jika perubahan ini dicentangkan bersama, mungkin sulit untuk membaca perbedaan. Jadi, saya memisahkan mereka.
Kemudian, ketika seseorang membaca sejarah perubahan, jelaslah bagaimana segala sesuatunya sampai pada keadaan saat ini, dan mengapa hal itu terjadi. Juga sepele untuk membatalkan perubahan perilaku saya karena tidak kusut dengan banyak pengeditan lainnya.
sumber
Lakukan apa yang akan Anda lakukan ketika mengembalikan sesuatu yang Anda pinjam dari seseorang. Pastikan itu bersih dan dalam kondisi baik. Jika Anda melakukan kekacauan, pastikan untuk membersihkan sebelum mengembalikan kode ke pemiliknya (dalam kebanyakan kasus, majikan Anda).
sumber
Saya menyimpan repo hg lokal untuk pekerjaan saya.
Saya tidak mengklaim ini adalah yang terbaik, tetapi mereka bekerja untuk saya.
sumber
Ketika saya menulis kode yang saya tahu tidak dimaksudkan untuk diperiksa, saya menambahkan baris sebelum berisi "// TEMP:" dan setelahnya dengan "// END TEMP.". Ini, bersama dengan melakukan diff sebelum check-in, berjanji bahwa saya tidak akan memeriksa kode itu secara tidak sengaja.
sumber
Tes secara menyeluruh semua yang Anda tambahkan atau ubah. Cobalah setiap kasus yang mungkin Anda bisa pikirkan untuk mencoba. Jangan tinggalkan pengujian ke QA. Jika saya memiliki sandwich untuk setiap kali saya membuat beberapa perubahan kecil, dan kemudian mencoba beberapa test case hanya untuk berada di sisi yang aman, dan segera melihat masalah, saya akan memiliki banyak sandwich. Saya biasanya berkata dengan keras kepada diri sendiri, "Saya sangat senang saya mencoba itu ..."
Anda mengatakan UI menjadi aneh setelah perubahan Anda. Jika Anda hanya menjalankan program dan melihat UI sebelum check in, apakah Anda akan memperhatikan masalahnya?
sumber