Kebiasaan kontrol versi terbaik untuk pengembang solo?

36

Saya seorang pengembang tunggal di tempat kerja saya dan sementara saya memahami manfaat VCS; Saya merasa sulit untuk berpegang pada praktik yang baik. Saat ini saya menggunakan git untuk mengembangkan sebagian besar aplikasi web (yang tidak akan pernah bersumber terbuka karena pekerjaan saya).

Alur kerja saya saat ini adalah membuat banyak perubahan ke situs pengembangan, menguji, merevisi, menguji, menjadi bahagia dan melakukan perubahan, dan kemudian mendorong komit ke situs langsung (jadi jika saya sedang mengerjakan perubahan besar baru; saya mungkin hanya komit seminggu sekali, tetapi IDE saya memiliki riwayat undo yang bagus untuk hal-hal yang tidak dikomit).

Pada dasarnya, saya hanya menggunakan git ketika beralih antar mesin (mis., Kerja dev komputer ke komputer dev rumah atau ke mesin hidup), tetapi pada siang hari saya tidak benar-benar melihat manfaatnya. Hal ini membuat saya memiliki daftar perubahan laundry yang panjang (dan saya kesulitan menemukan pesan yang baik untuk setiap komit; dan setiap kali saya terburu-buru - saya cenderung meninggalkan pesan jelek seperti 'perubahan misc ke admin dan templat').

Seberapa sering saya harus berkomitmen? Haruskah setiap perubahan satu baris mendapat komitmen? Haruskah saya melakukan sebelum pengujian (misalnya, setidaknya untuk kesalahan sintaks / kompilasi dan kemudian harus benar-benar membatalkannya; karena idenya tidak berfungsi atau pesannya bohong)?

Haruskah saya memastikan saya melakukan setiap pagi / sore sebelum saya berhenti bekerja untuk makan malam sementara masih segar? Apa yang saya lewatkan dengan memiliki kebiasaan VCS yang buruk?

dr jimbob
sumber
2
Mungkin salah satu alasan mengapa Anda merasa VCS tidak berhasil adalah karena Anda menggunakan Git sebagai pengembang solo? Git sepertinya berlebihan bagi saya untuk satu pengembang, mungkin sesuatu yang lebih sederhana dengan fitur yang kurang seperti SVN akan lebih mudah digunakan?
maple_shaft
6
@maple_shaft: Saya belum pernah menggunakan Git, tetapi Mercurial sesederhana Subversion untuk tugas-tugas dasar pengembang solo. (Lebih sederhana, sebenarnya, karena membuat repositori-setara lebih mudah.)
David Thornley
15
Mengapa git menjadi berlebihan?
Tamás Szelei
1
@maple_shaft manfaat sebenarnya datang nanti. Tidak perlu puas dengan lebih sedikit.
3
Perlu disebutkan bahwa untuk DVCS seperti git dan lincah, untuk mendapatkan manfaat dari cadangan di luar kontrol sumber Anda (seperti yang disebutkan dalam beberapa jawaban) Anda harus mendorong secara teratur, bukan hanya melakukan.
kapal tunda

Jawaban:

24

Kamu sangat kehilangan.

Saya juga sendirian, dengan cara. Saya berkomitmen setiap kali melakukan perubahan signifikan, atau sebelum saya memulai perubahan signifikan sehingga saya bisa kembali jika saya mengacaukan segalanya, dan setiap sekarang dan kemudian bahkan jika saya tidak membuat sesuatu yang besar. Tidak setiap hari, tapi dekat. Terkadang beberapa kali sehari.

Yang saya dapatkan adalah saya bisa kembali kapan saja saya mau. Yang banyak. Juga, memerintahkan cabang untuk membantu.

Saya kira itu memberi saya banyak pesanan.

Saya menggunakan svn, dan saya muak. Tetapi tidak dapat menghabiskan lebih banyak waktu untuk mempelajari hal lain.

Semoga berhasil.

cauchy
sumber
+1 Saya baru-baru ini mulai menggunakan VCS sendiri, dan GIT cocok untuk saya :)
yati sagade
1
Saya telah menghindari kontrol versi untuk waktu yang lama karena saya mendapat kesan bahwa itu terlalu besar / jelek / menjengkelkan. Beberapa bulan yang lalu saya memutuskan untuk mengenal Subversion dan sekarang saya bersumpah.
Dalin Seivewright
1
Saya memiliki beberapa proyek solo: beberapa di Github, beberapa tidak. Saya selalu menggunakan git bahkan jika saya hanya membangun sesuatu untuk tujuan khusus mempelajari API / alat tertentu. Ini menegakkan kebiasaan baik untuk proyek nyata di mana itu lebih berguna, seperti yang dijelaskan oleh @jbcolmenares.
sarumont
2
Saya akan membalas "Anda tidak dapat menghabiskan lebih banyak waktu mempelajari hal lain" dengan hginit.com . Hitung waktu yang Anda habiskan untuk marah pada svn selama satu minggu, lalu ambil jumlah waktu itu untuk membaca hginit minggu berikutnya.
Pelaku
@tdammers akan memeriksanya
cauchy
18

Anda harus sering berkomitmen. Anda tentu harus melakukan setelah mencapai beberapa tonggak logis. Jika itu membutuhkan waktu lebih lama dari satu hari, Anda setidaknya harus berkomitmen pada akhir hari kerja Anda, atau lebih baik lagi, memecah pekerjaan Anda menjadi potongan-potongan yang lebih kecil.

Ada banyak alasan untuk melakukan itu. Misalnya, bagaimana jika komputer Anda rusak? Jauh lebih baik kehilangan pekerjaan sehari saja daripada satu minggu atau satu bulan. Alasan lain adalah seringnya melakukan membuatnya lebih mudah untuk mengisolasi bug. Anda dapat melakukan pencarian biner dan mencari tahu perubahan kecil apa yang menyebabkan bug.

Hal lain: sebelum Anda berkomitmen, Anda harus melakukan diff dan melihat semua perubahan yang telah Anda buat. Ini memungkinkan Anda untuk memeriksa bahwa semua perubahan itu masuk akal, dan bahwa Anda belum melupakan apa pun. Ini juga membantu Anda menghasilkan pesan komit yang lebih baik. Dan, tentu saja, ini adalah alasan lain untuk sering berkomitmen: jauh lebih mudah untuk melewati perubahan satu hari daripada nilai satu bulan.

Dima
sumber
"bagaimana jika komputer Anda crash" - file disimpan ke disk cukup sering dan backup dilakukan setiap malam (jika Anda maksudkan jika hard disk rusak). Namun +1 untuk pencarian biner untuk bug bisa berguna. Saya cukup pandai menemukan 95% bug saya dengan cepat; tetapi setiap sekarang dan kemudian ada bug yang benar-benar aneh yang timbul dari perubahan yang tampaknya tidak penting di bagian lain dari program ini.
dr jimbob
Ya maksud saya "jika disk rusak", atau "jika langit-langit runtuh", atau "jika perangkat EMP mati di dekatnya". :) Apa pun yang dapat menyebabkan hilangnya data. Berkomitmen sering kali adalah cara termudah untuk mencadangkan pekerjaan Anda, dan memungkinkan Anda untuk dengan mudah memiliki cadangan situs, dengan menggunakan server kontrol versi jarak jauh.
Dima
1
@Dima: Anda harus mendorong dan tidak hanya berkomitmen untuk memiliki cadangan Anda
liberforce
@liberforce Tidak semua sistem kontrol versi memiliki operasi push. Jawaban ini dari 2012. Saya menggunakan subversi pada saat itu, yang tidak didistribusikan. Jadi, jangan memaksakan.
Dima
2
@ Dim: pasti, tapi OP menggunakan git, jadi instruksinya bisa menyesatkan karena Anda tidak mengatakan Anda berbicara tentang SVN.
liberforce
10

Untuk mendapatkan hasil maksimal dari CVS Anda harus mengerjakan satu fitur / perbaikan bug pada suatu waktu, dan komit ketika fitur / perbaikan bug itu selesai. Dengan melakukan ini Anda akan mendapatkan:

  • pesan commit akan lebih mudah dibuat dan lebih masuk akal;
  • pelacakan lebih mudah bug masa depan kembali ke perubahan yang memperkenalkan mereka;
  • lebih mudah kembali ke keadaan sebelumnya (bahkan jika itu berarti kehilangan fitur yang gagal tetapi menjaga perbaikan bug yang terjadi setelahnya).

Juga, karena Anda beralih di antara PC, Anda harus memiliki setidaknya dua cabang:

  • cabang "Ready to go" yang selalu berfungsi (kecuali bug yang Anda kerjakan di cabang pengembangan, tentu saja)
  • cabang pengembangan yang mungkin dalam kondisi tidak dapat dihidupkan dari waktu ke waktu (seperti selama perjalanan Anda pulang kerja;).
Ethan Furman
sumber
1
+1 untuk cabang siap pakai! Saya tidak tahu berapa kali saya diminta untuk menunjukkan perangkat lunak saat bos dan calon klien lewat. Sangat menyenangkan memiliki versi yang benar-benar berfungsi dan tidak dalam keadaan fluks.
bluebill
Versi yang berfungsi dan diuji biasanya ditandai. Itu yang harus Anda tunjukkan, kecuali bos ingin melihat perubahan terbaru. Dalam hal ini, Anda hanya git stashmenunjukkan dan menunjukkan apa yang Anda miliki, atau checkout komit tertentu. Tentu saja, jika Anda memiliki perubahan besar yang merupakan pekerjaan yang sedang berjalan, itu harus berada di cabang kerja-dalam-proses yang terpisah, jadi cabang utama Anda adalah yang stabil secara de facto.
liberforce
7

Haruskah setiap perubahan satu baris mendapat komitmen?

Jika itu yang memperbaiki bug, tentu saja.

Apa yang saya lewatkan dengan memiliki kebiasaan VCS yang buruk?

Saya bekerja dengan seorang pria yang memiliki "kebiasaan VCS buruk". Dia suka bekerja sendirian dan dia bertanggung jawab atas lini produk yang menghasilkan sekitar $ 1.000.000 / tahun. Dia hanya akan membuat komite ketika bos mengomelnya. Lalu suatu hari hard drive-nya jatuh. Setelah menyiapkan pengganti untuknya, kami menemukan bahwa check-in terakhir adalah 6 bulan sebelumnya. Karena VCS adalah Sumber Aman, Anda dapat menebak apa yang salah - komit terakhir rusak. Kami harus kembali lebih dari setahun untuk mendapatkan versi yang tidak rusak dari lini produknya. Dia tidak dipecat, meskipun seharusnya begitu.

Anekdot lain melibatkan diri saya. Saya dulu menyimpan kode untuk proyek hobi dan penelitian pada hard drive yang dapat dilepas. Suatu hari, apartemen saya dibobol. Laptop (yang rusak) dan semua hard drive yang dapat dilepas dicuri. Setiap DVD (kecuali Red Dawn) dicuri. Tidak ada komputer desktop yang dicuri. Jika saya memiliki kontrol sumber luar, saya tidak akan kehilangan proyek senilai 15 tahun, terutama karena beberapa didasarkan pada proyek akademik - banyak profs meninggalkan akademia untuk pergi ke industri swasta sehingga proyek-proyek tersebut menghilang ke dalam lubang hitam IP perusahaan membuat kode yang hilang tidak mungkin dipulihkan.

Seberapa sering saya harus berkomitmen?

Saya memecahnya menjadi beberapa metrik:

  • Berapa banyak pekerjaan yang mau Anda hilangkan jika komputer Anda mati? atau dicuri?

  • Jika ini memperbaiki Bug_1234, maka periksa kode dengan komentar "perbaikan Bug_1234".

  • Jika ini adalah pengiriman / tonggak yang logis, maka periksa dengan komentar seperti "Bug_1234, form_xyz" (atau Task_1234 yang sesuai).

  • Selalu periksa kode pada hari Jumat malam sebelum Anda pulang. Juga melakukan check-in (atau membatalkan checkout) dari segala sesuatu sebelum pergi berlibur.

  • Setiap kali kebijakan perusahaan menentukan.

Tangurena
sumber
1
Saya setuju orang itu seharusnya dipecat. Tidak berkomitmen, bahkan setidaknya untuk rilis, adalah kegilaan. Bagaimana Anda dapat menemukan bug yang muncul di versi 1.2 jika Anda tidak tahu kode apa yang ada di 1.2? Apakah orang itu hanya melakukan salinan kode dan zip di hard drive-nya?
liberforce
5

Jangan berpikir dalam hal jumlah baris berubah. Pikirkan dalam potongan fungsionalitas. VCS memungkinkan Anda memberi judul di tempat sentral untuk setiap fungsionalitas sehingga Anda dapat dengan mudah melihat "apa yang terjadi di sini" dengan misalnya git log.

Juga, IDE seperti Eclipse memungkinkan Anda untuk menunjuk ke baris yang diberikan dan pergi ke komit yang membawanya ke bentuk yang Anda lihat. Dengan kata lain, Anda bisa langsung dari baris sumber ke komit. Jika komit kecil dan memiliki pesan yang baik, itu jauh lebih bermanfaat daripada "bug yang diperbaiki".


sumber
4

Saya akan mengatakan hal terbesar yang Anda lewatkan dengan mengelompokkan perubahan bersama seperti itu adalah kemampuan untuk melacak kapan dan di mana bug diperkenalkan.

Dalam pengalaman saya, ada beberapa kali di mana beberapa bug diketahui dua-tiga minggu setelah diperkenalkan dan harus menyelami komitmen selama satu minggu adalah sulit sejauh itu. Dalam kasus ini, sangat membantu untuk hanya mencari biner melalui komit untuk melacak perubahan individu mana yang menyebabkan masalah. Bug ini sebagian besar adalah bug penggunaan memori pada kode C ++, jadi itu mungkin tidak terjadi sesering untuk proyek Anda.

Manfaat lain ikut berperan saat mengembangkan tim - komentar sederhana, penggabungan yang lebih mudah, komitmen terkait dengan perbaikan bug, dll.

Saya kira dengan alur kerja Anda bahwa jika Anda mulai melakukan setiap hari atau setengah hari, Anda harus menggunakan tag atau bookmark untuk melacak versi kode mana yang digunakan di situs langsung. Saya akan mengatakan itu hal yang paling penting untuk dilacak.

kapal tunda
sumber
4

Saya seorang pengembang solo juga, saya menggunakan SVN, dan saya menyukainya. Saya bahkan telah menulis alat untuk mengubah struktur basis data saya dan data uji di dalamnya menjadi xml sehingga saya dapat memasukkannya ke dalam kontrol sumber.

Saya biasanya berkomitmen setiap kali saya menyelesaikan unit kerja mandiri. Kadang-kadang, jika saya melakukan banyak perbaikan jalur tunggal sepele dan tidak terkait di sana-sini maka saya mengikat semuanya, tetapi jika perbaikan jalur tunggal terjadi antara dua unit kerja otonom besar yang tidak terkait, maka ia mendapatkan sendiri komit, tidak ada yang salah dengan itu.

Juga, saya selalu mengkomit kode yang mengkompilasi, dan hampir selalu kode yang juga melewati semua tes dasar. Jika tidak, saya pastikan untuk memasukkan "JANGAN BEKERJA" dalam pesan komit. Satu-satunya kasus ketika ini terjadi adalah ketika saya telah melakukan perubahan penting yang saya tidak ingin kehilangan meskipun mereka belum bekerja, dan di atas semua ini saya akan memulai petualangan refactoring yang hebat yang saya tidak yakin apakah itu akan berhasil. Jadi, kemudian, saya menggunakan repositori sebagai cadangan dari pekerjaan yang telah saya lakukan sejauh ini sebelum mengambil risiko untuk mengacaukannya dan harus membuangnya.

Ini berarti bahwa saya selalu melakukan ketika kode sumber saya perlu dilakukan; sama sekali tidak masuk akal untuk memiliki komitmen pagi atau aturan malam. Ini adalah kondisi kode yang menentukan apakah sudah saatnya untuk berkomitmen atau tidak.

Pesan yang Anda masukkan ke dalam repositori tidak terlalu menjadi masalah. Jika Anda benar-benar tidak dapat menemukan sesuatu yang bermakna, masih lebih baik untuk melakukan dengan pesan kosong daripada tidak melakukan sama sekali ketika Anda seharusnya.

Jika Anda tidak dapat memikirkan pesan komit yang baik karena semua yang Anda temukan terdengar bodoh, ingatlah bahwa ini tidak apa-apa; pesan commit diharapkan untuk menyatakan yang jelas, sehingga mereka pasti terdengar bodoh bagi Anda ketika Anda menulisnya. Tapi percayalah, jika Anda perlu memeriksa revisi lama sebulan kemudian Anda akan berterima kasih bahkan untuk pesan bodoh atas tidak ada pesan.

Mike Nakis
sumber
1

Berkomitmen setiap kali Anda melakukan perubahan "logis". Misalnya jika Anda menerapkan fitur baru, Anda melakukannya langkah demi langkah. Masing-masing langkah biasanya tergantung satu sama lain. Jadi Anda bisa mengkomit langkah-langkah itu secara terpisah, dan menjelaskan dalam pesan komit mengapa setiap langkah diperlukan.

Pesan komit sangat penting. Anda harus menghindari mengatakan apa yang Anda lakukan, katakan mengapa Anda melakukannya. Kode sudah mendokumentasikan perubahan, tetapi dalam 6 bulan Anda akan senang melihat mengapa Anda melakukannya.

Ini juga berguna jika secara kebetulan seseorang melompat masuk dan Anda tidak sendirian lagi. Bahkan hanya untuk Anda, riwayat bersih membuatnya lebih mudah digunakan git blameuntuk mengetahui kapan dan mengapa baris yang memiliki bug telah diubah.

Membuat komitmen kecil alih-alih bola besar dari perubahan lumpur juga memungkinkan Anda untuk menguji kondisi perantara. Anda dapat menyimpan perubahan jika Anda harus segera melepaskan sesuatu. Jika Anda memperkenalkan bug saat bekerja sebelumnya, Anda dapat menyimpan dan memeriksa apakah itu adalah perubahan yang tidak dikomit yang menyebabkan bug, atau jika ada komit yang lebih lama.

Anda juga dapat melepaskan kekuatan git bissectyang akan memberi tahu Anda bahwa bug ini jahat. Jika komit panjang 2.000 baris, masih membantu tetapi tidak terlalu ...

Hal lain adalah bahwa ini adalah langkah pertama untuk integrasi berkelanjutan (CI) dan kemudian penyebaran berkelanjutan (CD). CI dan tes Anda dapat dipicu pada komitmen baru, karenanya memberi tahu Anda setiap kali Anda mendorong perubahan Anda jika itu merusak sesuatu atau tidak. Dengan cara ini Anda bisa tahu apakah itu aman untuk digunakan atau tidak, dan diberitahukan bahwa saat ini masalah diperkenalkan dan tidak sebelum rilis saat Anda terburu-buru.

Tentang pertanyaan Anda yang lain:

  • jangan melakukan hal-hal yang bahkan tidak Anda kompilasi, kecuali Anda bersedia menulis ulang riwayat Anda untuk itu (menggunakan git rebase --interactive).
  • perubahan satu baris perlu komit jika memiliki tujuan terpisah (memperbaiki bug, atau tidak terkait dengan perubahan yang saat ini tidak dikomit). Gunakan git add --patchuntuk menggelar itu.
  • tidak perlu memaksakan diri untuk berkomitmen sebelum makan malam, kecuali jika Anda memiliki hal-hal penting yang Anda tidak mampu kehilangan. Dalam hal ini, Anda mungkin ingin melakukan dalam cabang terpisah pekerjaan Anda sedang berlangsung.
  • melakukan dan mendorong ke repositori jarak jauh adalah cadangan. Jika Anda berkomitmen dan mendorong hanya sekali seminggu, Anda bisa dalam skenario terburuk kehilangan satu minggu kerja.
liberforce
sumber
0

Seberapa sering saya harus berkomitmen?

Sebagai pengembang solo, saya biasanya berkomitmen kapan pun saya merasa telah membuat perubahan signifikan, setelah pengujian dasar, dan ketika saya meninggalkan proyek pada akhir malam.

Haruskah setiap perubahan satu baris mendapat komitmen?

Tidak, kecuali jika perubahan satu baris akan secara signifikan mengubah fitur atau bug.

Haruskah saya melakukan sebelum pengujian (misalnya, setidaknya untuk kesalahan sintaks / kompilasi dan kemudian harus benar-benar membatalkannya; karena idenya tidak berfungsi atau pesannya bohong)?

Mungkin tidak. Setidaknya bagi saya, saya melakukan sebagian besar pengujian dan pengkodean pada 'copy pekerjaan' dan melakukan setelah saya senang dengan perubahan saya. Dalam banyak IDE, ini akan menunjukkan kepada saya apa yang berubah sebelum saya benar-benar membuat komit dan memberi saya kesempatan untuk melampirkan catatan pada komit

Haruskah saya memastikan saya melakukan setiap pagi / sore sebelum saya berhenti bekerja untuk makan malam sementara masih segar? Apa yang saya lewatkan dengan memiliki kebiasaan VCS yang buruk?

Saya tidak terlalu terbiasa dengan VCS atau kebiasaan buruk apa yang disebabkannya. Saya pikir saya sebagian besar telah berbagi pendapat saya tentang ini sebagai jawaban atas pertanyaan pertama.

Menanggapi pertanyaan umum yang dipostulatkan, Anda sebagian besar menggunakan komit sebagai cabang yang dibahas di pos responden lain. Saya tidak yakin IDE mana yang Anda gunakan yang memiliki riwayat undo yang bagus, dll, tetapi saya belum menemukan yang saya rasa lebih baik dari restart IDE dan bergerak di antara mesin.

Dbuell
sumber
I am not very familiar with VCS or what bad habits it causes.Beruntunglah anda!
yannis
1
Saya tidak yakin bagaimana saya salah membaca beberapa kali, tetapi saya terus membacanya sebagai 'VSS' seperti pada Visual source safe. Saya cukup akrab dengan beberapa sistem kontrol versi yang berbeda termasuk SVN dan GIT dan sering menggunakannya sebagai pengembang solo, tetapi mungkin memiliki beberapa kebiasaan buruk sendiri mengingat saya belum benar-benar menggunakannya dalam konteks skenario multi-pengembang besar .
dbuell
Yah, karena saya telah berjuang dengan SourceSafe selama lebih dari 3 tahun, komentar saya masih bertahan: Beruntung Anda! Sebagai contoh, VSS6 dapat menangani repositori sekitar 200mb - 300mb, setelah itu jika Anda beruntung beberapa file akan rusak secara acak. Tentu saja ada di mana beberapa perbaikan, dan penyelesaian, dan VSS tidak pernah dimaksudkan oleh MS untuk menjadi vcs penuh sesak nafas, tetapi anggap diri Anda beruntung Anda tidak pernah harus menghadapinya ...
yannis
0

Saya seorang commiter kebiasaan dan saya menemukan yang cocok untuk saya, tetapi diakui pesan komit saya hampir selalu seperti,

Age:  9 mins [*] Working on implementing and testing PaintSystem.
Age: 17 mins [*] Working on implementing and testing PaintSystem.
Age: 37 mins [*] Working on implementing and testing PaintSystem.
Age: 52 mins [*] Working on implementing and testing PaintSystem.

Jadi saya tidak bisa mengatakan dengan tepat bahwa melakukan komit yang sering dan kebiasaan seperti itu ke cabang saya (lincah) telah mendorong log komit yang paling detail. Kadang-kadang saya bahkan akan melakukan kode setengah jalan dilakukan jika, katakanlah, istri saya meminta saya untuk pergi makan malam di mana saya hanya akan dengan cepat menyalin dan menggunakan pesan komit "Bekerja [...]" sebelumnya.

Pola log komit saya biasanya seperti, "Working on [...] Working on [...] Working [...] Completed [...] Started working on [...] Working on [...] Completed [...] Started working on [...]"

Di sisi lain, itu telah menyelamatkan pantat saya. Kadang-kadang saya benar-benar mengalami kasus tepi yang tidak saya antisipasi dan uji, pada titik mana komitmen sering membantu saya mencari tahu di mana saya memperkenalkan kesalahan.

Jadi saya tidak tahu tentang kebiasaan terbaik dan saya jelas bukan orang yang mau mendengarkan sejauh kebiasaan penebangan yang ideal, tapi saya bisa mengatakan bahwa melakukan lebih sering pasti dapat membantu ketika Anda perlu melakukan regresi.

Haruskah setiap perubahan satu baris mendapat komitmen?

Saya telah melakukan perubahan satu baris sebelumnya tetapi biasanya yang rumit dan mungkin saya kekurangan waktu. Komitmen saya tidak selalu menyerupai unit kerja atau perubahan yang sempurna dan lengkap. Seperti yang dikatakan, kadang-kadang itu hanya hasil dari istri saya yang meminta saya untuk keluar untuk makan malam tanpa terduga.

TBH banyak komitmen saya yang mengikuti "Working on [...]"pola log tidak memodelkan unit perubahan yang koheren (mengapa saya sering tidak dapat menghasilkan pesan yang lebih baik daripada "Working on [...]") tetapi hanya hasil dari saya mengambil nafas, seperti membuat sendiri secangkir kopi. The "Completed [...]"pesan menunjukkan akhir dari unit kerja, dan di sana saya sering menulis pesan jauh lebih rinci bersama dengan pertama "Started working on [...]"pesan jenis ketika saya hanya mulai mengerjakan sesuatu. Jika Anda rata-rata melakukan seperti setiap 15 menit sekali, maka pesan "Sedang mengerjakan [...]" itu lebih seperti di-sela untuk apa yang mungkin dilakukan seseorang dalam satu komitmen yang lebih besar dengan pesan yang lebih terperinci.

Haruskah saya melakukan sebelum pengujian (misalnya, setidaknya untuk kesalahan sintaks / kompilasi dan kemudian harus benar-benar membatalkannya; karena idenya tidak berfungsi atau pesannya bohong)?

Saya langsung saja melakukannya sebelum menjalankan tes kadang-kadang (lagi jika saya memiliki acara yang tidak terduga). Juga meskipun saya solo, saya mendorong ke server (hanya satu yang berjalan di sini di rumah pada LAN) yang melakukan CI. Itu mungkin terlihat seperti kerja keras tetapi tidak tahu, saya terbiasa bersandar pada itu di tempat kerja saya yang dulu. Ditambah lagi, saya tidak ingin repot harus menjalankan semua unit saya dan tes integrasi dengan tangan setiap kali. Saya suka semua itu terikat hanya mendorong. Jika sebuah tes gagal, cukup mudah untuk bekerja dengan cara yang bergerak maju di mana saya melakukan regresi, perbaiki kesalahan di putaran terakhir, dan teruskan. Yang mengatakan, saya setidaknya membangun kode terhadap membangun debug sebelum saya komit.

Haruskah saya memastikan saya melakukan setiap pagi / sore sebelum saya berhenti bekerja untuk makan malam sementara masih segar?

Saya suka komit sebelum saya keluar dan memiliki istirahat di antara pemrograman. Saya tidak terlalu memikirkan mengapa sampai saya menemukan pertanyaan ini. Saya kira itu untuk mencegah diri saya mengambil di mana saya tinggalkan tanpa log komit ada di tempat di mana saya tinggalkan sehingga saya bisa berbeda dan sebagainya. Hmm, saya perlu kembali kepada Anda tentang itu karena mungkin secara teoritis tidak diperlukan mengingat seberapa sering saya berkomitmen. Saya masih merasa lebih nyaman melakukan dan mendorong sebelum saya meninggalkan komputer untuk alasan apa pun. Beberapa di antaranya mungkin bekas ketakutan psikologis itu, katakanlah, komputer terbakar setelah saya pergi dan memiliki manajer proyek kembali pada hari-hari ketika kami menggunakan SVN dengan devs kadang-kadang berlangsung selama berminggu-minggu tanpa melakukan pernafasan kami dan terus-menerus mengingatkan kami untuk memeriksa kode sesering mungkin sambil mengingatkan kami bahwa kode kami adalah milik perusahaan. Juga sedikit lebih efisien terutama dengan mendorong sehingga proses CI saya dapat mulai menjalankan semua tes saat saya pergi sehingga saya bisa kembali dan melihat hasilnya.

Oh dan kadang-kadang saya sedikit mabuk setelah saya pergi dan biasanya ide yang buruk untuk mencoba menulis kode kompleks saat mabuk (meskipun tidak selalu; suatu kali saya datang dengan sistem menu konteks yang sangat bagus setelah mengalami momen eureka saat mabuk, tapi saya hanya punya 6 bir dan tidak rumit untuk dikodekan). Jika saya mencoba melakukan itu, setidaknya saya melakukan kode yang ditulis dengan serius sebelum saya pergi untuk kembali ke arah alih-alih mencampur kode mabuk dengan kode mabuk, di mana titik komit log saya mungkin berbunyi seperti, "Reverting back to code written before Jagermeister shots."saya tidak melakukan ini sangat sering kecuali saya mendapat inspirasi kode mabuk, tetapi dalam kasus-kasus yang jarang, itu benar-benar membantu saya melakukan sesuatu sebelum saya keluar dan mabuk.


sumber
Aturan praktis untuk Anda: jika Anda memiliki dua komit berturut-turut dengan pesan yang sama, Anda hampir pasti salah. Entah mereka harus satu komit, atau Anda harus mencari tahu apa yang berbeda tentang mereka dan menulis pesan log yang mencerminkan perbedaan itu (misalnya "mendefinisikan data cat baru" dan "mengatur data cat dengan benar" daripada "bekerja pada sistem cat" x2).
Marnen Laibow-Koser