2010-02-12 15 views
14

Ứng dụng của tôi được lưu trữ trên Heroku và tôi cũng có một repo công cộng.Sử dụng github để lưu trữ các kho lưu trữ git công cộng trong khi vẫn đảm bảo rằng các tệp dữ liệu nhạy cảm vẫn chưa được tải xuống

Ứng dụng của tôi có tệp cấu hình chứa thông tin đăng nhập amazon S3 của tôi. Điều quan trọng là phải đảm bảo rằng tệp được chuyển đến heroku nhưng không được chuyển vào github.

Vì vậy, tôi đã nghĩ rằng tôi có thể đẩy nhánh chính của tôi đến heroku và tạo ra một nhánh github riêng biệt và đảm bảo rằng tệp .gitignore tham chiếu đến tệp s3.yml của tôi. Sau đó tôi có thể thực hiện "git push origin github: master" để đẩy nhánh github vào github.com

Điều này làm việc tốt cho lần commit đầu tiên.

Nhưng sau đó tôi chuyển sang chi nhánh chính của mình, viết một số mã tuyệt vời và sau đó đẩy tất cả vào heroku. Sau đó tôi chuyển trở lại nhánh github của tôi và thực hiện "git merge master" để mã mới được thêm vào nó. Nhưng điều này làm cho các tệp s3.yml và gitignore từ nhánh chính được sao chép vào nhánh github. Cue phiên làm việc đầu bàn.

Có lời khuyên nào về cách giữ cho các chi nhánh được đồng bộ hóa trong khi đảm bảo rằng các tập tin không được theo dõi vẫn không bị xáo trộn. Tôi có thể yêu cầu git không hợp nhất trong tệp S3.yml không mong muốn và tệp .gitignore khác không?

Tôi có đang làm một con ngựa chết ở đây không? Tôi không thể biện minh cho thanh toán cho một tài khoản github tư nhân nào được nêu ra nhưng tôi tưởng tượng câu trả lời sẽ liên quan đến việc đó .... hoặc chuyển sang projectlocker

Tôi hy vọng rằng vấn đề này chỉ là các kỹ năng của tôi rằng có một cách .... cảm ơn trước

EDIT ::: Câu trả lời được chấp nhận là một giải pháp tuyệt vời, nhưng tôi vừa tìm thấy một giải pháp mới mà tôi thích hơn. Đọc về nó ở đây: http://docs.heroku.com/config-vars - những người thông minh tại Heroku có câu trả lời cho mọi thứ ... nghiêm túc tuyệt vời

+0

+1 cho giải pháp của heroku – Jimmy

+0

Giải pháp var cấu hình Heroku hoạt động nếu tất cả bạn quan tâm là các tham số như thông tin đăng nhập S3 của bạn. Nhưng tôi có thể thấy một tình huống mà, nói rằng, bạn muốn sử dụng cùng một repo để phát triển và để đẩy đến Heroku. Bạn muốn gửi thư mục node_modules của bạn đến Heroku (vì nó được khuyên dùng để có Heroku xây dựng lại mọi thứ) nhưng không phải Github hay Gitlab. Ngoài ra, bạn có thể có một số thư mục mà bạn không cần trên Heroku để triển khai hoạt động, như mã nguồn dựng sẵn. Đối với điều đó, bạn sẽ cần một trình điều khiển hợp nhất tùy chỉnh và nhiều nhánh. – neverfox

Trả lời

10

Nhưng điều này gây ra s3.yml và gitignore tập tin từ chi nhánh tổng thể để được sao chép vào chi nhánh github

Bạn có thể tránh điều đó với một tùy chỉnh hợp nhất tài xế đó sẽ đảm bảo cho Tệp .gitignore của nhánh github sẽ luôn giữ lại nội dung của nó trên một phần được hợp nhất từ ​​master.

Xem How do I tell git to always select my local version for conflicted merges on a specific file?

+0

Cảm ơn! Trình điều khiển hợp nhất tùy chỉnh chính xác là những gì tôi muốn! Nice viết lên bằng cách này. – stephenmurdoch

+1

Lưu ý rằng điều này có thể không làm những gì bạn muốn - người đứng đầu chi nhánh sẽ có tệp chính xác trong đó, nhưng nếu bạn đã hợp nhất bằng Git thì cam kết đầu sẽ có hai cha mẹ, cả hai đều có thể truy cập. Một sẽ từ nhánh github của bạn và nhánh kia từ nhánh master, vẫn chứa mật khẩu của bạn. –

2

trong SVN điều này được gọi là 'bỏ qua tệp' nên tôi cho rằng nó sẽ tương tự trong GIT - tôi không sử dụng GIT do đó, không báo cho tôi về điều này, nhưng tôi đã tìm thấy thông tin này trên trang web GitHub:

http://github.com/guides/ignore-for-git

Hy vọng rằng sẽ giúp

+0

Tôi đã sử dụng phương pháp chi tiết trên liên kết đó trong một thời gian, nhưng cảm ơn anyway :) – stephenmurdoch

0

Nếu bạn sử dụng một chi nhánh tên là Heroku là "thay thế của bạn master "branch (với dữ liệu nhạy cảm) và nhánh master cũ của bạn không có dữ liệu nhạy cảm, sau đó bạn luôn có thể làm

git merge master 

Vì vậy, bạn có thể đẩy nhánh heroku đến heroku không phải là nhánh chính.

+0

cảm ơn nhưng điều này vẫn dẫn đến cùng một vấn đề. nếu tôi phát triển trong nhánh heroku mới, tôi sẽ luôn cần phải hợp nhất các thay đổi vào nhánh master (github), có nghĩa là các file config được sao chép và nếu tôi phát triển trên nhánh master, thì tôi cần có cấu hình các tệp khả dụng nếu không ứng dụng của tôi sẽ không hoạt động trong quá trình phát triển. Cảm ơn mặc dù. – stephenmurdoch

1

Bạn có lẽ có thể di chuyển các tập tin "nguy hiểm" khỏi git hoàn toàn - ví dụ như có chúng trong ~/.yourapp hoặc một cái gì đó như thế.(điều đó không thực sự trả lời câu hỏi một cách trực tiếp nhưng phần mềm của nó có nhiều thứ như - .fetchmail, .ssh, ...) và sẽ cho phép những người dùng khác làm như vậy.