2014-10-13 19 views
102

Tôi đã thấy rất nhiều ví dụ cho các tệp .gitignore cho AndroidStudio, một số có .idea trong đó và một số thì không.Android studio - toàn bộ thư mục .idea có bị bỏ qua không?

Có lý do chính đáng để không thêm toàn bộ thư mục .idea vào .gitignore không?

Nếu không được bỏ qua hoàn toàn, có tệp cụ thể bên trong .idea (chẳng hạn như .iml) phải ở trong .gitignore không?

+0

Tôi bỏ qua '.idea' ngoại trừ một số tệp trong' .idea/runConfigurations/'. – Daniel

+1

superset: http: // stackoverflow.com/questions/16736856/what-should-be-in-my-gitignore-cho-an-android-studio-project –

Trả lời

75

Bạn có thể có một cái nhìn tại trang này:

IntelliJ doc about project configuration files

Trong "định dạng thư mục dựa trên", một dòng cụ thể là thú vị:

Thư mục .idea chứa một bộ tệp cấu hình (.xml). Mỗi tệp chỉ chứa một phần dữ liệu cấu hình liên quan đến một khu vực chức năng nhất định được phản ánh trong tên tệp, ví dụ: compiler.xml, encodings.xml, modules.xml.

Hầu hết tất cả các tệp chứa lõi thông tin cho chính dự án, chẳng hạn như tên và vị trí của mô-đun thành phần, cài đặt trình biên dịch, v.v. Do đó, các tệp này có thể (và nên) được giữ trong điều khiển phiên bản.

Tuy nhiên, tôi đúng để làm cho dự án phụ thuộc vào IDE (Tôi hiện đang làm việc trên dự án được thực hiện với NetBeans và đau khi sử dụng nó với Eclipse trở thành tiêu chuẩn của công ty tôi).

Vì vậy, để trả lời câu hỏi của bạn:

  1. Nếu bạn không sử dụng cái gì đó như Maven hoặc Gradle để quản lý phụ thuộc và xây dựng: giữ thư mục dưới điều khiển phiên bản. Bằng cách này, cấu hình chính xác của dự án và phụ thuộc sẽ có sẵn cho tất cả mọi người. Trong đối tác, tất cả các nhà phát triển sẽ phải thiết lập môi trường của họ chính xác giống như cách bạn xác định nó trong các tập tin cấu hình.
  2. Nếu bạn sử dụng thứ gì đó như Maven hoặc Gradle: định cấu hình chính xác các công cụ này và không giữ thư mục trong điều khiển phiên bản. Trên thực tế, tất cả thông tin trong các tệp cấu hình phải là được lưu trữ trong các tệp Maven/Gradle. Sau đó cho phép các nhà phát triển của bạn cấu hình IDE tùy thuộc vào môi trường của họ. Bằng cách này, việc sử dụng Eclipse, IntelliJ, Linux, Windows ... sẽ không còn là vấn đề nữa.
+7

Lưu ý đoạn tiếp theo, mặc dù: "Ngoại lệ là tệp workspace.xml. Nó lưu trữ cài đặt cá nhân của bạn ... Vì vậy, bạn không muốn chia sẻ tệp này với đồng nghiệp của mình. " – Dalbergia

-1

Tôi luôn thêm thư mục này vào gitignore. Tất cả các tập tin chứa trong nó được tạo ra mỗi khi bạn xây dựng lại dự án. Tệp này không đóng vai trò quan trọng trong dự án nhưng bạn có thể gặp lỗi hoặc gặp khó khăn trong quá trình lắp ráp trong tương lai.

26

OK, vì vậy sau khi một số "Có" và "Không" câu trả lời, tôi thêm một "Có và không" trả lời :)

Vấn đề là .idea được sử dụng cho cả hai dự án xây dựng cấu hình (khai phụ thuộc) và thiết lập dự án (kiểm tra, vv).

Bạn chắc chắn không muốn sử dụng IDE cho cấu hình xây dựng của mình, nhưng bạn có thể muốn chia sẻ cài đặt giữa nhóm. Đó là lý do tại sao bạn cần phải bỏ qua chỉ là một phần của .idea nội dung (như các libraries thư mục và modules.xml tập tin), nhưng giữ những người khác trong việc kiểm soát phiên bản (ví dụ như copyright, dictionariesinspectionProfiles thư mục và các tập tin dưới .idea như dynamic.xml, codeStyleSettings.xml, vv .).

+0

Cách cụ thể sẽ giải quyết các tệp iml? – dors

+1

các tệp iml chắc chắn sẽ bị bỏ qua. – JBaruch

+1

Tôi vẫn nghĩ rằng các cấu hình không nên được lưu giữ trong các tệp tin phụ thuộc vào IDE và do đó Maven/Gradle tốt hơn để làm điều đó. – mithrop

3

Khái niệm giữ cấu hình dự án trong VC là hợp lệ. Tôi đã làm điều này với nhóm của tôi bởi vì tất cả các nhà phát triển của chúng tôi đã xảy ra để sử dụng PHPStorm cho các dự án của chúng tôi và vì vậy nó có ý nghĩa để giữ một cấu hình chung ... trong khái niệm. Chúng tôi muốn sử dụng cùng một tệp từ điển, cùng các quy tắc chuẩn mã hóa và các cấu hình plugin giống nhau.

Lý do tại sao tôi đủ điều kiện này với khái niệm "trong khái niệm" là do có vấn đề với thư mục .idea của JetBrains dẫn đến việc chúng tôi không thể sử dụng nó. Đây có lẽ là những vấn đề có thể tránh được hoặc cố định, nhưng chúng tôi không biết làm thế nào để làm điều đó đúng, và chúng tôi nghĩ đó là lỗi của JetBrains vì các nhà phát triển không có thời gian và mong muốn tìm kiếm giải pháp IDE của chúng tôi hoạt động chính xác.

Nói như vậy, các vấn đề đã được thăm như sau:

  • symlinking thư mục dự án không hoạt động đúng. Khi tôi thiết lập các dự án của mình, tôi liên kết chúng với thư mục chính của tôi. Những gì chúng tôi phát hiện ra là dự án đã được thiết lập để sử dụng liên kết chính xác hơn là chỉ xử lý nó như một thư mục cụ thể. Điều này có nghĩa rằng nếu một nhà phát triển khác giữ dự án của mình ở một nơi khác hoặc đơn giản là không sử dụng các liên kết tượng trưng, ​​toàn bộ thư mục sẽ bị thiếu trong trình điều hướng dự án vì nó hoàn toàn tìm kiếm liên kết tượng trưng. Điều tồi tệ hơn là tôi không bao giờ có thể tìm thấy giá trị đường dẫn này trong cấu hình. Chúng tôi không thể tìm thấy cấu hình chính xác trong các tệp cấu thành thư mục .idea của chúng tôi.
  • Tệp định nghĩa được phân đoạn theo người dùng theo mặc định. Điều này có nghĩa nếu tôi muốn thêm một từ vào từ điển của tôi, nó sẽ được liệt kê như là một định nghĩa cho tôi, jgreathouse, nhưng những người dùng khác sẽ có phần định nghĩa riêng của họ. Các từ được gắn cờ sẽ vẫn hiển thị là lỗi chính tả cho những người dùng khác. Đây không phải là điều mong muốn. Lý do tôi thêm nó vào tập tin định nghĩa của tôi là vì IDE sai. Tôi muốn các định nghĩa này được chia sẻ trực quan với những người dùng khác.
  • Đồng nghiệp tiếp tục ghi đè cấu hình vì IDE của họ sẽ ghi đè cấu hình bằng cấu hình hiện có trong Bộ nhớ. Ý tôi là, nhà phát triển sẽ làm việc và hợp nhất kho lưu trữ của họ từ nguồn gốc, thay đổi cấu hình dự án thay vì cấu hình thay đổi IDE hoặc thậm chí là lựa chọn, nó sẽ tự động ghi đè cấu hình .idea cấu hình trong bộ nhớ hiện tại của IDE của chúng. Theo tôi, điều này làm cho cấu hình .idea không sử dụng được như một cấu hình được chia sẻ. Để làm việc xung quanh điều này, nhà phát triển theo nghĩa đen sẽ phải tắt trường hợp của IDE của họ, kéo repo, và mở lại IDE của họ. Nó không có ý nghĩa để giữ một cấu hình được chia sẻ nếu IDE ngay lập tức ghi đè nó với cấu hình hiện tại trong bộ nhớ. Nó giống như không có một cấu hình được chia sẻ ở tất cả.

Tôi đã thực hiện các loại cấu hình IDE được chia sẻ này trong VC trước đây với Visual Studio và Netbeans và nó luôn tốt; nhưng với .idea nó chỉ đơn giản là không sử dụng được mà là đáng thất vọng. Tôi muốn JetBrains sẽ nhận được trên đầu trang của nó và làm cho nó một trải nghiệm người dùng tốt hơn.

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