2009-10-31 16 views
41

Dự án đang sử dụng Maven để tệp POM là nguồn thông tin dự án chính. Có một số thiết lập hữu ích trong các tập tin dự án mà sẽ được tốt đẹp để giữ.Thực hành tốt nhất cho IntelliJ IDEA 9 + Maven + Kiểm soát phiên bản

OTOH IDEA dường như tạo quá nhiều thay đổi dự phòng trong cấu trúc tệp dự án gây ô nhiễm lịch sử SVN và đôi khi tạo xung đột.

Tôi có nên giữ thư mục .idea và các tệp * .iml trong điều khiển phiên bản không? đầy đủ? một phần?

Cập nhật: Vì vậy, việc thực hành tốt nhất mà tôi đã tìm thấy làm việc cho tôi và đội của tôi là cho đến nay:

  1. Kiểm tra trong tất cả các file IDEA, * .iml và .idea thư mục. Chúng chứa thông tin giá trị và đó là một sự lãng phí thời gian để tái tạo nó mỗi lần bạn cập nhật.
  2. Tạo chi nhánh riêng cho mỗi nhà phát triển
  3. cd vào thư mục .idea
  4. svn chuyển nó đến chi nhánh của nó đối tin
  5. Không kiểm tra trong các tập tin IDEA trên cam kết thường xuyên - họ làm ô nhiễm lịch sử. Kiểm tra chúng trong các cam kết đặc biệt.

Bằng cách này, bạn giữ nội dung của thư mục .idea trong kiểm soát phiên bản nhưng vẫn giữ nguyên nội dung của cam kết thông thường. Bất kỳ nhà phát triển nào đều có thể truy cập vào các thư mục IDEA của bất kỳ ai khác.

Cập nhật 2: Kể từ khi câu hỏi này được viết ra, tôi đã thay đổi thói quen của tôi để không check-in bất kỳ tập tin IntelliJ vào kiểm soát phiên bản, như cố vấn bởi nhiều phản ứng. Đây là thực hành hiện tại của tôi cho cả Maven và Gradle. Các công cụ đã phát triển đến mức mà thông tin quan trọng luôn có thể được sao chép từ các tệp .POM hoặc .gradle gốc. Khi các tập tin thay đổi, IDE theo dõi các thay đổi đáng tin cậy để bạn không bị mất các tập tin IDE của bạn thường xuyên như vậy mà không cần phải kiểm tra chúng.

Cập nhật 3: 7 năm sau khi đặt câu hỏi này có vẻ là vẫn có liên quan. Các phương pháp hay nhất tương tự cũng áp dụng cho Gradle (có thể là SBT): không kiểm tra các tệp IDE trong, tạo lại chúng khi cần thiết từ tệp POM, .gradle hoặc SBT cơ bản.

+1

Cảm ơn mọi người đã đề xuất của bạn. Trong khi đó, thực hành tốt nhất của tôi là kiểm tra các tập tin IDEA trong nhưng như là một changeset riêng biệt để nó sẽ không làm hỏng lịch sử SVN xấu. Tôi thường cung cấp cho các changesets tên "IDEA điên rồ" :-) –

+1

xem http://stackoverflow.com/questions/3041154/intellij-idea-9-10-what-folders-to-check-into-or-not- check-in-source-contro -> IDEA FAQ: http://devnet.jetbrains.com/docs/DOC-1186 –

+0

@MatthewCornell có lẽ nâng cấp nhận xét của bạn để trả lời? –

Trả lời

17

Câu trả lời ngắn: không đặt những tệp này trong kho kiểm soát nguồn vì bạn có thể "tạo" chúng (và điều này thậm chí còn đúng hơn nếu bạn không cần chúng, nếu chúng gây phiền nhiễu, nếu chúng có thể phá vỡ các tệp khác môi trường).

Cá nhân tôi sử dụng các giá trị sau cho svn:ignore:

target 
*~ 
*.log 
.classpath 
.project 
*.ipr 
*.iws 
*.iml 
.settings 
+5

Câu trả lời này bỏ qua giá trị của việc có các tệp iml ngay sau khi kiểm tra/cập nhật. Tôi đã thấy rất nhiều thời gian bị lãng phí bởi các nhà phát triển, điều đó phải tìm ra, rằng họ cần tạo lại các tệp imls sau khi cập nhật. Đặt chúng vào VC thực sự tốt với người khác. Làm theo một cách mù quáng quy tắc "không cam kết tạo nội dung" chung chỉ làm hại ở đây. –

+3

Trừ khi tôi rời khỏi cơ sở ở đây, nhiều cài đặt trong thư mục .idea không thể được tạo lại đơn giản. Chúng ta đang nói về cách một dự án được chia thành các mô-đun, mà các mô-đun có những khía cạnh nào được đính kèm, những gì tạo ra cần phải được tạo ra, quá trình xây dựng là gì, vv Đây là thông tin quan trọng. Bây giờ, nếu bạn có thể tạo tất cả thông tin này từ các tệp khác, hãy xem xét việc đi theo tuyến đường đó, nhưng đối với câu hỏi ở đây, tôi không thấy điều đó. –

+1

Điều đó không hợp lệ đối với các dự án lớn liên quan đến nhiều người. Trong trường hợp của chúng tôi, ví dụ, chúng tôi cũng lưu trữ các kiểm tra mà ý tưởng thực hiện và kiểu định dạng mã. – Mikel

15

Một trong những điều tuyệt vời về Maven là các công cụ hỗ trợ tồn tại cho biến một POM vào một dự án có nguồn gốc trong Eclipse, Idea và Netbeans. Nếu bạn có một pom, bạn có thể tạo một dự án bản địa khá nhanh chóng.

Vì lý do đó, tôi sẽ không kiểm tra tệp .idea hoặc * .iml dưới sự kiểm soát nguồn bất kỳ gì nhiều hơn tôi sẽ kiểm tra trong các tệp RMI hoặc tệp lớp.

+2

+1 để đề cập đến các lợi ích khi sử dụng nhiều IDE trong một nhóm –

9

Tôi thấy rằng câu trả lời tiêu chuẩn là "không kiểm tra trong tệp dự án, chỉ cần .pom". Nhưng những thứ như tệp .ipr chứa rất nhiều cài đặt hữu ích mà KHÔNG thể bắt nguồn từ tệp .pom.Điều gì xảy ra nếu những người dùng IntelliJ khác muốn chia sẻ các cài đặt đó? Tôi biết rằng các tệp .ipr được thiết kế để được phiên bản (xem ví dụ this thread). Tôi ước tôi có một câu trả lời thực sự, nhưng tôi vẫn chưa tìm thấy một thực hành tốt về vấn đề này.

+1

Tôi đang sử dụng bố cục thư mục .idea được cho là thân thiện với VC hơn.Tuy nhiên, có rất nhiều thay đổi mỗi lần gây ô nhiễm lịch sử VC nếu bạn không cẩn thận. Một khả năng tôi muốn thử là đặt .idea dưới svn: ignore nhưng kiểm tra theo cách thủ công theo yêu cầu theo thời gian. Tương tự như vậy đối với các tệp .classpath và .project Eclipse. –

+0

Điều này dường như có nhiều câu hỏi hơn là câu trả lời. Tôi nghĩ điều này thuộc về một nhận xét cho một câu trả lời khác. (Xin lỗi, tôi biết rằng điều này khiến tôi hơi giống như "Cảnh sát thủ tục tràn ngăn xếp" nhưng hệ thống hoạt động thực sự tốt nếu mọi người sử dụng hệ thống một cách chính xác. Hãy bỏ phiếu xuống câu trả lời bạn cho là sai và bỏ phiếu cho những người bạn thích. Tôi nghĩ rằng Alexei có câu hỏi này đúng hơn những người khác, vì vậy tôi đã bỏ phiếu cho anh ta và những người khác.) –

14

Tôi nghĩ bạn nên đặt thư mục .idea vào kiểm soát phiên bản. Hầu hết cấu hình chứa trong đó phải được theo dõi phiên bản, ví dụ: cấu hình trình biên dịch.

Tệp duy nhất không thuộc quyền kiểm soát phiên bản là .idea/workspace.xml, vì nó chỉ chứa cấu hình cụ thể cho môi trường cục bộ của bạn.

IntelliJ Idea thực sự đặt workspace.xml vào danh sách bỏ qua theo mặc định, vì vậy nếu bạn sử dụng ý tưởng để đăng ký, bạn nên được thiết lập mà không thay đổi bất cứ điều gì.

+0

Đây thực sự là lý do cho câu hỏi ban đầu: .idea là những gì tôi sử dụng (không có workspace.xml tất nhiên) và nó tạo ra thay đổi tất cả các thời gian. Những thay đổi này làm rối loạn lịch sử và khiến tôi đối phó với chúng quá nhiều. Làm thế nào tôi có thể cắt giảm những thay đổi này? –

+0

Tôi đã sử dụng phương pháp này trong vài ngày và không nhận thấy bất kỳ thay đổi không mong muốn nào trong khu vực đó. Bạn có ví dụ về những gì bạn gọi là thay đổi dư thừa gây ô nhiễm lịch sử SVN, trong thư mục .idea nhưng bên ngoài workspace.xml? –

+0

Alexei, đây là một ví dụ về đăng ký dự phòng. Không có thay đổi nào được thực hiện cho dự án. http://ow.ly/d/1g7 –

3

Ý kiến ​​của tôi là chúng tôi nên giữ bất kỳ tệp cụ thể IDE nào ngoài Kiểm soát phiên bản. Ý tưởng là chúng ta nên giữ càng nhiều càng tốt thông tin ở dạng độc lập IDE như các tệp maven pom và vân vân. Tất cả các thiết lập dự án quan trọng có thể được giữ ở đó. Và có tất cả các cài đặt dự án lớn được lưu trong tệp pom, tôi không thấy bất kỳ lý do nghiêm trọng nào để kiểm tra cấu hình dự án IDEA mà không phải cấu hình cụ thể khác của IDE. Ngoài ra, cấu hình dự án kiểu thư mục .idea thực sự gây ra các bản ghi thay đổi. Và chúng tôi vẫn muốn giữ cài đặt dự án IDEA trong điều khiển phiên bản, chúng tôi ít nhất có thể lưu trữ chúng ở định dạng tệp .ipr duy nhất.

+0

Nếu mục tiêu là giúp nhóm phát triển sử dụng cấu hình IDE được chia sẻ, hãy đặt hầu hết các tệp .idea vào điều khiển nguồn LÀ một ý tưởng _great_. Tôi thấy rằng alexi.vidmich hiểu điều này trong câu trả lời của anh ấy. –

+0

Tôi có thể đồng ý một phần với điều này, nhưng nó chỉ chính xác cho cấu hình không liên quan đến bất kỳ chi tiết hệ thống cơ bản nào như đường dẫn tuyệt đối, môi trường thời gian chạy, v.v. –

1

Tôi đến muộn với bữa tiệc này, nhưng vấn đề chính xác này đã khiến tôi lo lắng. Và tôi đã được truyền cảm hứng với những gì tôi tin có thể làm việc, ít nhất là với hệ thống kiểm soát nguồn của chúng tôi.

Tệp IntelliJ không cần phải được lưu trữ "cùng nhau" với tệp pom.xml có thẩm quyền và nguồn. Lịch sử kiểm soát phiên bản không bị "ô nhiễm" nếu những thay đổi liên quan đến nguồn không được ghi vào một vị trí khác trong cây nguồn.

Vì vậy, tôi sẽ thử di chuyển các tệp IntelliJ đến một vị trí song song trong hệ thống kiểm soát phiên bản, sử dụng ánh xạ tệp/thư mục đơn giản để hợp nhất tệp nguồn và dự án trên máy của nhà phát triển và theo dõi các thay đổi trong hệ thống kiểm soát phiên bản vào các tệp ảnh hưởng đến bản dựng.

+0

cách thức đó hoạt động cho bạn? – Shanimal