คำถามติดแท็ก version-control

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

2
พื้นที่เก็บข้อมูลส่วนตัวของฉันมีความปลอดภัยแค่ไหนใน bitbucket
ใครบ้างรู้ว่าที่เก็บส่วนตัวของฉันมีความปลอดภัยใน bitbucket.org หรือไม่? ฉันสามารถวางใจได้หรือไม่ ฉันมีที่เก็บข้อมูลบางส่วนและต้องการให้พวกเขาสามารถเข้าถึงได้โดยฉันและอีกสองคนเท่านั้น

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

3
ทำไมคุณไม่ยอมรับการเปลี่ยนแปลงที่ถูกผสานทันที?
สำนักงานของฉันใช้ Git และ SourceTree สำหรับการควบคุมเวอร์ชันของเรา สิ่งนี้เกิดขึ้นเพราะเมื่อฉันเข้าร่วมมีการควบคุมเวอร์ชันเป็นศูนย์และ SourceTree เป็นระบบเดียวที่ฉันเคยใช้ ฉันไม่ใช่ผู้เชี่ยวชาญ แต่อย่างใด แต่ฉันมีประสบการณ์มากที่สุดจากเพื่อนร่วมงานของฉันดังนั้นฉันจึงเป็นผู้เชี่ยวชาญโดยพฤตินัยที่รับผิดชอบในการสอนให้ทุกคนใช้ Git อย่างถูกต้องและแก้ไขข้อผิดพลาดที่เกิดขึ้น ฉันกำลังทำเอกสารการสอนที่ผ่าน Git และ SourceTree และอธิบายทุกขั้นตอนของกระบวนการ ในกระบวนการดึงบทสนทนา SourceTree ให้คุณเลือกตัวเลือก "กระทำการเปลี่ยนแปลงที่ถูกรวมทันที" ฉันเข้าใจว่าสิ่งนี้ทำอะไรและทำไมจึงมีประโยชน์ สิ่งที่ฉันไม่เข้าใจคือเหตุผลที่ทุกคนไม่ต้องการใช้คุณลักษณะนี้ มีคนอธิบายได้ไหมว่าทำไมคุณถึงไม่ต้องการให้มีการเปลี่ยนแปลงที่ถูกรวมเข้าด้วยกันโดยอัตโนมัติ? ฉันพยายามที่จะเข้าใจเหตุผลเพื่อให้ฉันสามารถอธิบายถึงประโยชน์ของฟีเจอร์นี้ได้ดีขึ้นและรับทราบถึงสิ่งที่ผิดพลาดในการมองหาในอนาคต แก้ไข: ฉันไม่เชื่อว่าคำถามของฉันซ้ำกับคำถามที่เชื่อมโยง คำถามที่เชื่อมโยงกันนั้นเป็นการถามถี่ที่จะกระทำ ฉันถามว่าทำไมคนเลือกที่จะไม่ใช้คุณลักษณะเฉพาะที่เกี่ยวข้องกับการคอมมิชชันคอมมิชชันใน SourceTree

5
เวอร์ชันควบคุมเนื้อหาของฐานข้อมูล
ฉันกำลังทำงานในโครงการเว็บที่เกี่ยวข้องกับเนื้อหาที่ผู้ใช้สามารถแก้ไขได้และฉันต้องการที่จะสามารถติดตามเวอร์ชันของเนื้อหาจริงที่อยู่ในฐานข้อมูล โดยพื้นฐานแล้วฉันต้องการที่จะใช้ประวัติความเปลี่ยนแปลงของวิกิ ในการทำวิจัยพื้นหลังฉันเห็นเอกสารจำนวนมากเกี่ยวกับวิธีการทำคีมาฐานข้อมูลของคุณ(จริง ๆ แล้วฉันควบคุมอยู่แล้ว) แต่กลยุทธ์ใด ๆ ที่มีอยู่เกี่ยวกับวิธีการติดตามการเปลี่ยนแปลงเนื้อหาของฐานข้อมูลของคุณจะสูญหายไป ในการค้นหาของฉัน ฉันสามารถคิดถึงวิธีการติดตามการเปลี่ยนแปลงของตัวเองได้บ้าง แต่พวกเขาทั้งหมดดูค่อนข้างหยาบ: บันทึกทั้งแถวในการเปลี่ยนแปลงแต่ละรายการเชื่อมโยงแถวกลับไปยังรหัสแหล่งที่มาด้วยคีย์หลัก การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ จำนวนมากอาจทำให้โต๊ะโตมาก บันทึกก่อน / หลัง / ผู้ใช้ / การประทับเวลาสำหรับการเปลี่ยนแปลงแต่ละรายการด้วยชื่อคอลัมน์เพื่อเชื่อมโยงการเปลี่ยนแปลงกลับไปยังคอลัมน์ที่เกี่ยวข้อง บันทึกก่อน / หลัง / user / timestamp ด้วยตารางสำหรับแต่ละคอลัมน์ (อาจส่งผลให้มีตารางมากเกินไป) บันทึก diffs / user / timestamp สำหรับการเปลี่ยนแปลงแต่ละรายการด้วยคอลัมน์ (ซึ่งหมายความว่าคุณต้องเดินผ่านประวัติการเปลี่ยนแปลงทั้งหมดเพื่อย้อนกลับไปยังวันที่แน่นอน) อะไรคือวิธีที่ดีที่สุดที่นี่? ดูเหมือนว่าฉันจะพลิกโฉมฐานข้อมูลโค้ดของคนอื่น (ดีกว่า) คะแนนโบนัสสำหรับ PostgreSQL

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

5
วิธีที่เป็นจริงในการจัดการกับซอฟต์แวร์แก้ไขเฉพาะลูกค้าคืออะไร?
ฉันพยายามรวบรวมวิธีที่มีประสิทธิภาพที่ผู้อื่นแก้ไขปัญหาต่อไปนี้ ที่ทำงานเราถูกบังคับให้ปล่อยแพทช์ซอฟต์แวร์ (เพื่อติดตั้งบนระบบผู้ใช้ปลายทาง) ที่เราต้องการให้ลูกค้าเห็นเฉพาะ รหัสที่กำหนดเองอยู่ในสาขาการควบคุมของตัวเอง ปัญหาคือเรามีสองบรรทัดรหัสขนาน (และสร้างสคริปต์) เพื่อซิงค์และทุกครั้งที่เราแก้ไขรหัสเดิมเราต้องแก้ไขและทดสอบรหัสเฉพาะลูกค้า ฉันอยากรู้ว่าองค์กรอื่นจัดการกับสถานการณ์นี้อย่างไร เราเปิดกว้างสำหรับโซลูชันทางธุรกิจไม่ใช่แค่ด้านเทคนิค (เกี่ยวข้องกับการควบคุมแหล่งที่มา) ตัวอย่างเช่นเราได้พูดคุยเกี่ยวกับการบอกลูกค้าว่าพวกเขาไม่สามารถรับอัปเดตในสาขานั้นได้ กลยุทธ์การแยกสาขาของเราเป็นเช่นนี้ (อ้างอิงจากVisual Studio TFS Branching Guideถึงแม้ว่าเราจะใช้ Subversion)

2
วิธีจัดโครงสร้างโซลูชัน / โครงการที่ทับซ้อนกันหลายรายการใน. Net
ฉันเพิ่งเริ่มทำงานกับลูกค้าใหม่ที่มีมรดกเก่า codebaseซึ่งมีโซลูชัน. net หลายรายการโดยทั่วไปแต่ละโฮสต์โฮสต์บางโครงการที่ไม่ซ้ำกันกับโซลูชันนั้น แต่แล้วลิงก์ "ยืม" / "ใน" (เพิ่มโครงการที่มีอยู่) บางโครงการอื่น ๆ ซึ่งทางเทคนิคเป็นของโซลูชั่นอื่น ๆ (อย่างน้อยถ้าคุณไปตามโครงสร้างโฟลเดอร์ใน TFS) ฉันไม่เคยเห็นการตั้งค่านี้พันกันไม่มีคำสั่งสร้างที่ชัดเจนบางครั้งโครงการในการแก้ปัญหาการอ้างอิงที่กำลังโดยตรงจากไดเรกทอรีผลลัพธ์ของโครงการที่โฮสต์ในโซลูชัน B บางครั้งโครงการได้รวมโดยตรงแม้ว่ามันจะอยู่ ไกลออกไปในโครงสร้างโฟลเดอร์ ดูเหมือนว่าทุกอย่างได้รับการปรับปรุงเพื่อความเกียจคร้านของนักพัฒนาซอฟต์แวร์ เมื่อฉันเผชิญหน้ากับพวกเขาว่าทำไมพวกเขาถึงไม่มีเซิร์ฟเวอร์ CI พวกเขาตอบว่ามันยากที่จะตั้งค่าด้วยรหัสที่จัดระเบียบแบบนี้ (ฉันกำลังตั้งค่าตอนนี้และสาปแช่งรหัสองค์กร) การแก้ปัญหาถูกจัดระเบียบรอบ ๆ สิ่งประดิษฐ์การปรับใช้ (สิ่งที่ต้องมีการปรับใช้ร่วมกันอยู่ในโซลูชันเดียวกัน) ซึ่งฉันคิดว่าเป็นการตัดสินใจที่ชาญฉลาด แต่เนื้อหาของการแก้ปัญหาเหล่านั้น (โครงการ) อยู่ทั่วสถานที่ มีมติของวิธีปฏิบัติที่ดีที่สุดที่จะใช้เมื่อนำไลบรารีคลาสทั่วไปกลับมาใช้ซ้ำในหลายโซลูชัน / การปรับใช้ส่วน วิธีการโครงสร้างรหัสใน VCS วิธีอำนวยความสะดวกในการแบ่งปันตรรกะทางธุรกิจระหว่างส่วนการปรับใช้แยกต่างหาก

7
คุณเวอร์ชั่น / ติดตามการเปลี่ยนแปลงตาราง SQL อย่างไร
เมื่อทำงานในทีมนักพัฒนาที่ทุกคนทำการเปลี่ยนแปลงตารางท้องถิ่นและตารางการพัฒนาคุณจะเปลี่ยนแปลงการซิงค์ทั้งหมดอย่างไร ไฟล์บันทึกกลางที่ทุกคนเก็บการเปลี่ยนแปลงของ sql หรือไม่ หน้าวิกิเพื่อติดตามแก้ไขคำสั่งตาราง, ไฟล์. sql แต่ละไฟล์ที่ devs สามารถรันเพื่อนำโลคัล db ไปเป็นเวอร์ชันล่าสุดได้หรือไม่? ฉันใช้วิธีแก้ปัญหาเหล่านี้แล้วและฉันก็คาดหวังว่าจะได้วิธีแก้ปัญหาที่ดีร่วมกันซึ่งใช้งานได้ดีดังนั้นฉันจึงขอขอบคุณความคิดของคุณ

3
แบบแผนการตั้งชื่อที่ดีสำหรับสาขาที่มีชื่อใน {DVCS} ที่คุณเลือก
เรากำลังผสานรวม Mercurial อย่างช้าๆในสำนักงานของเราและทำการพัฒนาเว็บไซต์ที่เราเริ่มใช้สาขาที่มีชื่อ เราไม่พบธรรมเนียมที่ดีเท่าการตั้งชื่อสาขาของเรา พวกเราเหนื่อย: FeatureName (สามารถเห็นสิ่งนี้ทำให้เกิดปัญหาในบรรทัด) DEVInitial_FeatureName (อาจสับสนเมื่อนักพัฒนาเข้ามาและลงไปที่บรรทัด) {uniqueID (int)} _ คุณสมบัติ จนถึงตอนนี้ uniqueID_featureName กำลังชนะเรากำลังคิดที่จะเก็บมันไว้ในฐานข้อมูลขนาดเล็กเพื่อใช้อ้างอิง มันจะมี: branchID (int), featureName (varchar), featureDescription (varchar), วันที่, ใคร ฯลฯ ... สิ่งนี้จะทำให้เราสาขาเช่น: 1_NewWhizBangFeature, 2_NowWithMoreFoo, ... และเราจะมีการอ้างอิงง่าย ๆ ว่าสาขานั้นทำอะไรโดยไม่ต้องตรวจสอบบันทึก ทางออกที่ดีกว่าออกมี?

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

3
กลยุทธ์การแยก Git สำหรับโค้ดที่ยังไม่เผยแพร่ซึ่งใช้งานมานาน
ที่ทีมของเรานอกเหนือจากงานแต่ละหน่วย (เรื่อง) เรามีธีมการทำงานที่ยาวนานขึ้น (Epics) เรื่องราวหลากหลายทำให้มหากาพย์ ตามเนื้อผ้าเรามีฟีเจอร์กิ่งไม้สำหรับแต่ละเรื่องและรวมเหล่านั้นเข้ากับมาสเตอร์เมื่อพวกเขาผ่าน QA อย่างไรก็ตามเราต้องการเริ่มระงับการเผยแพร่เรื่องราวที่เสร็จสมบูรณ์ใน Epic จนกว่า Epic จะถือเป็น "คุณลักษณะเสร็จสมบูรณ์" เราจะปล่อยฟีเจอร์เหล่านี้เป็นการผลิตเมื่อปิด Epic ทั้งหมดแล้วเท่านั้น นอกจากนี้เรามีเซิร์ฟเวอร์ที่สร้างขึ้นทุกคืน - เราต้องการให้เรื่องราวทั้งหมดที่ปิด (รวมถึงส่วนที่เป็นส่วนหนึ่งของ Epics ที่ไม่สมบูรณ์) ถูกนำไปใช้กับเซิร์ฟเวอร์รายคืนนี้โดยอัตโนมัติ มีคำแนะนำใด ๆ เกี่ยวกับวิธีจัดการ repo ของเราเพื่อให้บรรลุเป้าหมายนี้หรือไม่? ฉันคิดว่าจะแนะนำ "สาขาที่ยิ่งใหญ่" ซึ่งเราจะรวมเรื่องที่ปิดไปยังสาขาที่เกี่ยวข้องแทนการเป็นอาจารย์โดยตรง แต่ข้อกังวลของฉันคือ: ฉันกังวลเกี่ยวกับความขัดแย้งที่อาจเกิดขึ้นหากสาขามหากาพย์เปิดให้บริการเป็นเวลานาน งานสร้างยามค่ำคืนจะต้องรวมสาขาของมหากาพย์ทั้งหมดไว้ในสาขา "สร้างยามค่ำคืน" อีกครั้งอาจเกิดความขัดแย้งผสานและสิ่งนี้จะต้องทำโดยอัตโนมัติ

2
หมายเลขเวอร์ชันเป็นส่วนหนึ่งของชื่อไฟล์
ฉันเห็นว่าซอฟต์แวร์บางตัวมีหมายเลขเวอร์ชันเป็นส่วนหนึ่งของชื่อไฟล์ในขณะที่ซอฟต์แวร์อื่นไม่ทำ ฉันคุ้นเคยกับประเภทหลังมากขึ้นและฉันคิดว่ามันเป็นที่นิยมมากกว่า แต่ฉันเห็นประเภทเก่าในห้องสมุดจาวาสคริปต์ ยกตัวอย่างเช่นชื่อไฟล์ jQuery เป็นเหมือนแทนjquery-2.1.0.js jquery.jsเมื่อใดก็ตามที่ฉันอัปเดตไฟล์ประเภทนี้ฉันจะต้องค้นหาสถานที่ในโปรแกรมอื่น ๆ ที่โหลดไฟล์เหล่านี้และเปลี่ยนชื่อไฟล์ที่พวกเขาอ้างถึงและลบเวอร์ชันเก่าของไลบรารีเหล่านี้ด้วยตนเอง ฉันไม่สะดวกดังนั้นฉันค่อนข้างเปลี่ยนชื่อไฟล์เพื่อยกเว้นหมายเลขรุ่นและเก็บชื่อไฟล์ที่อ้างถึงโดยไม่รวมหมายเลขรุ่น ฉันสงสัยว่าตัวเลขเหล่านี้ใช้สำหรับการควบคุมเวอร์ชันบางประเภท แต่ไม่ชัดเจนว่าจะใช้เมื่อใดและอย่างไร ข้อดีและข้อเสียของการรวมหมายเลขรุ่นในชื่อไฟล์คืออะไร มีความเห็นพ้องกันว่าในด้านใดของซอฟต์แวร์หรือภาษาที่ใช้หมายเลขรุ่นในชื่อไฟล์และพื้นที่ / ภาษาใดที่ไม่ได้ใช้? ถ้าเป็นเช่นนั้นมีเหตุผลใดที่

2
โครงสร้างของที่เก็บ Git
ขออภัยถ้านี่เป็นรายการซ้ำฉันมอง เรากำลังจะย้ายไป Git ในการโค่นล้มฉันเคยมีโฟลเดอร์ \ trunk, \ branch และ \ tags ด้วย Git การสลับไปมาระหว่างสาขาจะแทนที่เนื้อหาของไดเรกทอรีการทำงานดังนั้นฉันถูกต้องที่จะสมมติว่าวิธีที่เราใช้ในการทำงานนั้นไม่ได้ใช้กับ Git ฉันเดาว่าฉันจะมีโฟลเดอร์ repo ที่อาจเป็น gitignore และ readme.txt จากนั้นโฟลเดอร์สำหรับโครงการที่ประกอบเป็น repo และนั่นก็คือ

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

1
เหตุใดที่เก็บ Git / Mercurial จึงใช้พื้นที่น้อย
ฉันได้อ่านการสนทนาหลายครั้งที่นี่และเพื่อให้ที่เก็บ DVCS ใช้พื้นที่เท่ากันหรือน้อยกว่าที่เคาน์เตอร์ส่วนกลาง ฉันอาจจะพลาด แต่ฉันไม่พบคำอธิบายที่ดีว่าทำไมถึงเป็นเช่นนั้น ใครรู้บ้าง

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