2013-06-07 35 views
7

Tôi có một dự án django và tôi đang sử dụng git.Bỏ qua một tệp khi hợp nhất - nhưng bao gồm tệp đó trong các lần đẩy

Tôi cần phải có các tệp settings.py khác nhau, cho mỗi chi nhánh.

Tôi đã thử nghiệm thêm cài đặt.py .gitattributes with merge = ours, nhưng nó không hoạt động vì nếu nó không có xung đột Git sẽ hợp nhất bình thường.

Ngoài ra, hãy thêm settings.py vào .gitignore không phải là một tùy chọn, nếu tôi thay đổi thứ gì đó trong settings.py, tôi muốn nó được đẩy đến cùng một chi nhánh.

Có cách nào bỏ qua tệp khi hợp nhất nhưng vẫn đẩy nó không?

UPDATE:

Tôi đã thử giải pháp VonC và tôi đã tạo ra hai thiết lập: settings_production.py và settings_development.py.

Vì vậy, tôi PIP cài đặt gitpython và sử dụng nó trong settings.py của tôi, như thế này:

from git import Repo 
import os 

r = Repo(os.path.realpath(os.path.dirname(__file__))) 
if r.active_branch.__str__(== 'master': 
    from settings_production.py import * 
else: 
    from settings_development.py import * 

Và nó làm việc tốt.

+0

bản sao có thể có của [Phân nhánh: các tệp cấu hình khác nhau để phát hành/phát triển] (http://stackoverflow.com/questions/9636492/branching-different-config-files-for-release-development) –

Trả lời

1

tôi thích có phiên bản:

  • một tập tin mẫu settings.py.tpl
  • một tập tin giá trị cho mỗi chi nhánh: settings.py.branch1 trong branch1, settings.py.branch2 trong branch2 ... (có nghĩa là, không có vấn đề hợp nhất bao giờ: mỗi tập tin giá trị vẫn bị ảnh hưởng)
  • một tập lệnh có thể phát hiện nhánh hiện tại, lấy tệp giá trị phù hợp và xây dựng từ tệp mẫu cuối cùng settings.py (riêng tư cho cây đang hoạt động của bạn: nó không bao giờ được phiên bản)

Tập lệnh đó có thể được tự động gọi thông qua số content filter driver, trong khi thanh toán, hãy tạo tệp cấu hình đúng.

smudge

Một .gitattributes file có thể đăng ký đó smudge 'kịch bản cho settings.py.* tập tin.
(không cần cho một 'clean' kịch bản trên checkin)

0

Đó là một trong hai giải pháp VonC, hoặc bạn thực hiện tập tin settings.py của bạn, nơi bạn kiểm tra mà chi nhánh đó là trong và mã cụ thể chi nhánh nhập khẩu từ một settings-branchX.py. Giải pháp này khá gần với VonC, nhưng bạn đang làm nó trong python, và không rối tung với git.

Bạn có thể lấy cảm hứng từ đó gist.

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