สตูดิโอ Android -. ไดเร็กทอรีทั้งหมดควรอยู่ในคอมไพล์หรือไม่?


137

ฉันเห็นตัวอย่างมากมายสำหรับ.gitignoreไฟล์สำหรับAndroidStudioบางไฟล์มี.ideaอยู่ในนั้นและบางไฟล์ไม่มี

มีเหตุผลที่ดีที่จะไม่เพิ่ม. ไดเอียทั้งหมดใน. gignignore หรือไม่?

หากไม่ควรเพิกเฉยอย่างสมบูรณ์มีไฟล์เฉพาะอยู่ใน. aide (เช่น. iml) ที่ควรอยู่ใน. gitignore หรือไม่


ฉันเพิกเฉย.ideaยกเว้นไฟล์บางไฟล์ที่อยู่ด้าน.idea/runConfigurations/ล่าง
Daniel

คำตอบ:


104

คุณสามารถดูที่หน้านี้:

เอกสาร IntelliJ เกี่ยวกับไฟล์การกำหนดค่าโครงการ

ใน "รูปแบบตามไดเรกทอรี" บรรทัดที่น่าสนใจ:

ไดเรกทอรี .idea มีชุดไฟล์การกำหนดค่า (.xml) compiler.xmlแต่ละไฟล์มีเพียงส่วนหนึ่งของข้อมูลการกำหนดค่าที่เกี่ยวข้องกับพื้นที่การทำงานบางอย่างที่สะท้อนให้เห็นในชื่อของไฟล์ที่เป็นเช่น encodings.xml, modules.xml,

ไฟล์เกือบทั้งหมดมีแกนข้อมูลสำหรับโครงการเช่นชื่อและที่ตั้งของโมดูลส่วนประกอบการตั้งค่าคอมไพเลอร์ ฯลฯดังนั้นไฟล์เหล่านี้อาจ (และควร) ถูกเก็บไว้ภายใต้การควบคุมเวอร์ชัน

อย่างไรก็ตามฉันไม่ชอบที่จะทำโครงการที่ขึ้นกับ IDE (ฉันกำลังทำงานในโครงการที่ทำกับ NetBeans และมันเจ็บที่จะใช้กับ Eclipse ซึ่งกลายเป็นมาตรฐานของ บริษัท ของฉัน)

ดังนั้นเพื่อตอบคำถามของคุณ:

  1. หากคุณไม่ได้ใช้สิ่งที่ต้องการ Maven หรือ Gradle ในการจัดการการอ้างอิงและสร้าง: ให้ไดเรกทอรีภายใต้การควบคุมรุ่น ด้วยวิธีนี้การกำหนดค่าที่ถูกต้องของโครงการและการอ้างอิงจะมีให้สำหรับทุกคน นักพัฒนาทั้งหมดจะต้องตั้งค่าสภาพแวดล้อมของพวกเขาให้เหมือนกับที่คุณกำหนดไว้ในไฟล์ปรับแต่ง
  2. ถ้าคุณทำเช่นการใช้งานบางอย่างเช่น Maven หรือ Gradle: ถูกต้องกำหนดค่าเครื่องมือเหล่านี้และไม่ให้ไดเรกทอรีภายใต้การควบคุมรุ่น ที่จริงแล้วข้อมูลทั้งหมดที่อยู่ในไฟล์ปรับแต่งควรเก็บไว้ในไฟล์ Maven / Gradle จากนั้นให้นักพัฒนาซอฟต์แวร์ของคุณกำหนดค่า IDE ขึ้นอยู่กับสภาพแวดล้อมของพวกเขา ด้วยวิธีนี้การใช้ Eclipse, IntelliJ, Linux, Windows ... จะไม่เป็นปัญหาอีกต่อไป

9
หมายเหตุย่อหน้าถัดไป: "ข้อยกเว้นคือไฟล์ workspace.xml ซึ่งจะเก็บการตั้งค่าส่วนบุคคลของคุณ ... ดังนั้นจึงไม่น่าที่คุณจะต้องการแชร์ไฟล์นี้กับเพื่อนร่วมงานของคุณ"
Dalbergia

40

ตกลงดังนั้นหลังจากคำตอบ "ใช่" และ "ไม่" ฉันกำลังเพิ่มคำตอบ "ใช่และไม่ใช่" :)

ปัญหาคือว่า.ideaจะใช้สำหรับทั้งการกำหนดค่าการสร้างโครงการ (การประกาศอ้างอิง) และการตั้งค่าโครงการ (การตรวจสอบ ฯลฯ )

แน่นอนคุณไม่ต้องการใช้ IDE สำหรับการกำหนดค่าการสร้าง แต่คุณอาจต้องการแชร์การตั้งค่าระหว่างทีม นั่นเป็นเหตุผลที่คุณต้องการที่จะไม่สนใจเพียงส่วนหนึ่งของ.ideaเนื้อหา (เช่นlibrariesโฟลเดอร์และmodules.xmlไฟล์) แต่ให้คนอื่น ๆ ในการควบคุมรุ่น (เช่นcopyright, dictionariesและinspectionProfilesไฟล์และโฟลเดอร์ภายใต้.ideaเช่นdynamic.xml, codeStyleSettings.xmlฯลฯ )


จะจัดการไฟล์ iml ได้อย่างไร?
dors

1
ไฟล์ iml ควรถูกละเว้นอย่างแน่นอน
JBaruch

1
ฉันยังคงคิดว่าการกำหนดค่าไม่ควรเก็บไว้ในไฟล์ที่ขึ้นกับ IDE และ Maven / Gradle นั้นดีกว่าที่จะทำ
mithrop

@mithrop สิ่งที่เป็น - คุณไม่สามารถประกาศการกำหนดค่าประเภทนี้ในไฟล์ Maven / Gradle เป็นรูปแบบความเหมาะสมของ Idea และไม่มีทางเลือกพกพาใน Maven / Gradle
JBaruch

โอ้ใช่คุณพูดถูก อย่างไรก็ตามถ้าไม่สามารถวางไว้ในไฟล์ maven / gradle คุณจะมีปัญหากับครั้งต่อไปที่คุณนำเข้าโครงการใน IDE อื่น (ซึ่งเป็นปัญหาที่ฉันเกลียดที่จะจัดการ) แต่ผมเห็นด้วยกับคุณ (ถ้าอ่านคำตอบของฉันคุณจะเห็นว่าผมจริงๆ): คุณรวมถึงไฟล์หรือไม่ขึ้นอยู่กับความต้องการของคุณ :)
mithrop

7

แนวคิดของการรักษาโครงแบบของโครงการใน VC นั้นถูกต้อง ฉันทำสิ่งนี้กับทีมของฉันเพราะนักพัฒนาของเราทุกคนใช้ PHPStorm สำหรับโครงการของเราและดังนั้นจึงเหมาะสมที่จะกำหนดค่าทั่วไป ... ในแนวคิด เราต้องการใช้ไฟล์พจนานุกรมเดียวกันกฎมาตรฐานการเข้ารหัสเดียวกันและการกำหนดค่าปลั๊กอินเดียวกัน

เหตุผลที่ฉันมีคุณสมบัตินี้ด้วย "ในแนวคิด" เป็นเพราะมีปัญหากับโฟลเดอร์. aidea ของ JetBrains ที่ทำให้เราไม่สามารถใช้งานได้ สิ่งเหล่านี้อาจเป็นปัญหาที่สามารถหลีกเลี่ยงหรือแก้ไขได้ แต่ก็ไม่มีความชัดเจนว่าเราจะทำอย่างไรให้ถูกต้องและเราคิดว่านั่นเป็นความผิดของ JetBrains เพราะในฐานะนักพัฒนาเราไม่มีเวลาหรือไม่ต้องการค้นหาวิธีแก้ปัญหา IDE ของเราทำงานอย่างถูกต้อง

ที่ถูกกล่าวว่าปัญหาที่เกิดขึ้นมีดังนี้:

  • การเชื่อมโยงโฟลเดอร์โครงการไม่ทำงาน เมื่อฉันตั้งค่าโครงการของฉันฉันเชื่อมโยงพวกเขาเข้ากับโฮมไดเร็กตอรี่ของฉัน สิ่งที่เราค้นพบคือโครงการได้รับการตั้งค่าให้ใช้ symlink ที่แน่นอนแทนที่จะทำเหมือนเป็นไดเรกทอรีที่เป็นรูปธรรม ซึ่งหมายความว่าหากผู้พัฒนารายอื่นเก็บโครงการของเขาไว้ในที่อื่นหรือไม่ใช้ symlinks ไดเรกทอรีทั้งหมดจะหายไปจากตัวนำทางโครงการเพราะมันค่อนข้างมองหา symlink อย่างแท้จริง สิ่งที่แย่กว่าคือฉันไม่สามารถหาค่าพา ธ นี้ในการกำหนดค่า เราไม่พบการกำหนดค่าที่แน่นอนในไฟล์ที่เป็นโฟลเดอร์. video ของเรา
  • ไฟล์นิยามถูกแบ่งพาร์ติชันให้กับผู้ใช้โดยค่าเริ่มต้น ซึ่งหมายความว่าหากฉันต้องการเพิ่มคำลงในพจนานุกรมของฉันมันจะถูกระบุว่าเป็นคำนิยามสำหรับฉัน jgreathouse แต่ผู้ใช้รายอื่นจะมีส่วนนิยามของตัวเอง คำที่ถูกตั้งค่าสถานะจะยังคงปรากฏเป็นข้อผิดพลาดในการสะกดสำหรับผู้ใช้รายอื่น สิ่งนี้ไม่เป็นที่ต้องการ เหตุผลที่ฉันเพิ่มลงในไฟล์คำจำกัดความของฉันเป็นเพราะ IDE ผิด ฉันต้องการคำจำกัดความเหล่านี้เพื่อแบ่งปันกับผู้ใช้รายอื่นอย่างสังหรณ์ใจ
  • เพื่อนร่วมงานยังคงเขียนทับการกำหนดค่าเนื่องจาก IDE จะเขียนทับการกำหนดค่าด้วยการตั้งค่าในหน่วยความจำ สิ่งที่ฉันหมายถึงคือนักพัฒนาจะทำงานและรวมพื้นที่เก็บข้อมูลของพวกเขาจากแหล่งกำเนิดซึ่งจะมีการเปลี่ยนแปลงการกำหนดค่าโครงการแทนการเปลี่ยนการกำหนดค่า IDE ของพวกเขาหรือแม้กระทั่งให้พวกเขาเลือกมันจะเขียนทับ.. การกำหนดค่าในหน่วยความจำปัจจุบันของ IDE ในความเห็นของฉันสิ่งนี้ทำให้การกำหนดค่า. aaa ไม่สามารถใช้เป็นการกำหนดค่าที่ใช้ร่วมกันได้ เพื่อที่จะแก้ไขสิ่งนี้ผู้พัฒนาจะต้องปิดอินสแตนซ์ของ IDE นั้นดึง repo และเปิด IDE ของพวกเขาอีกครั้ง ไม่มีเหตุผลที่จะเก็บการกำหนดค่าที่ใช้ร่วมกันไว้หาก IDE แทนที่มันทันทีด้วยการกำหนดค่าในหน่วยความจำในปัจจุบัน มัน'

ฉันได้ทำการตั้งค่า IDE แบบแบ่งใช้เหล่านี้ใน VC มาก่อนด้วย Visual Studio และ Netbeans และมันก็ใช้ได้ดีเสมอ แต่ด้วย. ความรู้สึกมันใช้ไม่ได้ซึ่งน่าผิดหวัง ฉันหวังว่า JetBrains จะเหนือกว่าและทำให้ประสบการณ์ผู้ใช้ดีขึ้น


> แทนการกำหนดค่าการเปลี่ยน IDE ของพวกเขาหรือแม้กระทั่งให้ทางเลือกแก่พวกเขามันจะเขียนทับการตั้งค่า .idea โดยอัตโนมัติด้วยการกำหนดค่าในหน่วยความจำปัจจุบันของ IDE ว้าวโชคไม่ดีจริงๆ ดีแล้วที่รู้!
เกร็กราคา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.