2009-05-28 7 views
17

Trong trường hợp của tôi, tôi có một chương trình phân tích các tệp đầu vào dữ liệu và tạo ra các tệp đầu ra dữ liệu khác. Tôi muốn phiên bản kiểm soát chương trình, và tôi muốn phiên bản kiểm soát các tập tin dữ liệu, và như là một vấn đề ưu tiên, tôi muốn có bản sao làm việc của các tập tin dữ liệu trong bản sao làm việc của chương trình. Tôi muốn chương trình và dữ liệu được phiên bản kiểm soát riêng biệt để giảm "tiếng ồn". Chương trình không có sự phụ thuộc vào các tệp dữ liệu.Git submodules là cách an toàn duy nhất để có bản sao làm việc trong bản sao làm việc?

Nếu tôi sử dụng git submodules, sau đó khi mọi thứ xảy ra trong thư mục dữ liệu (cập nhật cam kết tôi nghĩ), kiểm soát phiên bản cho chương trình ghi chú rằng có cập nhật với submodule. Điều này sẽ hữu ích nếu chương trình phụ thuộc vào dữ liệu nhưng không.

Trong trường hợp như vậy, có thể có một bản sao làm việc trong một bản sao làm việc khác mà không sử dụng các mô-đun con git không?

Trả lời

20

Có thể chỉ đơn giản là "lồng" bản sao làm việc trong Git. Vì vậy, nếu bạn sao chép kho lưu trữ chương trình của mình, thì bên trong sẽ tạo một bản sao các tệp dữ liệu của bạn, sau đó bạn có thể làm việc với chúng một cách độc lập. Khi Git thực hiện các thao tác tệp, nó tìm kiếm lên cây thư mục tìm kiếm thư mục .git, do đó các thao tác Git được thực hiện trong kho dữ liệu sẽ không ảnh hưởng đến kho lưu trữ chương trình. Nếu bạn làm điều này, bạn có thể muốn thêm tên của thư mục dữ liệu vào .gitignore để giảm tiếng ồn từ kho chương trình.

+0

Thích nghe điều này. Có bất cứ điều gì có thể đi sai với cách tiếp cận này? Hoặc nó chỉ hoạt động? –

+3

@ChristopherJamesCalo: Tôi không biết bất cứ điều gì có thể đi sai. Điều duy nhất tôi có thể nghĩ đến để xem là nếu bạn chạy 'git clean -f -x' trong thư mục chương trình, sau đó nó sẽ xóa toàn bộ thư mục dữ liệu ngay cả khi nó xuất hiện trong' .gitignore'. –

+1

Âm thanh tuyệt vời. Được sử dụng này rất nhiều ngày hôm nay, và nó có vẻ hoạt động hoàn hảo. Cảm ơn! –

1

Đây cũng là một cách giải quyết hữu ích trong việc làm việc với Heroku và đường ray trong những tình huống mà bạn có các plugin cần được phiên bản. Hiện tại, Heroku không hỗ trợ các submodules git, vì vậy các bản sao làm việc lồng nhau có vẻ như là giải pháp tốt nhất. Trong trường hợp này, bạn sẽ không muốn thêm thư mục plugin vào .gitignore, như trong trường hợp này bạn sẽ không tải lên các plugin của bạn khi đẩy vào heroku, nhưng se la vi. Hy vọng rằng, Heroku cuối cùng sẽ hỗ trợ các mô đun con git.