Câu trả lời ngắn cho câu hỏi của bạn là Có .
Tôi sẽ không ngần ngại giới thiệu Git (hoặc bất kỳ phần mềm kiểm soát phiên bản nào khác) để theo dõi các tệp cấu hình. Kể từ khi làm như vậy, tôi đã làm việc hiệu quả hơn (đặc biệt là để định cấu hình cài đặt mới) và có độ tin cậy cao hơn đối với các tệp cấu hình của mình. Với kiểm soát phiên bản, tôi có một bản ghi về những thay đổi đã được thực hiện và thông báo cam kết cung cấp lý do tại sao thay đổi được thực hiện. Nếu một thay đổi có tác dụng phụ ngoài ý muốn, tôi có thể dễ dàng xem lại nhật ký / lịch sử để xem những thay đổi nào gây ra hiệu ứng.
Cá nhân, tôi sẽ cảnh giác theo dõi tất cả các tệp trong /
thư mục gốc. Danh sách các đường dẫn để bỏ qua có thể trở nên lớn và khó sử dụng. Tôi thích giữ từng bộ tệp logic trong kho lưu trữ của riêng họ.
Tôi sử dụng Git theo cách thủ công để theo dõi các tệp cấu hình / khởi động cá nhân của mình , ví dụ: cấu hình Vim, hàm Bash, bí danh, v.v. - tương tự như cách tiếp cận được liệt kê trong Cách theo dõi $ HOME bằng git . Tôi giữ mỗi bộ tệp trong kho lưu trữ của riêng họ và sử dụng các liên kết tượng trưng đến thư mục chính.
Đối với các tệp cấu hình hệ thống , tôi sử dụng Git với Etckeeper để theo dõi các tệp trong /etc
thư mục của mình .
Hạn chế
Một vấn đề cần cảnh giác là nếu các tệp được theo dõi bao gồm các liên kết cứng . Khi Git được sử dụng để kiểm tra các tệp hoặc sửa đổi cây làm việc, nó sẽ hủy liên kết các tệp và sau đó tạo lại chúng . Xem Git, Dotfiles và Hardlinks để được giải thích đầy đủ hơn.
Vv
Etckeeper có thể được sử dụng để giữ toàn bộ lịch sử thay đổi được thực hiện cho / etc. Nó theo dõi siêu dữ liệu tệp mà các hệ thống kiểm soát sửa đổi thường không hỗ trợ, nhưng điều đó rất quan trọng /etc
, chẳng hạn như các quyền của /etc/shadow
.
Nó móc vào các trình quản lý gói như apt và yum và (trong cấu hình mặc định của nó), chạy trước và sau khi cài đặt để tất cả các thay đổi /etc
được theo dõi.
Nếu một gói được cài đặt hoặc gỡ bỏ, tất cả các thay đổi không được cam kết trong / etc sẽ được cam kết trước khi vận hành gói để có hai lần xác nhận:
- Tiết kiệm những thay đổi không được cam kết trong / etc trước khi chạy yum
- Cam kết thay đổi trong / etc sau khi chạy yum
Tôi đã sử dụng nó với các bản phân phối dựa trên Debian và Red Hat và tôi biết nó hỗ trợ quản lý gói Arch. Tôi không thể nói nó sẽ tự động thêm bao nhiêu vào hệ thống Gentoo nhưng một gói có sẵn cho nó .
Nó cũng hỗ trợ đẩy các tập tin cấu hình vào một kho lưu trữ từ xa
(tất nhiên là ở chế độ riêng tư).
Cấu hình
Sau khi cài đặt gói, bạn có thể cần phải định cấu hình gói ( /etc/etckeeper/etckeeper.conf
), ví dụ: trên các hệ thống Ubuntu, hệ thống kiểm soát phiên bản mặc định được thay đổi từ Git thành Bazaar. Bạn cũng có thể muốn vô hiệu hóa các cam kết tự động hàng ngày .
Autocommits hàng ngày
Thay đổi có thể được tự động cam kết bởi một công việc định kỳ hàng ngày . Điều này có thể gây phiền nhiễu vì kho lưu trữ có thể bị lộn xộn với nhiều thông điệp cam kết tự động.
Tôi bỏ ghi chú thích hợp trong /etc/etckeeper/etckeeper.conf
:
sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf
Bỏ qua các tập tin nhất định
Chỉnh sửa /etc/.gitignore
để chỉ định bất kỳ tệp nào không nên được theo dõi.
Lần chạy đầu tiên
Sau khi cấu hình, chạy các lệnh sau:
sudo etckeeper init
sudo etckeeper commit "Initial commit"
Nếu thư mục hiện tại của bạn là etc
, bạn có thể chạy các git
lệnh thông thường , ví dụ:
sudo git status
sudo git log