ฉันควรรวมอะไรไว้ในที่เก็บของฉันจากโครงการ IDE


10

ฉันต้องการเพิ่มโครงการซึ่งในกรณีนี้ถูกสร้างขึ้นใน Netbeans แต่คำถามนี้เป็นคำถามทั่วไปสำหรับ IDE ส่วนใหญ่ เป็นเพียงสิ่งที่ฉันควรรวมไว้ในที่เก็บของฉัน ตัวอย่างเช่น Netbeans สร้างโฟลเดอร์ nbproject, eclipse สร้างโฟลเดอร์ .settings เป็นต้นฉันควรรวมสิ่งเหล่านี้ไว้ในที่เก็บของฉันข้อดี / ข้อเสียของการรวมหรือไม่รวมถึงการตั้งค่าเฉพาะของโครงการคืออะไร

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


พิจารณาเครื่องมือเช่น maven ด้วยปลั๊กอิน eclipse (หรือ ide อื่น ๆ ) สำหรับการตั้งค่าสภาพแวดล้อมที่เหมาะสมแทนที่จะรวมถึงของคุณเอง

@MichaelT ฉันเสียใจมาก แต่ฉันไม่ได้ติดตามคุณจะขยายความในนั้นหรือไม่?
Daniel Figueroa

การใช้เครื่องมือสร้างและการมีเครื่องมือสร้างตั้งค่าสภาพแวดล้อมสำหรับ IDE ช่วยให้คุณมั่นใจได้ว่าการตั้งค่าจะเหมือนกันไม่ว่าแพลตฟอร์ม (หรือ IDE) จะเป็นเช่นไร แม้แต่นักพัฒนาเดี่ยวก็มีหลายสภาพแวดล้อม (ide vs build) สิ่งนี้จะทำให้คำถามที่ตอบนั้นง่ายขึ้น "อย่าเช็คอินสิ่งใดก็ตามที่เฉพาะเจาะจงกับสภาพแวดล้อมของคุณเพราะมันเป็นรหัสที่สร้างขึ้น" - เหตุผลเดียวกับที่คุณไม่ได้ตรวจสอบในคลาส. java ที่สร้างโดย jaxb แต่ควรใช้คำแนะนำ (ไฟล์ build.xml หรือ. pom) เกี่ยวกับวิธีสร้าง

หากเป็น "ดั้งเดิม" จะต้องสำรองข้อมูล หากมีการเปลี่ยนแปลงและจำเป็นต้องมีการติดตามและเป็นต้นฉบับควรมีการควบคุมการแก้ไข catch - how โครงสร้างคุณ repo เพื่อให้แหล่งที่มาของคุณยังคงเป็นแหล่งที่มาของคุณในขณะที่คุณกำหนดค่าเครื่องมือห่วงโซ่ไม่ก่อให้เกิดมลพิษ repo แหล่งที่มา นำไปใช้กับทรัพยากรเช่นรูปภาพเสียงและวิดีโอ ....
mattnz

คำตอบ:


4

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

แต่ไฟล์โครงการ IDE บางไฟล์เป็นข้อมูลเมตาของโครงการที่สำคัญ ฉันไม่รู้จัก Netbeans ดี แต่สำหรับ eclipse ไฟล์. project จะบอก IDE ว่าชื่อโครงการคืออะไรนั่นคือโครงการเว็บ Java เป็นต้นและไฟล์. classclass มีข้อมูลเกี่ยวกับโฟลเดอร์ต้นทางและไลบรารี บางไฟล์ในไดเรกทอรี. setset อาจมีความสำคัญเท่าเทียมกันเช่น org.eclipse.core.resources.prefs มีข้อมูลเกี่ยวกับการเข้ารหัสที่ควรใช้สำหรับไฟล์ใด

ในฐานะที่เป็นโครงการเมตาดาต้าสิ่งนี้สมควรอย่างยิ่งที่จะได้รับการควบคุมเวอร์ชันในแหล่งข้อมูล

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

สำหรับ Java มีสิ่งเช่น: Maven มันกำหนดข้อตกลงที่แข็งแกร่งในโครงสร้างของโครงการและช่วยให้คุณสามารถระบุข้อมูลเมตาของโครงการ (เช่นการอ้างอิงห้องสมุด) ในจุดเดียว (ไฟล์ที่เรียกว่า pom.xml ซึ่งอยู่ในไดเรกทอรีหลักของโครงการและแน่นอนในการควบคุมแหล่งที่มา) มีปลั๊กอินที่สร้างไฟล์โครงการ IDE จากการกำหนดค่า Maven และอื่น ๆ ที่สามารถทำให้กระบวนการสร้างโครงการเป็นอัตโนมัติหรือทำอะไรก็ได้ บางครั้งมันรู้สึกว่ามันทำให้สิ่งต่าง ๆ ที่ซับซ้อนเกินจำเป็นและต้องใช้เวลาพอสมควรในการเรียนรู้ แต่โดยทั่วไปแล้วคุณประโยชน์จะคุ้มค่า


1
ถ้าฉันไม่ผิด Maven ก็เป็นอิสระต่อกัน ถ้าเป็นเช่นนั้นเนื่องจากมันมีการตั้งค่าโครงการ / เมตาดาต้าดังนั้นจึงควรรวมไว้ใน repo อย่างแน่นอน แต่ไม่ใช่ "โครงการไฟล์ IDE" ที่ OP น่าจะอ้างถึงโดยเฉพาะ
นิ้วเลือดไหล

@ hus787: ประเด็นของฉันคือข้อมูลเมตานี้มีความสำคัญมากพอที่จะอยู่ใน repo และในขณะที่มันยอดเยี่ยมเมื่อคุณมีมันในรูปแบบที่เป็นอิสระจาก IDE เมื่อไม่ใช่กรณีก็ยังดีกว่าที่จะไม่ใช่ มีมัน
Michael Borgwardt

2

ขึ้นอยู่กับว่าคุณต้องการเก็บข้อมูลประเภทใด หากคุณต้องการทุกอย่างลงไปในไฟล์ที่คุณเปิดและแก้ไขในขณะที่คอมมิชชันและคุณเป็นคนเดียวที่ใช้ repository ให้ไปข้างหน้าและคอมมิทมันทั้งหมด แต่รู้ว่ามันอาจไม่ทำงานบนเครื่องอื่น .

หากคุณต้องการแบ่งปันรหัสของคุณกับคนอื่น ๆ ที่อาจไม่ได้ใช้ IDE เดียวกันคุณเพียงแค่ส่งรหัสเองโดยไม่ต้องใช้งานเฉพาะโครงการ

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


2

สิ่งประดิษฐ์ที่ช่วยในการพัฒนาของคุณและไม่ใช้ในการสร้าง / วางจำหน่ายหรือไม่ควรรวมโครงการไว้ด้วยตนเอง ซื้อคืนภาคจะต้องสะอาดและเป็นระเบียบเรียบร้อยและมีเพียงสิ่งเหล่านั้นที่มีความเกี่ยวข้องกับโครงการไม่สภาพแวดล้อมของคุณ repo นั้นจะไม่ปรากฏตัวในนิสัยของคุณ และอย่างที่สองมันจะบั๊กคุณโดยไม่จำเป็นเมื่อทำอะไรคล้าย ๆ กับgit status... แต่เฮ้ฉันไม่เคยเปลี่ยนแปลงเลย ...

ขอยกตัวอย่างที่เป็นประโยชน์ (ฉันจะใช้gitที่นี่เป็นเครื่องมือ):

คุณจะไม่ต้องการ submodule (เรียกซ้ำ) ภายใน repo หลักของคุณมี IDE เฉพาะสิ่ง (มันอาจรบกวนสภาพแวดล้อมของโครงการหลักเช่นกัน) เพราะสิ่งที่คุณสนใจคือรหัสที่เขียนโดยคนอื่น (หรือคุณ) และเป็น การใช้งานภายในโครงการปัจจุบัน ไม่ใช่สภาพแวดล้อมที่พัฒนาขึ้น คุณอาจไม่ต้องการทำสิ่งนั้นกับคนอื่นเช่นกัน

เพื่อให้สามารถใช้การตั้งค่าของคุณกับเครื่องที่แตกต่างกันฉันขอแนะนำให้ขุดภายใน IDE ของคุณและดูว่ามีการสนับสนุนอะไรสำหรับสิ่งนั้น Emacs มีinitและเซิร์ฟเวอร์ Emacs ด้วย หรือคุณสามารถสร้างแมโครหรือสคริปต์ที่กำหนดเอง ( .sh) ซึ่งทำการตั้งค่าโดยอัตโนมัติ


-1: ไม่เห็นด้วยอย่างสมบูรณ์ นี่อาจเป็นข้อมูลที่สำคัญและมีประโยชน์และ repo ของคุณควรมีข้อมูลดังกล่าว
Michael Borgwardt

@MichaelBorgwardt จะเกิดอะไรขึ้นถ้า OP มีแผนในการเปลี่ยนไปใช้ IDE อื่น ๆ การตั้งค่าเฉพาะโครงการ IDE เหล่านั้นจะเข้าใจได้อย่างไรในอีกอันหนึ่ง ตัวอย่างจะได้รับการชื่นชมมาก
นิ้วเลือดออก

IDE บางตัวสามารถนำเข้าข้อมูลเมตาของโครงการจาก IDE อื่น ๆ แม้ว่าจะไม่สามารถทำได้ แต่ไฟล์เหล่านี้มักอ่านได้ง่ายและมีไฟล์ดีกว่าไม่มี
Michael Borgwardt

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

@AmyBlankenship นั่นคือจุดที่ฉันเป็นพื้นที่ทำงานของคุณคุณจะแน่ใจได้อย่างไรว่ามันจะไม่รบกวนผู้อื่น (พวกเขาดึงและในทันทีทันใดพื้นที่ทำงานของพวกเขาจะถูกแทนที่ด้วยของคุณ) ควรเก็บสิ่งเหล่านั้นไว้ในสาขาท้องถิ่นแยกต่างหากหรือ คุณสามารถใช้ Mercurial สำหรับพื้นที่ทำงานเฉพาะโครงการ VC และ git สำหรับโครงการ VC เกี่ยวกับเทมเพลตรหัสฉันคิดว่า IDE ของคุณยังไม่โตพอ (หรือยังไม่ได้สำรวจอย่างถูกต้อง) และถ้าคุณบอกว่าเทมเพลตนั้นเป็นโปรเจ็กต์ที่เฉพาะเจาะจงฉันคิดว่าคุณควรมองหารูปแบบในโค้ดของคุณ
นิ้วเลือดออก

1

ถ้าเป็นโครงการส่วนตัวฉันจะบอกว่าเก็บการตั้งค่าไว้ในแหล่งควบคุม โดยส่วนตัวแล้วไม่มีอะไรที่จะฆ่าแรงจูงใจของฉันสำหรับโครงการมากกว่าการตั้งค่าสภาพแวดล้อมการพัฒนาอีกครั้ง

เมื่อผู้คนเข้ามามีส่วนร่วมมากขึ้นฉันไม่ได้วางสิ่งเหล่านี้ไว้ในแหล่งควบคุม ในทีมของฉันเรามีการผสมผสานระหว่าง IntelliJ, Sublime Text และ Eclipse ไฟล์ IDE เพียงเพิ่มความยุ่งเหยิงและทำให้เกิดการดึงไฟล์เหล่านั้นจากคนอื่นเพื่อหา IDE ที่คุณไม่ได้ใช้

นอกจากนี้โครงการของคุณไม่ควรขึ้นอยู่กับ IDE อยู่ดี เซิร์ฟเวอร์บิลด์จะไม่เริ่มต้นการทำงานของ Eclipse เพื่อรวบรวมผลิตภัณฑ์ของคุณดังนั้นจึงควรเป็นแบบ IDE จุดเล็ก ๆ น้อย ๆ เพิ่มเติม: มันกำจัดองค์กรส่วนบุคคลภายในโครงการ ตัวอย่างเช่นใน IntelliJ ฉันชอบใช้โมดูลจำนวนมากในโครงการของเรา ไม่มีใครใช้ IntelliJ กังวลเกี่ยวกับเรื่องนี้เพราะเราไม่ได้เก็บไฟล์. iml (โมดูล)

หากทีมของคุณใช้ IDE เดียวกันก็จะดีกว่า แต่ก็มีบางคนยอมรับรายการ. classpath ที่ไม่ดีเพราะพวกเขาใช้เส้นทางที่แน่นอน ตอนนี้ทุกคนที่ใช้ IDE กังวลเกี่ยวกับเรื่องนี้

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

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