2010-03-16 18 views
23

Có cách nào đơn giản để thiết lập các tệp .gitignore khác nhau cho các điều khiển từ xa khác nhau không? Tôi có một kho lưu trữ, tôi đẩy lên cả Heroku và Github. Tôi cần database.yml cho Heroku, nhưng không muốn một số thông tin được đẩy lên Github. Vì vậy, tôi cần một tập tin .gitignore khác nhau cho mỗi điều khiển từ xa.Có cách nào để thiết lập từ xa cụ thể .gitignores?

Tôi đã thử có hai nhánh riêng biệt, một nhánh bỏ qua database.yml và một nhánh không có. Vấn đề là khi tôi thanh toán chi nhánh heroku và quay trở lại nhánh github của tôi, toàn bộ tệp database.yml đã biến mất.

Bất kỳ mẹo nào?

+0

FunkyMunky, bạn có tìm thấy giải pháp tốt cho vấn đề của mình không? –

Trả lời

5

Tôi không biết gì về các yêu cầu cho Heroku - hy vọng Tư pháp là đúng và bạn chỉ có thể tránh được vấn đề. Nếu bạn không thể, hoặc nếu ai đó tìm thấy người không thể ...

Nếu bạn muốn hai điều khiển từ xa là gương (có cùng cam kết), họ phải định nghĩa có cùng một tệp trong các cam kết đó . Vì vậy, bạn có hai lựa chọn: có file-for-repo-B trong tất cả các kho lưu trữ, ngay cả khi chúng không cần hoặc sử dụng luồng công việc hơi lộn xộn với hai nhánh: masterfor-repo-B. Sự khác biệt duy nhất giữa hai nhánh sẽ là các cam kết chạm vào file-for-repo-B; chi nhánh for-repo-B sẽ luôn hợp nhất từ ​​master (nhưng không bao giờ theo cách khác xung quanh!). Bây giờ bạn chỉ có một chi nhánh khác được kiểm tra trong repo B, và tất cả đều tốt.

10

Không đặt thông tin cơ sở dữ liệu trong database.yml. Thay vào đó, hãy sử dụng các biến môi trường Heroku.

+0

Quy tắc này áp dụng cho bất kỳ môi trường sản xuất nào khác, không chỉ là heroku. –

1

Bạn nên versionned a:

  • database.yml với chỉ biến trong nó, và
  • một kịch bản có khả năng thay thế các biến bởi các giá trị phải phụ thuộc vào máy chủ từ xa nơi mà database.yml được triển khai.

Sau đó, bạn sử dụng kịch bản như một smudge attribute filter driver:

smudge content filter

Mỗi lần bạn sẽ kiểm (và tạo ra một cây làm việc) trên một máy chủ từ xa, kịch bản được thực hiện và sẽ thay đổi các biến tương ứng, cung cấp cho bạn một tệp tùy chỉnh database.yml.
Nếu một trong những điều khiển từ xa không cần tệp database.yml, nó vẫn có thể ở đó, nhưng bị làm trống bởi tập lệnh smudge.

Các vấn đề liên quan