Apakah ide yang baik untuk menggunakan git untuk mengendalikan versi file konfigurasi?

18

Saya menggunakan Gentoo Linux dan memiliki konfigurasi yang agak rumit. Pertanyaan saya apakah sebaiknya menggunakan git untuk versi yang mengontrol file konfigurasi saya?

Saya memiliki beberapa repositori git di rumah saya, dugaan saya jika saya meletakkan / home / ** ke .gitignore saya, mereka tidak akan menimbulkan masalah.

Pembaruan klarifikasi:

Apakah ini metode yang bijaksana untuk menggunakan git untuk mengontrol versi file konfigurasi tingkat sistem saya di direktori root "/"?

atevm
sumber
@AnthonyGeog sudah mulai ingin melacak direktori root "/" saya apa yang dapat menyebabkan konsekuensi yang menarik di masa depan sehingga utas tertaut hanya menjawab sebagian pertanyaan saya. Bagian lain: apakah lebih baik menggunakan git untuk versi yang mengontrol file konfigurasi saya masih belum dijawab
atevm
1
@AnthonyGeoghegan terima kasih. Saya memperbarui pertanyaan.
atevm

Jawaban:

19

Jawaban singkat untuk pertanyaan Anda adalah Ya .


Saya tidak akan ragu untuk merekomendasikan Git (atau perangkat lunak kontrol versi lainnya) untuk melacak file konfigurasi. Sejak melakukannya, saya menjadi lebih produktif (terutama untuk mengkonfigurasi instalasi baru) dan lebih percaya diri pada file konfigurasi saya. Dengan kontrol versi, saya memiliki catatan tentang perubahan apa yang dibuat dan pesan komit memberikan alasan mengapa perubahan itu dilakukan. Jika perubahan memiliki efek samping yang tidak diinginkan, saya dapat dengan mudah meninjau log / riwayat untuk melihat perubahan apa yang menyebabkan efek.

Secara pribadi, saya akan berhati-hati melacak semua file di bawah /direktori root. Daftar jalan untuk diabaikan bisa menjadi besar dan berat. Saya lebih suka menyimpan setiap set file logis dalam repositori mereka sendiri.

Saya secara manual menggunakan Git untuk melacak konfigurasi pribadi saya / file start-up, misalnya, konfigurasi Vim, fungsi Bash, alias, dll. - mirip dengan pendekatan yang tercantum dalam Cara melacak $ HOME dengan git . Saya menyimpan setiap set file dalam repositori mereka sendiri dan menggunakan tautan simbolik ke direktori home.

Untuk file konfigurasi sistem , saya menggunakan Git dengan Etckeeper untuk melacak file dalam /etcdirektori saya .

Kekurangannya

Satu masalah yang harus diwaspadai adalah jika file yang dilacak menyertakan tautan keras . Ketika Git digunakan untuk memeriksa file atau memodifikasi pohon yang berfungsi, itu memutuskan tautan file dan kemudian membuatnya kembali . Lihat Git, Dotfiles, dan Hardlinks untuk penjelasan lebih lengkap.

Penjaga Etc

Etckeeper dapat digunakan untuk menyimpan riwayat penuh perubahan yang dilakukan pada / etc. Ini melacak metadata file yang sistem kontrol revisi biasanya tidak mendukung, tetapi itu penting untuk /etc, seperti izin /etc/shadow.

Itu kait ke manajer paket seperti apt dan yum dan (dalam konfigurasi default-nya), berjalan sebelum dan sesudah instalasi sehingga semua perubahan untuk /etcdilacak.

Jika paket diinstal atau dihapus, semua perubahan yang tidak dikomit di / etc akan dilakukan sebelum operasi paket sehingga ada dua komitmen:

  1. “Menyimpan perubahan yang tidak dikomit di / dll sebelum menjalankan yum”
  2. “Melakukan perubahan pada / etc setelah yum run”

Saya telah menggunakannya dengan distribusi berbasis Debian dan Red Hat dan saya tahu itu mendukung manajemen paket Arch. Saya tidak bisa mengatakan berapa banyak otomasi yang akan ditambahkan ke sistem Gentoo tetapi sebuah paket tersedia untuk itu .

Ini juga mendukung mendorong file konfigurasi ke repositori jarak jauh (yang tentunya, harus pribadi).

Konfigurasi

Setelah menginstal paket Anda mungkin perlu mengkonfigurasinya ( /etc/etckeeper/etckeeper.conf), misalnya, pada sistem Ubuntu sistem kontrol versi default diubah dari Git ke Bazaar. Anda mungkin juga ingin menonaktifkan komitmen otomatis harian .

Autocommits harian

Perubahan dapat dilakukan secara otomatis oleh pekerjaan cron harian . Ini dapat mengganggu karena repositori dapat menjadi berantakan dengan beberapa pesan komit otomatis.

Saya batalkan komentar pada baris yang sesuai di /etc/etckeeper/etckeeper.conf:

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Abaikan file tertentu

Edit /etc/.gitignoreuntuk menentukan file apa saja yang tidak boleh dilacak.

Lari pertama

Setelah mengkonfigurasi, jalankan perintah berikut:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Jika direktori Anda saat ini adalah etc, Anda dapat menjalankan gitperintah biasa , misalnya,

sudo git status
sudo git log
Anthony G - keadilan untuk Monica
sumber
1
Wow, itu sangat berguna dan terperinci ... terima kasih :)
atevm
Hanya untuk memperbarui jawaban yang ditulis dengan sangat baik: etckeeperselama komit harian sebenarnya akan memeriksa dulu apakah /etc"tidak bersih", yaitu, ia memiliki file yang tidak dikomit. Jika tidak, itu tidak akan dilakukan. Jadi, jika log komit Anda penuh dengan komitmen harian, kemungkinan ada file yang berubah setiap hari yang belum Anda tambahkan ke .*ignorefile :-)
pepoluan
Juga, pada Ubuntu memiliki kecenderungan menjengkelkan ini segera melakukan bzr init--__-- ... Saya sarankan selalu berjalan etckeeper uninit -fsetelah instalasi.
pepoluan
Perhatikan, bahwa penjaga etc jelas tidak lagi dihosting di github. Mereka menggunakan sistem mereka sendiri di beranda mereka sekarang. Mungkin beberapa M $ keengganan di sisi penulis. Secara pribadi saya menemukan bahwa keputusan yang disayangkan seperti sekarang Anda tidak dapat dengan mudah melaporkan masalah dan tidak dapat melihat seberapa populer proyek ini.
Michael Härtl
Terima kasih @ MichaelHärtl Saya telah menghapus tautan usang ke repo GitHub.
Anthony G - keadilan untuk Monica
3

Saya menggunakan git untuk melacak area spesifik dari direktori home saya. Secara pribadi, saya tidak akan menempuh jalur melacak direktori root, tetapi saya harus mengatakan bahwa saya mengagumi ambisi Anda. :)

Mungkin kumpulan pengalaman ini bisa memberi Anda ide yang lebih baik tentang apa yang mungkin Anda hadapi:

efek menginisialisasi repositori git pada direktori root linux 3 :)

Permintaan maaf atas "jawaban", alih-alih hanya melemparkan tautan dalam komentar; Namun, tidak cukup perwakilan, tetapi ingin berpadu.

Edit

Wow! Jawaban yang sangat bagus dari @AnthonyGeoghegan. Saya percaya ini bukan perjuangan seperti yang saya bayangkan sebelumnya.

Michael Stilson
sumber
0

Saya juga menggunakan gituntuk menyimpan dan memelihara dotfiles, tetapi dalam git bare repository. Panduan terperinci dapat ditemukan sini . Saya menggunakan dua repositori, satu untuk pengguna saya bernama dotfiles myconfdan satu untuk root dotfiles bernama rootconf.

Selain itu Anda dapat menggunakan kedua konfigurasi di banyak mesin, Distribusi Linux atau Mesin Virtual yang berbeda: Cukup buat cabang baru untuk konfigurasi yang berbeda. Maka Anda menghindari mencampur kode dalam file yang sama (misalnya .bash_alias): Tidak mengganggu jika ingin memeriksa mesin saat ini lagi; tidak ada tautan yang dibutuhkan!

Chris
sumber