Chúng tôi sử dụng git cho hầu hết các ứng dụng web mà chúng tôi xây dựng trong cửa hàng của mình và mặc dù bản thân ứng dụng sử dụng nhiều công nghệ khác nhau (PHP, Rails, v.v.) máy chủ cho mỗi trang web. Thông thường, các máy chủ này có các bộ thông tin xác thực cơ sở dữ liệu khác nhau cũng như các cài đặt cấu hình dựa trên môi trường khác nhau (ví dụ: bộ nhớ đệm). Luồng công việc của chúng tôi thường liên quan đến việc duy trì hai nhánh git cho mỗi dự án: chủ, phản ánh máy chủ sản xuất và dàn dựng, phản ánh dàn dựng. Các tính năng mới được phát triển trên dàn dựng (hoặc một nhánh phụ) và được sáp nhập trở lại làm chủ khi hoàn thành và triển khai.Git: cấu hình ứng dụng và các môi trường khác nhau
Câu hỏi của tôi là liên quan đến cách tốt nhất để duy trì các tệp cấu hình chuyên biệt về chi nhánh và môi trường. Tôi đã nhìn thấy câu trả lời từ các câu hỏi tương tự here và here và không thực sự thỏa mãn. Hai cách tiếp cận chính dường như là a) sử dụng loại trừ .gitignore để rời khỏi các tệp cấu hình bên ngoài chế độ xem của git, hoặc b) viết mã phản chiếu, nhận biết môi trường xác định ví dụ: những thông tin cơ sở dữ liệu nào để sử dụng dựa trên tên máy chủ. Vấn đề của tôi với a) là nó chỉ cho phép một tập hợp các tệp cấu hình tồn tại trong codebase (không phụ thuộc vào nhánh hiện tại), do đó các tệp cấu hình của môi trường khác bị mất. b), mặt khác, dường như yêu cầu sửa đổi không cần thiết của codebase theo cách không liên quan đến chức năng của ứng dụng. Lý tưởng nhất, tôi muốn một cách để "khóa" tập tin cấu hình trong một nhánh nhất định, để bất cứ khi nào tôi kiểm tra tổng thể, tôi nhận được các tập tin cấu hình chủ, và bất cứ khi nào tôi kiểm tra dàn dựng, tôi nhận được các tập tin cấu hình dàn dựng. Ngoài ra, việc hợp nhất dàn trang thành chính sẽ không ảnh hưởng đến các tệp cấu hình chính theo bất kỳ cách nào. Đến nay, chúng tôi đã xử lý điều này bằng cách có các thư mục chứa các tệp cấu hình dành riêng cho môi trường bên ngoài gốc git và di chuyển các tệp thích hợp vào codebase khi triển khai, nhưng điều này tất nhiên là không cần thiết (và nguy hiểm).
Có cách nào để thực hiện điều này bằng git không?
Cảm ơn bạn đã cân nhắc!
Sẽ http://stackoverflow.com/questions/2154948/how-can-i-track-system-specific-config-files-in-a-repo-project/2155355#2155355 kết hợp với http: // stackoverflow .com/questions/3207575/how-do-i-open-source-my-rails-apps-không-cho-đi-ứng dụng-bí mật-keys-và/3207608 # 3207608 trợ giúp ở đây? – VonC