Những gì tôi làm (với cùng một mục tiêu) là đặt các tệp cấu hình của tôi trong thư mục con ~/lib
và có các liên kết tượng trưng trong thư mục chính của tôi, ví dụ : .emacs -> lib/emacs/dot.emacs
. Tôi chỉ giữ các tệp cấu hình mà tôi đã viết rõ ràng dưới sự kiểm soát phiên bản; thư mục nhà của tôi chứa rất nhiều tệp chấm được tạo tự động không thuộc kiểm soát phiên bản. Do đó, ~/lib
dưới sự kiểm soát phiên bản, và thư mục nhà của tôi thì không.
Tôi có một tập lệnh tạo các liên kết tượng trưng từ các tập tin bên dưới ~/lib
. Khi tôi tạo một tài khoản trên một máy mới, tôi sẽ điền nó bằng cách kiểm tra ~/lib
và chạy tập lệnh đó.
Kinh nghiệm của tôi là với CVS, không phải git, vì vậy nó không thể chuyển nhượng 100%. Một trong những lý do tôi đã không đặt thư mục nhà của mình ngay dưới CVS là vì nó ~/.cvsignore
sẽ áp dụng cho tất cả các kiểm tra CVS của tôi chứ không chỉ thư mục nhà của tôi; git không có vấn đề này Nhược điểm của cách tiếp cận đó so với việc có thư mục chính dưới sự kiểm soát phiên bản là bạn không thể sử dụng git status
để phân biệt giữa một tệp mà bạn đã quyết định bỏ qua một cách rõ ràng (sẽ được liệt kê trong tệp bỏ qua, vì vậy không được hiển thị) tập tin mà bạn không có ý kiến về (sẽ được hiển thị với a ?
).
Một số tệp cần phải khác nhau trên các máy khác nhau. Tôi đặt chúng trong một thư mục được gọi ~/Local/SITENAME/lib
và cũng tạo các liên kết tượng trưng cho chúng hoặc (đối với các định dạng tệp hỗ trợ nó) có một lệnh bao gồm trong tệp bên dưới ~/lib
. Tôi cũng có một liên kết tượng trưng ~/Here -> ~/Local/SITENAME
. Vì git, không giống như CVS, được thiết kế để hỗ trợ các kho lưu trữ hầu hết tương tự nhưng không giống nhau, có thể có một cách tốt hơn để quản lý các tệp cụ thể của máy. Một số tệp chấm của tôi trên thực tế không phải là liên kết tượng trưng, nhưng được tạo tự động từ nội dung bên dưới ~/lib
và ~/Here
.