ทุกคนในทีมของเราใช้ IntelliJ IDEA และเราพบว่ามีประโยชน์ที่จะนำไฟล์โครงการ (.ipr และ. iml) ไปไว้ในการควบคุมซอร์สเพื่อให้เราสามารถแบ่งปันการกำหนดค่าการตั้งค่าและการตรวจสอบ นอกจากนี้เราสามารถใช้การตั้งค่าการตรวจสอบเหล่านั้นบนเซิร์ฟเวอร์รวมอย่างต่อเนื่องของเรากับ TeamCity (เรามีไฟล์. wi พื้นที่ทำงานต่อผู้ใช้ในไฟล์. gitignore และไม่ได้อยู่ในการควบคุมแหล่งที่มา)
อย่างไรก็ตามไฟล์เหล่านั้นเปลี่ยนไปเล็กน้อยเมื่อคุณทำอะไรก็ได้ในไอเดีย มีปัญหาในฐานข้อมูลปัญหาของ IDEA สำหรับมัน ( IDEA-64312 ) ดังนั้นอาจมีใครคิดว่าจุดบกพร่องนี้ใน IDEA แต่มันเป็นสิ่งที่เราจะต้องอยู่ด้วยในอนาคตอันใกล้
จนกระทั่งเมื่อเร็ว ๆ นี้เรากำลังใช้การโค่นล้ม แต่เราเพิ่งเปลี่ยนเป็น Git เราแต่ละคนเพิ่งคุ้นเคยกับการเปลี่ยนแปลงรายการไฟล์โครงการที่เราเพิกเฉยและไม่ได้เช็คอินเว้นแต่จะมีการเปลี่ยนแปลงไฟล์โครงการที่เราต้องการแบ่งปันกับคนอื่น ๆ แต่ด้วย Git พลังที่แท้จริงดูเหมือนจะเป็น (จากสิ่งที่เรากำลังสำรวจ) การแตกกิ่งก้านสาขาอย่างต่อเนื่องที่กระตุ้นและการสลับระหว่างกิ่งเป็นความเจ็บปวดกับไฟล์โครงการที่มีการแก้ไขอยู่เสมอ บ่อยครั้งที่มันสามารถรวมในการเปลี่ยนแปลงอย่างใดอย่างหนึ่งและพยายามที่จะจัดการกับการเปลี่ยนแปลงไฟล์โครงการตอนนี้ถูกนำไปใช้กับสาขาใหม่ อย่างไรก็ตามหากสาขาใหม่มีการเปลี่ยนแปลงไฟล์โครงการ (เช่นสาขากำลังทำงานกับโมดูลใหม่ที่ยังไม่ได้อยู่ในสาขาอื่น) git เพียงแค่โยนข้อผิดพลาดที่มันไม่ได้ ' ไม่มีเหตุผลใดที่จะรวมในไฟล์เมื่อทั้งสองสาขามีการเปลี่ยนแปลงและคุณมีการเปลี่ยนแปลงในเครื่องและฉันสามารถเข้าใจประเด็นได้ จากบรรทัดคำสั่งหนึ่งสามารถใช้ "-f" ในคำสั่ง "git checkout" เพื่อบังคับให้เปลี่ยนการเปลี่ยนแปลงในพื้นที่และใช้สาขาแทน แต่ (1) คำสั่ง Git Checkout GUI ใน IDEA (10.5.1) ดูเหมือนจะไม่มีตัวเลือกนั้นเราสามารถค้นหาได้ดังนั้นเราจึงต้องเปลี่ยนไปใช้บรรทัดคำสั่งเป็นประจำและ (2) เราไม่แน่ใจว่าเราต้องการที่จะใช้มัน ตั้งค่าสถานะและบอก Git ให้ยกเลิกการเปลี่ยนแปลงในท้องถิ่นของเรา
ดังนั้นนี่คือความคิดบางอย่างที่เรามีในตัวเลือกที่เราต้องจัดการกับเรื่องนี้:
- นำไฟล์โครงการออกจากการควบคุมแหล่งที่มาทั้งหมด วางไว้ใน. gitignore และแจกจ่ายให้แต่ละคนและ TeamCity ผ่านวิธีการอื่น ๆ โดยอาจวางไว้ในการควบคุมแหล่งที่อื่นหรือภายใต้ชื่ออื่น ทีมของเรามีขนาดเล็กพอตัวเลือกนี้มีความเป็นไปได้พอที่จะพิจารณา แต่ดูเหมือนจะไม่ดี
- ใช้ชีวิตต่อไปกับมันพยายามให้แน่ใจว่าจัดการไฟล์ที่เรามีซึ่งสาขาตามเวลาที่กำหนด ในส่วนนี้เราอาจสนับสนุนให้นักพัฒนาแต่ละคนมีมากกว่าหนึ่งสำเนาของแต่ละโครงการในระบบของพวกเขาเพื่อให้พวกเขาสามารถเช็คเอาต์แต่ละสาขาที่แตกต่างกันด้วยชุดไฟล์โครงการที่แตกต่างกัน
- ลองมีเพียงโครงการ (.ipr) ในการควบคุมแหล่งที่มาด้วยไฟล์โมดูล (.iml) ไม่ได้อยู่ในการควบคุมแหล่งที่มาและในไฟล์. gitignore สิ่งสำคัญที่ดูเหมือนจะสลับด้วยตัวเองใน. ipr เป็นประจำคือคำสั่งของการกำหนดค่าการสร้างที่ใช้ร่วมกัน แต่บางทีเราก็สามารถแบ่งปันข้อมูลแยกต่างหากเกี่ยวกับวิธีการตั้งค่าเหล่านั้น ฉันค่อนข้างไม่แน่ใจว่า IDEA เกี่ยวข้องกับประเภทนี้เพียงแค่มีไฟล์บางส่วนเท่านั้นโดยเฉพาะอย่างยิ่งในการชำระเงินใหม่
ฉันเดาว่าฉันหวังว่าจะมีวิธีแก้ปัญหาที่ชัดเจน (หรือไม่ชัดเจน) ที่เราพลาดไปบางทีอาจเกี่ยวข้องกับความสามารถในการปรับแต่งขนาดใหญ่ที่ Git และ IDEA ทั้งคู่ดูเหมือนจะมี แต่ดูเหมือนว่าเราไม่อาจเป็นทีมเดียวที่มีปัญหานี้ คำถามที่คล้ายกันใน Stack Overflow รวมถึง3495191 , 1000512และ3873872แต่ฉันไม่รู้ว่าพวกเขาเป็นปัญหาเดียวกันและบางทีใครบางคนอาจเกิดข้อดีและข้อเสียสำหรับวิธีการต่าง ๆ ที่ฉันได้รับ วิธีการที่ระบุไว้ในคำตอบของคำถามเหล่านั้นหรือแนวทางที่พวกเขาแนะนำ