Android studio - toàn bộ thư mục .idea có nên bỏ qua git không?


137

Tôi đã thấy rất nhiều ví dụ cho .gitignorecác tệp cho AndroidStudio , một số có.idea trong đó và một số thì không.

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

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


Tôi bỏ qua .ideangoại trừ một số các tập tin dưới .idea/runConfigurations/.
Daniel

Câu trả lời:


104

Bạn có thể xem trang này:

IntelliJ doc về tập tin cấu hình dự án

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

Thư mục .idea chứa một tập hợp các tệp cấu hình (.xml). Mỗi tập tin 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 mà được phản ánh trong tên của một tập tin, ví dụ, compiler.xml, encodings.xml, modules.xml.

Hầu như 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 các 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ữ dưới sự kiểm soát phiên bản.

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

Để trả lời câu hỏi của bạn :

  1. Nếu bạn không sử dụng một cái gì đó như Maven hoặc Gradle để quản lý các phụ thuộc và xây dựng: hãy giữ thư mục dưới sự kiểm soát 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 bản sao, tất cả các nhà phát triển sẽ phải đặt 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 cấu hình.
  2. Nếu bạn sử dụng một cái gì đó như Maven hoặc Gradle: cấu hình chính xác các công cụ này và không giữ thư mục dưới sự kiểm soát phiên bản . Trên thực tế, tất cả thông tin chứa trong các tệp cấu hình nên được lưu trữ trong các tệp Maven / Gradle. Sau đó, hãy để nhà phát triển của bạn cấu hình IDE của họ tùy thuộc vào môi trường của họ. Bằng cách này, sử dụng Eclipse, IntelliJ, Linux, Windows ... sẽ không còn là vấn đề nữa.

9
Tuy nhiên, hãy lưu ý đoạn tiếp theo: "Ngoại lệ là tệp workspace.xml. Nó lưu các cài đặt cá nhân của bạn ... Vì vậy, không chắc là bạn muốn chia sẻ tệp này với các đồng nghiệp của mình."
Dalbergia

40

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

Vấn đề là nó .ideađược sử dụng cho cả cấu hình xây dựng dự án (khai báo phụ thuộc) và cài đặt dự án (kiểm tra, v.v.).

Bạn chắc chắn không muốn sử dụng IDE cho cấu hình bản dựng của mình, nhưng bạn có thể muốn chia sẻ các cài đặt giữa các nhóm. Đó là lý do tại sao bạn cần phải chỉ bỏ qua một phần của .ideanội dung (như các librariesthư mục và modules.xmltậ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, dictionariesinspectionProfilescác thư mục và các tập tin dưới .ideagiống như dynamic.xml, codeStyleSettings.xml, vv).


Làm thế nào cụ thể sẽ giải quyết các tập tin iml?
Dors

1
tập tin iml chắc chắn nên được bỏ qua.
JBaruch

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

@mithrop điều này là - bạn không thể khai báo loại cấu hình này trong tệp Maven / Gradle. Đó là định dạng riêng của Idea và nó không có lựa chọn thay thế di động trong Maven / Gradle.
JBaruch

Ồ vâng, bạn đúng. Dù sao, nếu không thể đặt nó trong các tệp maven / gradle, bạn sẽ gặp vấn đề với lần tới khi bạn nhập dự án vào một IDE khác (đó là vấn đề tôi ghét phải xử lý). Nhưng tôi hoàn toàn đồng ý với bạn (nếu đọc câu trả lời của tôi, bạn sẽ thấy tôi thực sự như vậy): bạn có bao gồm các tệp hay không tùy thuộc vào nhu cầu của bạn :)
mithrop

7

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 mình vì tất cả các nhà phát triển của chúng tôi tình cờ sử dụng PHPStorm cho các dự án của chúng tôi và do đó, việc giữ một cấu hình chung ... trong ý tưởng là điều hợp lý. Chúng tôi muốn sử dụng cùng các tệp từ điển, cùng quy tắc chuẩn mã hóa và cùng cấu hình plugin.

Lý do tại sao tôi đủ điều kiện này với "trong khái niệm" là vì 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ó thể là những vấn đề có thể tránh hoặc khắc phục, nhưng chúng tôi không rõ làm thế nào để làm điều đó đúng và chúng tôi nghĩ đó là lỗi của JetBrains vì là nhà phát triển, chúng tôi không có thời gian cũng không muốn tìm kiếm giải pháp về cách thực hiện IDE của chúng tôi hoạt động chính xác.

Điều đó đang được nói, các vấn đề đã có như sau:

  • Các thư mục dự án Symlinking 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ào thư mục 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 symlink chính xác thay vì chỉ coi nó như một thư mục cụ thể. Điều này có nghĩa là nếu một nhà phát triển khác giữ dự án của anh ta ở một nơi khác hoặc đơn giản là không sử dụng symlink, 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.
  • Các tệp định nghĩa được phân vùng cho người dùng theo mặc định. Điều này có nghĩa là nếu tôi muốn thêm một từ vào từ điển của mình, nó sẽ được liệt kê dưới dạng đị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ác từ được gắn cờ sẽ vẫn hiển thị là một lỗi chính tả cho người dùng khác. Điều này là không mong muốn. Lý do tôi thêm nó vào tệp định nghĩa của mình là vì IDE sai. Tôi muốn những định nghĩa này được chia sẻ trực quan với những người dùng khác.
  • Các đồng nghiệp tiếp tục ghi đè các cấu hình vì IDE của họ sẽ ghi đè lên các cấu hình với cấu hình hiện tại trong Bộ nhớ. Ý tôi là, một 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, có chứa thay đổi cấu hình dự án, thay vì cấu hình thay đổi IDE của họ hoặc thậm chí cho họ lựa chọn, nó sẽ tự động ghi đè lên cấu hình .idea cấu hình trong bộ nhớ hiện tại của IDE của họ. Theo tôi điều này làm cho cấu hình .idea không thể sử dụng như một cấu hình được chia sẻ. Để giải quyết vấn đề này, nhà phát triển thực sự sẽ phải tắt phiên bản IDE đó, kéo repo và mở lại IDE của họ. Sẽ không có ý nghĩa gì khi giữ một cấu hình được chia sẻ nếu IDE ngay lập tức ghi đè lên nó với cấu hình hiện tại trong bộ nhớ. Nó '

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 ổn; nhưng với .idea nó cảm thấy đơn giản là không thể sử dụng được, điều đó thật đáng thất vọng. Tôi ước JetBrains sẽ vượt lên trên nó và làm cho nó trở thành trải nghiệm người dùng tốt hơn.


> thay vì IDE thay đổi cấu hình hoặc thậm chí cho họ lựa chọn, nó sẽ tự động ghi đè lên cấu hình .idea bằng cấu hình trong bộ nhớ hiện tại của IDE. Wow, thật đáng tiếc. Tốt để biết!
Greg Giá
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.