ไฟล์ Eclipse ใดที่อยู่ภายใต้การควบคุมเวอร์ชัน?


242

ไฟล์ Eclipse ใดที่เหมาะสมที่จะวางภายใต้การควบคุมของแหล่งที่มานอกเหนือจากแหล่งที่มาอย่างชัดเจน?

ในโครงการของฉันโดยเฉพาะฉันสงสัยเกี่ยวกับ:

.metadata / *
project-dir / .project
project-dir / .classpath
project-dir / .settings / *

หากมีสิ่งเหล่านี้ขึ้นอยู่กับสิ่งนั้นโปรดอธิบายหลักเกณฑ์ของคุณ

คำตอบ:


175

ข้อมูลเมตาไม่ควรได้รับการจัดการในการควบคุมแหล่งที่มา พวกเขามีข้อมูลส่วนใหญ่ที่เกี่ยวข้องกับพื้นที่ทำงานของคุณ

ข้อยกเว้นเพียงอย่างเดียวคือ.launchไฟล์ XML (นิยามตัวเรียกใช้งาน)

พวกเขาพบใน

[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches

และควรคัดลอกไปยังไดเรกทอรีโครงการของคุณ: เมื่อโครงการของคุณรีเฟรชการกำหนดค่าเหล่านั้นจะปรากฏในกล่องโต้ตอบ "เรียกใช้การกำหนดค่า"

ด้วยวิธีนี้ไฟล์พารามิเตอร์การเรียกใช้เหล่านั้นสามารถจัดการได้ใน SCM

(คำเตือน: อย่ายกเลิกการเลือกตัวเลือก "ลบการกำหนดค่าเมื่อทรัพยากรที่เกี่ยวข้องถูกลบ"ในพาเนลการกำหนดค่าตามความชอบRun / Launching / Launch Configuration : เป็นเรื่องปกติที่จะลบโปรเจ็กต์เพื่อนำเข้ากลับมาอีกครั้ง - ข้อมูลเมตาของ eclipse แต่ตัวเลือกนี้หากทำเครื่องหมายไว้จะลบพารามิเตอร์การเปิดตัวโดยละเอียดของคุณ!)

project-dir/.project
project-dir/.classpath
project-dir/.settings/* 

ควรอยู่ใน SCM ของคุณ (โดยเฉพาะ.projectและ.classpathเป็นไปตามเอกสาร Eclipse )

เป้าหมายคือทุกคนสามารถชำระเงิน / อัปเดตพื้นที่ทำงาน SCM ของตนและนำเข้าโครงการ Eclipse ไปยังพื้นที่ทำงาน Eclipse

เพื่อที่คุณจะต้องการที่จะใช้เฉพาะทางญาติใน .classpath ของคุณโดยใช้ทรัพยากรที่เชื่อมโยง

หมายเหตุ: เป็นการดีกว่าถ้าproject-dirอ้างอิงถึงไดเร็กทอรีโปรเจ็กต์ "ภายนอก" ไม่ใช่ไดเร็กทอรีที่สร้างภายใต้เวิร์กสเปซ eclipse ด้วยวิธีนี้ทั้งสองแนวคิด (เวิร์กสเปซ eclipse กับเวิร์กสเปซ SCM) แยกกันอย่างชัดเจน


ในฐานะที่เป็นipsquiggleกล่าวถึงในความคิดเห็นและในขณะที่ฉันได้พาดพิงถึงคำตอบเก่าคุณสามารถบันทึกการกำหนดค่าการเปิดตัวเป็นไฟล์ที่ใช้ร่วมกันโดยตรงในไดเรกทอรีโครงการของคุณ การกำหนดค่าการเปิดตัวทั้งหมดนั้นสามารถกำหนดเวอร์ชันเหมือนกับไฟล์โครงการอื่น ๆ

(จากบล็อกโพสต์เคล็ดลับ: การสร้างและแชร์การกำหนดค่าเริ่มต้นจาก KD)

ข้อความแสดงแทน


16
A (IMO) การไหลของงานที่ดีมากที่จะทำงานกับอะไรใน .metadata สำหรับแฟ้ม .launch เป็น: เมื่อคุณแก้ไขการกำหนดค่าการเปิดตัวบนแท็บเลือกcommon Save as > shared fileนี่จะเป็นการวางลงในโฟลเดอร์โปรเจ็กต์โดยตรงเพื่อให้สามารถ SCM กับส่วนที่เหลือของโครงการ
Ipsquiggle

3
ทำไม. project ต้องอยู่ใน SCM ตัวอย่างเช่นฉันต้องการใช้เครื่องมือโค้ดเมตริกซึ่งทำให้เกิดการเปลี่ยนแปลงใน. project เมื่อเปิดใช้งาน ฉันจะไม่ต้องการบังคับให้ผู้ใช้ทุกคนของโครงการ
jfritz42

8
@ jfritz42: หากคุณทำการเปลี่ยนแปลงเฉพาะที่และตรงเวลาใช้ได้สำหรับคุณเท่านั้นให้ทำการ.projectละเว้นเวอร์ชันนั้นในขณะนั้นเป็นเพียงสำหรับพื้นที่ทำงานของคุณ แต่อย่ากีดกันผู้ใช้คนอื่น ๆ ของคำนิยามโครงการ Eclipse ทั่วไปที่พวกเขาสามารถนำเข้าได้อย่างรวดเร็วในพื้นที่ทำงาน Eclipse ของพวกเขาเพียงเพราะคุณมีคำนิยามพิเศษหนึ่งที่จะพอดีกับความต้องการของคุณในขณะนี้
VonC

7
ขอบคุณ. ฉันจะศึกษาลิงก์เหล่านั้นอย่างรอบคอบ แต่แล้วฉันสังเกตว่าในลิงค์แรกของคุณคำตอบหนึ่งคำตอบจะเริ่มต้น "ใช่แน่นอน" ในขณะที่อีกลิงก์ถัดไปจะเริ่มต้น "แน่นอนไม่" Google เต็มไปด้วยคำแนะนำที่แปลกใหม่และไม่เป็นมิตร ฉันเข้าใจเป้าหมาย แต่ทำอย่างไรถึงจะมีปัญหา ฉันมาจาก Xcode ซึ่งแหล่งที่มาและตัวเลือกผู้ใช้จะถูกแยกออกจากการสร้าง Xcode และการสร้างคอมไพเลอร์อย่างหมดจดเพื่อให้คำถามนี้มีคำตอบง่ายๆ สำหรับมือใหม่ Eclipse ดูเหมือนว่าไฟล์เหล่านั้นจะถูกผสมเข้าด้วยกันและกระจัดกระจาย ฉันกำลังมองหาคำตอบที่เข้าใจง่าย
garyp

3
ฉันมาจากที่ดิน VisualStudio และฉันที่สอง @garyp ที่นี่ - มันยุ่งเหยิงจริงๆ - ถ้า Eclipse ต้องสร้างไฟล์ชั่วคราวและ / หรือไม่จำเป็นต้องติดตามไฟล์ต่อผู้ใช้มันควรจะวางไว้ที่อื่นดังนั้น สามารถติดตามโครงการและคำจำกัดความของการสร้างและขยะชั่วคราวทั้งหมดไม่สามารถเข้าถึงได้ ไม่มีคำแนะนำอย่างเป็นทางการเพิ่มเติมจากทีม Eclipse ที่ไหนสักแห่ง? (มันค่อนข้างชัดเจนว่าทีม eclipse ไม่ได้ทำการทดสอบหน่วย (หรือถ้าพวกเขาทำพวกเขาไม่ได้ทำอย่างมีประสิทธิภาพ) แต่อย่างน้อยก็บอกฉันว่าพวกเขาใช้การควบคุมแหล่งที่มา! XD)
BrainSlugs83

19

ฉันกำลังทำงานในโครงการที่เรามีไฟล์. project และ. project ภายใต้การควบคุมของแหล่งที่มา แนวคิดคือการตั้งค่าที่เกี่ยวข้องกับเส้นทางไลบรารีและคำสั่งลิงก์จะเผยแพร่ทั่วทั้งทีม

ในทางปฏิบัติมันทำงานได้ไม่ดีนักการรวมกันกลับมาอยู่ในสถานะที่ขัดแย้งกันซึ่งต้องแยกแยะนอกคราสจากนั้นจึงปิดโครงการและเปิดใหม่เพื่อให้การเปลี่ยนแปลงมีผล

ฉันจะไม่แนะนำให้เก็บไว้ในการควบคุมแหล่งที่มา


14

ไม่มีค่าอะไรเลยที่ไฟล์กำหนดค่าCDTนั้นไม่สามารถควบคุมได้ง่าย มีข้อผิดพลาดที่ยื่นสำหรับไฟล์โครงการ. เปลี่ยนแปลงบ่อยมากและก่อให้เกิดข้อขัดแย้งให้ดูที่การแชร์ไฟล์ cdt-project ในที่เก็บจะทำให้เกิดข้อขัดแย้งเสมอ


Yikes - ข้อผิดพลาดนี้มีอายุหกปีและยังไม่ได้สัมผัส การสนับสนุนการควบคุมแหล่งที่มาอย่างชัดเจนไม่ใช่เรื่องสำคัญสำหรับทีม Eclipse!
BrainSlugs83

2
ควรสังเกตว่าไฟล์. โครงการมีข้อมูลการกำหนดค่าที่คุณไม่ต้องการบังคับให้นักพัฒนารายอื่นต้องสร้างใหม่ด้วยตนเอง ฮึ.
Christopher Barber

7

บางโครงการเช่นที่ใช้ Maven ต้องการสร้างไฟล์. project ตาม POM

ที่กล่าวว่านอกเหนือจากนั้น - .metadata ไม่ควรอยู่ในการควบคุมแหล่งที่มา โครงการของคุณจะต้องกำหนดว่า projectdir / .settings ทำตามวิธีที่คุณวางแผนในการจัดการมาตรฐานหรือไม่ หากคุณสามารถไว้วางใจนักพัฒนาซอฟต์แวร์ของคุณอย่างจริงใจในการตั้งค่าสภาพแวดล้อมของพวกเขาตามมาตรฐานและคุณไม่จำเป็นต้องปรับแต่งอะไรเป็นพิเศษสำหรับโครงการใด ๆ จากนั้นคุณไม่จำเป็นต้องใส่มันลงไปฉันขอแนะนำให้ตั้งค่าทุกโครงการเป็นพิเศษ . สิ่งนี้ทำให้ผู้พัฒนาสามารถทำงานกับหลาย ๆ โครงการในพื้นที่ทำงานเดียวกันโดยไม่ต้องเปลี่ยนการตั้งค่าเริ่มต้นไปมาและทำให้การตั้งค่านั้นชัดเจนมากโดยแทนที่การตั้งค่าเริ่มต้นของพวกเขาจะตรงกับมาตรฐานของโครงการ

เพียงส่วนที่ยากคือการทำให้แน่ใจว่าพวกเขาทั้งหมดอยู่ในซิงค์ แต่ในกรณีส่วนใหญ่คุณสามารถคัดลอกไฟล์การตั้งค่าจากโครงการไปยังโครงการ หากมีสิ่งใดที่คุณไม่ต้องการโดยเฉพาะในการควบคุมแหล่งข้อมูลให้ทำเทียบเท่ากับการตั้งค่า svn: ละเว้นสำหรับพวกเขาหาก SCM ของคุณรองรับ


2
เราใช้ Maven 1 และ 2 และจะสร้างไฟล์. project เท่านั้นถ้าคุณขอให้ และแม้ว่าคุณจะทำเช่นนั้นมันจะทำตามเนื้อหาของ POM ดังนั้นหากนักพัฒนารายอื่นได้ทำขั้นตอนนั้นให้คุณแล้วและตรวจสอบผลลัพธ์ในการควบคุมเวอร์ชันทำไมไม่ใช้ประโยชน์จากสิ่งนั้น
Andrew Swan

6

ไฟล์. classpath เป็นตัวเลือกที่ดีในการตรวจสอบ scm เนื่องจากการตั้งค่าด้วยมืออาจเป็นงานจำนวนมากและเป็นเรื่องยากสำหรับผู้พัฒนาใหม่ที่เข้ามาในโครงการ มันเป็นความจริงมันสามารถสร้างขึ้นจากแหล่งอื่น ๆ ซึ่งในกรณีนี้คุณจะตรวจสอบในแหล่งอื่น

สำหรับการตั้งค่ามันขึ้นอยู่กับการตั้งค่า นี่เป็นพื้นที่สีเทา แต่การตั้งค่าบางอย่างเกือบจะบังคับและสะดวกที่จะตรวจสอบโครงการนำเข้าใน Eclipse และมีทุกสิ่งที่ติดตั้งและดีสำหรับการเดินทาง

ที่โครงการของเราเราจึงเก็บสำเนาของโฟลเดอร์. settings ชื่อ CVS.settings และเรามีภารกิจ ant เพื่อคัดลอกไปยัง. settings เมื่อคุณได้รับโครงการจาก CVS คุณเรียกใช้งานมด 'eclipsify' เพื่อคัดลอกการตั้งค่าเริ่มต้นไปยังโฟลเดอร์. setset ใหม่ เมื่อคุณกำหนดการตั้งค่าที่ทุกคนต้องการพัฒนาในโครงการคุณจะรวมการตั้งค่าเหล่านั้นกลับเข้าไปในโฟลเดอร์ CVS.settings และส่งมอบให้กับ CVS วิธีการบันทึกการตั้งค่าใน SCM นี้กลายเป็นกระบวนการที่ใส่ใจ มันต้องใช้ devs เพื่อรวมการตั้งค่าเหล่านั้นกลับเข้าไปในโฟลเดอร์. setset เป็นครั้งคราวเมื่อมีการเปลี่ยนแปลงการตรวจสอบครั้งใหญ่ แต่เป็นระบบที่ใช้งานง่าย


4

ฉันจะไม่พูดอะไรเลย พวกเขาส่วนใหญ่มีข้อมูลที่เกี่ยวข้องกับเวิร์กสเตชันของคุณเท่านั้น (ฉันคิดถึงเส้นทางสำหรับห้องสมุดและทั้งหมด) อีกอย่างถ้าใครในทีมของคุณไม่ได้ใช้ Eclipse ล่ะ


3
ไม่คุณสามารถมีเส้นทางสัมพันธ์ใน. classclass ของคุณ ดูstackoverflow.com/questions/300328#300346
VonC

7
ฟังดูเหมือนทีมที่ไม่ค่อยมีประสิทธิภาพ / ไร้ประสิทธิภาพหากพวกเขาไม่ได้ใช้ dev เดียวกัน เครื่องมือโปรเจ็กต์ตรวจแก้จุดบกพร่องและสร้างคำจำกัดความเป็นต้น - ต่อไปคุณจะบอกฉันว่าอย่าใช้มาตรฐานการเข้ารหัสทั่วไปหรือ JDK - ตามหลักการแล้วผู้ใช้ควรสามารถดึงโครงการจากแหล่งควบคุมและกระโดดเข้าหาโดยไม่ต้องมีการตั้งค่าหรือคำแนะนำเพิ่มเติมมากมาย ดังนั้นคำตอบนี้เป็นที่ยอมรับไม่ได้สำหรับฉัน
BrainSlugs83

1
มันเป็นวิธีที่ไม่มีประสิทธิภาพมากขึ้นในการจัดการกับความขัดแย้งในไฟล์การตั้งค่าในระหว่างการรวมเพียงเพราะมีคนเปิดโครงการจากพื้นที่ทำงานใหม่ - นี่คือฝันร้ายในโครงการขนาดใหญ่ นอกจากนี้บังคับให้ใช้ IDE เดียวกันกับการกำหนดค่าเดียวกันเสียงเหมือนข้อ จำกัด ที่ไม่จำเป็น
A. Rodas

ฉันเห็นด้วยกับ [~ agnul] โปรเจ็กต์ควรใช้เครื่องมือ build (gradle, maven, ant, ฯลฯ ... ) และ IDE ควรจะสามารถเปิดและกำหนดค่าโครงการจากไฟล์การกำหนดค่าเครื่องมือบิลด์ (build.gradle, pom.xml, build.xml, ฯลฯ ... ) ไม่ควรมีการควบคุมเวอร์ชันของไฟล์ IDE พวกเขาเป็นไฟล์เฉพาะของนักพัฒนาไม่ใช่ไฟล์เฉพาะโครงการ ง่ายไม่ได้อยู่ในการควบคุมเวอร์ชัน
axiopisty

2

พิจารณา:

.classpath
.project
.launch

SHOULD เหล่านี้อยู่ในการควบคุมเวอร์ชันตราบใดที่คุณยึดติดกับการใช้เส้นทางสัมพันธ์ของโครงการ สิ่งนี้ทำให้นักพัฒนาซอฟต์แวร์รายอื่นสามารถตรวจสอบโปรเจ็กต์และเริ่มทำงานได้ทันทีโดยไม่ต้องผ่านความเจ็บปวดในการตั้งค่าที่นักพัฒนาซอฟต์แวร์รายอื่น ๆ ต้องประสบเช่นกัน

คุณอาจถูกล่อลวงให้รวม. metadata ไว้ในการควบคุมเวอร์ชันด้วยดังนั้นผู้พัฒนา Eclipse สามารถตรวจสอบพื้นที่ทำงานทั้งหมดและกำหนดค่าไว้ล่วงหน้ากับโครงการที่ถูกต้องทั้งหมด แต่มีข้อมูลเฉพาะของผู้ใช้จำนวนมากที่ทุกคนทำงานได้ เปลี่ยนดังนั้นฉันจะแนะนำไม่รวม. metadata การสร้างเวิร์กสเปซในพื้นที่ทำได้ง่ายเพียงแค่นำเข้าโครงการ Eclipse ที่มีอยู่ทั้งหมด


จากประสบการณ์ของฉันสิ่งนี้มีแนวโน้มที่จะแตกต่างกันเมื่อคุณอัปเดต Eclipse เป็นเวอร์ชันที่ใหม่กว่าหรือสลับไปมาระหว่างรสชาติต่างๆ
Thorbjørn Ravn Andersen

1

ฉันใช้เวลาหลายชั่วโมงในการกำหนดการตั้งค่า eclipse สำหรับเพื่อนร่วมงานใหม่ (และตัวฉันเอง) สิ่งที่ฉันทำในที่สุดก็ถูกคัดลอก. metadata ของฉันเองไปยังเครื่องนักพัฒนาใหม่

หากคุณกำลังทำงานเป็นทีมฉันคิดว่าสิ่งต่อไปนี้เป็นตัวเลือกที่ดีมากในการควบคุมเวอร์ชัน:

  • ติดตั้ง JREs และชื่อแล้ว
  • สภาพแวดล้อมรันไทม์ของเซิร์ฟเวอร์
  • เทมเพลต Java Editor
  • แป้นพิมพ์ลัดสำหรับควบคุมเวอร์ชัน
  • การตั้งค่าปลั๊กอินที่ไม่มีการตั้งค่าเฉพาะโครงการ
  • การตั้งค่า Maven
  • มุมมองที่กำหนดไว้ล่วงหน้า
  • ...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.