GNU/Linux >> Belajar Linux >  >> Linux

Apakah sebaiknya menggunakan git untuk mengontrol versi file konfigurasi?

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 (khususnya untuk mengonfigurasi instalasi baru) dan lebih percaya diri pada file konfigurasi saya. Dengan kontrol versi, saya memiliki catatan tentang apa perubahan dibuat dan pesan komit memberikan alasan mengapa perubahan itu dibuat. Jika perubahan memiliki efek samping yang tidak diinginkan, saya dapat dengan mudah meninjau log/riwayat untuk melihat perubahan apa yang menyebabkan efek tersebut.

Secara pribadi, saya berhati-hati dalam melacak semua file di bawah / direktori akar. Daftar jalur yang harus diabaikan bisa menjadi besar dan berat. Saya lebih suka menyimpan setiap kumpulan file logis di repositori mereka sendiri.

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

Untuk sistem file konfigurasi, saya menggunakan Git dengan Etckeeper untuk melacak file di /etc saya direktori.

Kekurangan

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

Etckeeper

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

Itu terhubung ke manajer paket seperti apt dan yum dan (dalam konfigurasi defaultnya), menjalankan pra dan pasca instalasi sehingga semua perubahan menjadi /etc dilacak.

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

  1. “menyimpan perubahan yang belum dikomit di /etc sebelum menjalankan yum”
  2. “melakukan perubahan pada /etc setelah menjalankan yum”

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

Ini juga mendukung pengiriman file konfigurasi ke repositori jarak jauh (yang tentu saja harus bersifat pribadi).

Konfigurasi

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

Komitmen otomatis harian

Perubahan dapat dilakukan secara otomatis oleh tugas cron harian . Ini bisa mengganggu karena repositori bisa berantakan dengan banyak pesan komit otomatis.

Saya menghapus tanda 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/.gitignore untuk menentukan file apa pun yang tidak boleh dilacak.

Lari pertama

Setelah mengonfigurasi, jalankan perintah berikut:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Jika direktori Anda saat ini adalah etc , Anda dapat menjalankan git biasa perintah, mis.,

sudo git status
sudo git log

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

Mungkin kumpulan pengalaman ini dapat memberi Anda gambaran yang lebih baik tentang apa yang mungkin Anda hadapi:

efek menginisialisasi repositori git pada direktori root linux 3:)

Permintaan maaf untuk "jawaban", alih-alih hanya melemparkan tautan dalam komentar; namun, perwakilan tidak cukup, tetapi ingin bergabung.

Edit

Wow! Jawaban yang sangat bagus oleh @AnthonyGeoghegan. Saya percaya ini bukanlah perjuangan seperti yang awalnya saya bayangkan.


Linux
  1. Cara Menggunakan Netcat untuk Mentransfer File di Linux

  2. Periksa file konfigurasi Linux untuk kesalahan sintaks

  3. Gunakan Temukan dan Temukan untuk mencari file di Linux

  1. Bagaimana Cara Menggunakan Inotifywait Untuk Menonton Direktori Untuk Pembuatan File Ekstensi Tertentu?

  2. Butuh editor hex yang bagus untuk Linux

  3. Membuka File Geodatabase di QGIS untuk Ubuntu?

  1. Script Shell Untuk Memindahkan File Terlama?

  2. Untuk Apa Inode Baik?

  3. Tunggu Beberapa File Selesai Diunduh?