Saya sedang mengembangkan situs web dalam php di localhost dan ketika modul-modulnya selesai, saya mengunggahnya di cloud sehingga teman-teman saya bisa mengujinya.
Ketika saya terus berkembang, saya punya banyak file dan saya kehilangan jejak file mana yang telah saya edit atau ubah dll. Saya pernah mendengar sesuatu sebagai 'kontrol versi' untuk mengelola semua itu tetapi tidak yakin bagaimana cara kerjanya.
Jadi, pertanyaan saya adalah: Apakah ada cara / layanan / aplikasi yang mudah tersedia bagi saya untuk melacak semua pengeditan / perubahan / file baru dan mengelola file saat saya mengembangkan situs web. Segera setelah saya selesai dengan sebuah modul, saya ingin mengunggahnya di cloud (Saya menggunakan Amazon Cloud Service). Jika terjadi sesuatu pada file baru, saya mungkin ingin kembali ke file lama. Dan mungkin, dalam satu atau dua klik, saya bisa melihat file yang telah saya edit atau ubah sejak yang terakhir saya unggah?
sumber
Jawaban:
Manajemen konfigurasi perangkat lunak , di mana Kontrol Versi menjadi bagiannya, sedikit lebih rumit daripada melacak perubahan pada file, walaupun Anda tentu bisa mulai dengan itu. Tapi baca artikel Wikipedia yang ditautkan di atas bersama dengan tutorial Joel Spolky tentang Mercurial .
Untuk memulai, pilih salah satu Mercurial, GIT, atau Bazaar, dalam urutan itu, dan instal bersama dengan alat untuk IDE dan sistem operasi Anda (saya lebih suka Mercurial dengan HGE untuk Eclipse).
Dengan file Anda di repositori, Anda dapat mengetahui perbedaan antara dua versi file atau direktori, atau proyek lengkap ( hg diff ), melihat riwayat perubahan ( hg hist ), dan memutar kembali perubahan ( hg up -r ).
Merupakan ide bagus untuk memberi tag (tag hg ) repositori sebelum menerbitkan kode Anda sehingga ada cara mudah untuk kembali ke apa yang Anda terbitkan untuk amandemen atau perbandingan.
Jika Anda ingin bereksperimen dengan jalur pengembangan yang berbeda, lakukan dalam cabang sederhana dengan mengkloning repositori utama ( klon hg ) dan tidak mendorong kembali sampai eksperimen tersebut konklusif. Semudah memiliki direktori kerja yang berbeda untuk percobaan.
Jika percobaan adalah untuk versi baru, versi yang ditingkatkan kemudian klon dan kemudian cabang ( cabang hg ) sehingga Anda dapat menyimpan semua salinan dari repositori yang diperbarui tanpa satu percobaan mengganggu yang lain.
Linus Torvalds (yang berurusan dengan puluhan ribu file dan jutaan baris kode dalam proyeknya) memberi ceramah di Google tentang mengapa alat itu tidak bisa CVS, SVN, atau salah satu dari banyak yang gratis dan komersial di sekitar ; sangat layak ditonton.
sumber
I lose track of which file I've edited or changed
. HGE dapat melakukan ini juga, saya belum menggunakannya..xcodeproj
file yang Xcode gunakan untuk proyek iOS dianggap sesuatu yang harus diabaikan Mercurial, atau apakah penting untuk menjaga file tetap sinkron?Saya akan sangat merekomendasikan Git. Pelajari tentang ini di sini: https://lab.github.com/
Jika Anda tidak menyukai Git, ada solusi kontrol versi lainnya. Anda mungkin memeriksa SVN.
sumber
Apakah hanya Anda ?, gunakan DVCS
Seperti kontra-intuitif seperti kedengarannya, Sistem Kontrol Versi Terdistribusi (mercurial, git, bazaar) lebih baik untuk memulai daripada sistem terpusat (svn, cvs). Mengapa ?, Anda menginstalnya di mesin Anda dan menjalankan repositori Anda secara lokal, dan hanya itu. Pada sistem terpusat seperti svn Anda perlu mengatur klien dan server Anda ... dan kemudian, Anda harus terhubung ke server untuk menyimpan perubahan Anda.
Dengan DVCS, Anda, repositori lokal, dan jika Anda mau, Anda dapat menggunakan layanan seperti bitbucket.org atau github.com.
IMHO, lincah adalah DVCS yang lebih ramah dan berkemampuan sama.
Apakah ada yang lain ?, gunakan DVCS!
Ada banyak keuntungan ketika menggunakan DVCS untuk bekerja dengan tim, yang paling penting berbeda dengan sistem terpusat adalah bahwa tidak ada ras komit dan ini karena, secara teknis, repositori masing-masing individu adalah cabang, dan ketika Anda berbagi perubahan cabang-cabang tersebut digabung untuk Anda dan Anda bahkan tidak menyadarinya, artinya alih-alih memiliki riwayat versi seperti ini, di mana Anda memiliki orang-orang yang menyalurkan pekerjaan mereka pada garis lurus:
Anda akhirnya memiliki sesuatu seperti ini, di mana semua orang melakukan ad hoc:
Masing-masing hanya khawatir tentang pekerjaan mereka sendiri saat versi (yaitu tidak berlomba untuk melakukan) dan tidak khawatir tentang koneksi ke server hanya untuk melakukan.
Semoga berhasil
sumber
Singkatnya, ada banyak alternatif, di antaranya Subversion (SVN) dan Git tampaknya paling populer (sehingga termudah untuk menemukan solusi di web).
Keduanya berbeda. SVN lebih sederhana, tetapi Git tidak mengharuskan Anda untuk memiliki server untuk memulai - Anda dapat mengontrol versi secara lokal.
Dengan asumsi Anda memiliki Linux dan ingin mulai menggunakan Git:
Semoga ini bisa membantu Anda memulai.
sumber
Seperti yang disarankan Apalala, saya sarankan checkout hginit . Karena Anda baru mengenal kontrol versi, Anda dapat melewati halaman pertama. Itu seharusnya memberi Anda intro yang bagus, setelah itu Anda dapat memposting di SO jika Anda memiliki pertanyaan spesifik.
sumber
Saya akan menentang opini mayoritas, dan merekomendasikan Subversion. Subversi mudah digunakan, dan melakukan semua hal yang dibutuhkan individu dan tim kecil. Ini adalah produk yang matang, sehingga setiap IDE di luar sana memiliki dukungan yang baik untuk itu. Ya, itu tidak memiliki semua fitur Git. (Saya tidak pernah menggunakan Mercurial, jadi saya tidak akan membicarakannya.) Tetapi kebanyakan pengembang sebenarnya tidak membutuhkan fitur-fitur yang ditambahkan.
Beberapa tempat penyimpanan? Saya yakin ada beberapa kegunaan yang sah untuk itu, tapi saya tidak pernah bertemu dengannya.
Mampu membuat komitmen lokal, tanpa akses jaringan? Itu bagus untuk dimiliki, jika Anda membuat beberapa perubahan terpisah, dan Anda tidak dapat mengakses server repositori - tetapi jujur, seberapa sering hal itu terjadi?
Git memang membuatnya lebih mudah untuk berurusan dengan percabangan dan penggabungan. Tapi untuk tim satu orang, itu bukan masalah besar.
Untuk sesuatu pada skala kernel Linux - ya, gunakan Git. Bagi kita semua, Subversi cukup bagus.
sumber
Saya pikir Sistem Kontrol Versi Terdistribusi akan berjalan dengan baik. Pilihan yang umum disarankan adalah Git dan Mercurial (Hg). Alat grafis dapat membantu, karena Mercurial saya sarankan TortoiseHg .
sumber