Mọi người trong nhóm của chúng tôi sử dụng IntelliJ IDEA và chúng tôi thấy hữu ích khi đặt các tệp dự án của nó (.ipr và .iml) vào kiểm soát nguồn để chúng tôi có thể chia sẻ cấu hình, cài đặt và kiểm tra bản dựng. Ngoài ra, sau đó chúng tôi có thể sử dụng các cài đặt kiểm tra đó trên máy chủ tích hợp liên tục của chúng tôi với TeamCity. (Chúng tôi có tệp .iws cho mỗi người dùng trong tệp .gitignore và không kiểm soát nguồn.)
Tuy nhiên, những tệp đó thay đổi theo những cách nhỏ khi bạn làm bất cứ điều gì trong IDEA. Có một vấn đề trong cơ sở dữ liệu vấn đề của IDEA cho nó ( IDEA-64312 ), vì vậy có lẽ người ta có thể coi đây là một lỗi trong IDEA, nhưng đó là một vấn đề chúng ta cần phải sống trong tương lai gần.
Cho đến gần đây, chúng tôi đã sử dụng Subversion, nhưng gần đây chúng tôi đã chuyển sang Git. Chúng tôi đã từng quen với việc có một danh sách thay đổi các tệp dự án mà chúng tôi đã bỏ qua và không đăng ký trừ khi có các thay đổi tệp dự án mà chúng tôi muốn chia sẻ với người khác. Nhưng với Git, sức mạnh thực sự dường như (từ những gì chúng ta đang khám phá) sự phân nhánh liên tục mà nó khuyến khích và chuyển đổi giữa các nhánh là một nỗi đau với các tệp dự án luôn bị sửa đổi. Thường thì nó chỉ có thể hợp nhất trong các thay đổi bằng cách nào đó và cố gắng xử lý các thay đổi tệp dự án hiện đang được áp dụng cho nhánh mới. Tuy nhiên, nếu nhánh mới đã thay đổi các tệp dự án (chẳng hạn như nhánh đang hoạt động trên một mô-đun mới chưa có trong các nhánh khác), git chỉ đưa ra một lỗi mà nó không xảy ra ' Không có ý nghĩa gì để hợp nhất trong các tệp khi cả hai nhánh có thay đổi và bạn có thay đổi cục bộ, và tôi có thể hiểu quan điểm của nó hơn. Từ dòng lệnh, người ta có thể sử dụng "-f" trên lệnh "git checkout" để buộc nó loại bỏ các thay đổi cục bộ và sử dụng thay vào đó, nhưng (1) lệnh GUI Git Checkout trong IDEA (10.5.1) dường như không có tùy chọn nào mà chúng ta có thể tìm thấy, vì vậy chúng ta cần chuyển sang dòng lệnh một cách thường xuyên và (2) Chúng tôi không chắc chúng ta muốn có thói quen sử dụng nó gắn cờ và bảo Git ném ra những thay đổi cục bộ của chúng tôi.
Vì vậy, đây là một số suy nghĩ chúng ta có về các lựa chọn chúng ta phải đối phó với điều này:
- Lấy các tệp dự án ra khỏi kiểm soát nguồn hoàn toàn. Đặt chúng vào .gitignore và phân phối chúng cho mỗi người và TeamCity thông qua một số phương tiện khác, có thể bằng cách đặt chúng trong kiểm soát nguồn ở một nơi khác hoặc dưới tên khác. Nhóm của chúng tôi đủ nhỏ tùy chọn này đủ khả thi để xem xét, nhưng nó không có vẻ tuyệt vời.
- Tiếp tục sống với nó, cố gắng đảm bảo quản lý các tệp chúng ta có trên các nhánh tại một thời điểm nhất định. Là một phần của điều này, chúng tôi có thể khuyến khích mỗi nhà phát triển có nhiều hơn một bản sao của mỗi dự án trên hệ thống của họ, để họ có thể kiểm tra từng nhánh đến một nhánh khác nhau với các tập tin dự án khác nhau.
- Hãy thử chỉ có dự án (.ipr) trong điều khiển nguồn, với các tệp mô-đun (.iml) không nằm trong điều khiển nguồn và trong tệp .gitignore. Điều chính dường như tự chuyển đổi trong .ipr một cách thường xuyên là thứ tự các cấu hình bản dựng được chia sẻ, nhưng có lẽ chúng ta chỉ có thể chia sẻ thông tin riêng về cách thiết lập chúng. Tôi không chắc chắn làm thế nào IDEA đối phó với loại điều này chỉ có một số tệp của nó, đặc biệt là trên một thanh toán mới.
Tôi đoán tôi đang hy vọng có một giải pháp rõ ràng (hoặc không rõ ràng) mà chúng tôi đã bỏ lỡ, có lẽ là đối phó với khả năng tùy biến rất lớn mà cả Git và IDEA dường như đều có. Nhưng có vẻ như chúng tôi không thể là đội duy nhất gặp vấn đề này. Các câu hỏi tương tự trên Stack Overflow bao gồm 3495191 , 1000512 và 3873872 , nhưng tôi không biết vì chúng chính xác là cùng một vấn đề và có lẽ ai đó có thể đưa ra những ưu và nhược điểm cho các phương pháp khác nhau mà tôi đã nêu ra, cách tiếp cận được liệt kê trong câu trả lời cho những câu hỏi, hoặc cách tiếp cận mà họ đề xuất.