Beberapa bulan yang lalu saya menggali Subversion dan GIT dan kecewa. Mereka menangani KODE SUMBER baik-baik saja tetapi tidak pada aspek lainnya. Misalnya, situs web di bawah kontrol versi perlu mengelola kepemilikan file / direktori, akses baca & tulis file / direktori, Daftar Kontrol Akses, cap waktu, konten basis data. dan tautan eksternal. Apakah ada sistem kontrol versi yang dapat melakukan pengembalian yang sempurna seperti memuat ulang dari cadangan yang berumur sebulan?
17
Jawaban:
Anda bingung tentang peran sistem kontrol versi. Ini bukan dan tidak pernah dimaksudkan sebagai sistem cadangan untuk situs web yang sedang berjalan. Ia melakukan pekerjaan yang sangat baik dalam mengelola konten statis sehingga ia dapat berproduksi secara terkendali. Dengan penggunaan penandaan dan checkout yang tepat, bahkan situs yang cepat berubah dapat disimpan dalam sistem kontrol versi.
Sistem kontrol versi akan dapat memberi tahu Anda bagaimana Anda mendapatkan dari apa yang tampak seperti situs bulan lalu hingga seperti apa hari ini (setidaknya untuk komponen-komponen yang berada di bawah kendali sumber). Ini harus mencakup semua yang Anda butuhkan untuk membangun kembali situs web (tidak termasuk konten dinamis). Seperti yang telah dicatat oleh orang lain, setiap perubahan pada izin dan kepemilikan harus ditulis, dan skrip itu dimasukkan dalam kontrol versi.
Izin akses untuk situs web biasanya cukup sederhana. (Pada dasarnya, Anda perlu memastikan bahwa server web dapat membaca semua konten dan menulis sangat sedikit.) Dengan pengecualian kepemilikan direktori dari beberapa direktori yang perlu ditulis oleh subversi web-server, dan mungkin git, tentu saja dapat menangani izin. Direktori yang dapat ditulis oleh server web biasanya berisi konten dinamis (dibuat dan diperbarui dari situs web), yang dikelola secara terpisah dari sumber situs web.
Jika saya diminta untuk bekerja dengan situs web dengan izin dan ACL yang rumit di situs web Anda, saya akan memiliki keprihatinan serius tentang proses yang digunakan untuk mengelola situs web. Menerapkan sistem kontrol versi dan memindahkan ACL ke sana akan menjadi salah satu solusi yang akan saya pertimbangkan dengan serius.
Konten dinamis, seperti entri atau komentar blog, biasanya terkandung dalam database atau data lain daripada kontrol versi yang digunakan untuk membangun situs. Penyimpanan data dapat diatur untuk menyediakan kontrol versi kontennya (seperti perangkat lunak ini). Banyak wiki menggunakan sistem kontrol versi untuk melacak revisi.
EDIT:
Masalah-masalah ini dapat diatasi dengan mengimpor situs ke sistem kontrol versi dan mengubah proses Anda sehingga situs master diperbarui melalui sistem itu. (a), (b), dan (c) ditangani langsung oleh kontrol versi. Anda mungkin ingin menandai rilis untuk membuat (c) berfungsi lebih baik. (D) umumnya tidak menjadi masalah jika Anda hanya memiliki sistem penyebaran mengubah situs Anda. Saya tidak pernah membutuhkan ACL pada konten situs.
(e) seharusnya hanya dijalankan pada kreasi awal dan perubahan besar. Mungkin juga termasuk skrip yang memperbarui situs dari kontrol versi dan sering berjalan. Skrip ini cenderung sangat sederhana ketika Anda menjaga situs Anda dalam sistem kontrol permusuhan.
Karena itu tidak diperlukan jika Anda menggunakan sistem kontrol versi.
CVS dan Subversion melacak apa yang perlu Anda lacak jika Anda menggunakannya. Mereka tidak akan melacak hal yang perlu Anda lacak karena Anda tidak menggunakan sistem kontrol versi, juga tidak seharusnya. Mereka melacak apa yang Anda perlu lacak ketika Anda menggunakan sistem kontrol versi.
Saya telah bekerja dengan beberapa situs yang mengelola konten mereka menggunakan kontrol versi. Semua memiliki persyaratan yang berbeda untuk pementasan situs, frekuensi penyebaran, dan kelengkapan pembaruan. Setelah situs berada dalam kontrol versi memenuhi persyaratan lainnya relatif mudah dipenuhi. Dokumentasi untuk CVS dan Subversion memberikan saran untuk kemungkinan metode pembaruan.
Anda mungkin memerlukan ACL untuk membatasi akses ke area tertentu di dalam konten yang dikendalikan versi. Namun, saya cenderung bekerja berdasarkan kepercayaan. Kontrol versi memudahkan untuk melihat siapa yang melakukan apa saat itu. Jika Anda tidak memformat ulang file, mudah untuk mendapatkan riwayat anotasi file yang menunjukkan siapa yang menambahkan baris mana saat itu.
sumber
Semuanya dan tidak ada sama sekali.
Merupakan ide yang buruk untuk mendapatkan kontrol sumber untuk mengelola detail-detail itu secara langsung, sesuai dengan pertanyaan Anda.
Namun, Anda dapat menulis skrip bash (* nix) atau skrip powershell (Windows), yang mencapai salah satu atau semua tujuan tersebut. Script ini dapat disimpan dalam kontrol sumber.
Kemudian Anda dapat menjadikan skrip itu sebagai salah satu artefak buatan Anda dan menjalankannya sebagai bagian dari penggunaan Anda.
sumber
IMHO sistem kontrol versi itu sendiri tidak dimaksudkan untuk digunakan dengan cara itu.
Tapi yang saya cenderung lakukan adalah memastikan bahwa Anda bisa mendapatkan versi dari kontrol sumber Anda hanya perlu menjalankan satu file build / file PowerShell dan semuanya sudah berjalan dan berjalan kembali.
Untuk ini, Anda perlu:
sumber
Saya percaya apa yang Anda butuhkan dalam kasus Anda adalah alat manajemen konfigurasi . Yang saya gunakan adalah boneka .
Mengutip Anda:
Saya telah melakukannya dengan satu baris (memastikan pengguna ada, memastikan direktori ada, dll) ...
Jika ini adalah ACL windows maka ada alat CM spesifik untuk windows ...
lagi perintah unix sentuh dalam satu baris dalam skrip boneka bisa melakukan ini untuk Anda.
Itu membangun dalam banyak kerangka kerja, pekerjaan cron yang memastikan semuanya ada di sana?
Tidak tahu apa-apa tentang itu.
Tentu saja setelah Anda menulis kode Manajemen Konfigurasi Anda, Anda mungkin ingin meletakkannya (atau mengambilnya di sistem yang terlibat) pada sistem kontrol versi. Anda tidak akan lolos dari itu :-).
sumber
Ada sistem kontrol versi akhir yang mengelola semua aspek dari semua dokumen digital. Itu disebut Xanadu dan diciptakan oleh Theodor Holm Nelson pada tahun 1960, bahkan sebelum hal-hal seperti sistem file umum. Jadi secara teori semuanya terpecahkan dengan sempurna. Dalam praktiknya, Xanadu tidak pernah diimplementasikan seperti yang dibayangkan oleh Nelson, tetapi mengilhami banyak sistem yang lebih khusus, termasuk Web dan sistem kontrol versi. Karya-karya Nelson masih layak dibaca - dan mereka dapat menjawab pertanyaan mengapa tidak ada VCS umum yang mengelola semua aspek.
sumber