อ่าน 6 นาที
ระบบควบคุมซอร์สโค้ด
ระบบควบคุมซอร์สโค้ด ( SCCS ) เป็นระบบควบคุมเวอร์ชันที่ออกแบบมาเพื่อติดตามการเปลี่ยนแปลงในซอร์สโค้ดและไฟล์ข้อความอื่นๆ ในระหว่างการพัฒนาซอฟต์แวร์
ระบบควบคุมซอร์สโค้ด
| ระบบควบคุมซอร์สโค้ด (SCCS) | |
|---|---|
| ผู้เขียนต้นฉบับ | มาร์ค เจ. รอชไคนด์ |
| นักพัฒนา | เบลล์แล็บส์ |
| ปล่อย | พ.ศ. 2516 |
| เขียนเป็น | เวอร์ชันแรก: SNOBOL4เขียนใหม่: C |
| ระบบปฏิบัติการ | OS/360 , ยูนิก , ระบบคล้ายยูนิก |
| แพลตฟอร์ม | IBM System/370 , PDP-11 , IA-32 |
| พิมพ์ | การควบคุมเวอร์ชัน |
| ใบอนุญาต | ใบอนุญาตกรรมสิทธิ์ใบอนุญาตการพัฒนาและการจัดจำหน่ายทั่วไป |
| เว็บไซต์ | ข้อกำหนดพื้นฐานของกลุ่มเปิด ฉบับที่ 7, IEEE Std 1003.1-2008, ฉบับปี 2016 |
| ที่เก็บข้อมูล | ไม่มีข้อมูล |
ระบบควบคุมซอร์สโค้ด ( SCCS ) เป็นระบบควบคุมเวอร์ชันที่ออกแบบมาเพื่อติดตามการเปลี่ยนแปลงในซอร์สโค้ดและไฟล์ข้อความอื่นๆ ในระหว่างการพัฒนาซอฟต์แวร์ ซึ่งช่วยให้ผู้ใช้สามารถเรียกดูเวอร์ชันก่อนหน้าของซอร์สโค้ดต้นฉบับและการเปลี่ยนแปลงที่จัดเก็บไว้ได้ เดิมทีระบบนี้ได้รับการพัฒนาขึ้นที่Bell Labsตั้งแต่ปลายปี 1972 โดยMarc Rochkindสำหรับ คอมพิวเตอร์ IBM System/370ที่ใช้ระบบปฏิบัติการ OS/ 360 [ 1 ]
คุณลักษณะเด่นของ SCCS คือ สตริง sccsidที่ฝังอยู่ในซอร์สโค้ด และ SCCS จะอัปเดตโดยอัตโนมัติสำหรับแต่ละเวอร์ชัน[ 2 ]ตัวอย่างนี้แสดงให้เห็นถึงการใช้งานในภาษาการเขียนโปรแกรม C :
static char sccsid [] = "@(#)ls.c 8.1 (Berkeley) 6/11/93" ;สตริงนี้ประกอบด้วยชื่อไฟล์ วันที่ และอาจมีข้อความแสดงความคิดเห็นด้วย หลังจากคอมไพล์แล้ว สามารถค้นหาสตริงนี้ในไฟล์ไบนารีและออบเจ็กต์ได้โดยการค้นหารูปแบบ@(#)และสามารถใช้เพื่อกำหนดว่า ไฟล์ ซอร์สโค้ด ใด ถูกใช้ระหว่างการคอมไพล์whatคำสั่งนี้สามารถใช้เพื่อทำให้การค้นหาสตริงเวอร์ชันนี้เป็นไปโดยอัตโนมัติ[ 3 ]
ประวัติศาสตร์
ในปี พ.ศ. 2515 Marc Rochkindได้พัฒนา SCCS ในSNOBOL4ที่Bell Labsสำหรับ คอมพิวเตอร์ IBM System/370ที่ใช้OS/360 MVT [ 1 ]เขาได้เขียน SCCS ใหม่ด้วยภาษาโปรแกรม C เพื่อใช้งานภายใต้UNIXซึ่งในขณะนั้นทำงานบนPDP-11ในปี พ.ศ. 2516
เวอร์ชันแรกที่เผยแพร่สู่สาธารณะคือ SCCS เวอร์ชัน 4 เมื่อวันที่ 18 กุมภาพันธ์ พ.ศ. 2520 [ 4 ]สามารถใช้งานได้กับระบบปฏิบัติการProgrammer's Workbench (PWB) เวอร์ชัน 4 ของ SCCS เป็นเวอร์ชันแรกที่ใช้รูปแบบไฟล์ประวัติแบบข้อความ เวอร์ชันก่อนหน้าใช้รูปแบบไฟล์ประวัติแบบไบนารี เวอร์ชัน 4 ไม่ได้ถูกเขียนหรือดูแลโดย Marc Rochkind อีกต่อไป ต่อมา SCCS ถูกรวมอยู่ในระบบปฏิบัติการ System IIIและSystem VของAT&Tแต่ไม่ได้อนุญาตให้ใช้กับ32Vซึ่งเป็นต้นกำเนิดของBSD [ 5 ] ชุดคำสั่ง SCCS เป็นส่วนหนึ่งของSingle UNIX Specificationแล้ว
SCCS เป็นระบบควบคุมเวอร์ชันที่โดดเด่นสำหรับ Unix จนกระทั่งระบบควบคุมเวอร์ชัน รุ่นหลัง โดยเฉพาะ RCSและCVS ในภายหลัง ได้รับการยอมรับอย่างแพร่หลายมากขึ้น ปัจจุบัน ระบบควบคุมเวอร์ชันรุ่นแรกๆ เหล่านี้โดยทั่วไปถือว่าล้าสมัย โดยเฉพาะใน ชุมชน โอเพนซอร์สซึ่งส่วนใหญ่ได้นำ ระบบ ควบคุมเวอร์ชันแบบกระจาย มาใช้ แล้ว อย่างไรก็ตาม รูปแบบไฟล์ SCCS ยังคงถูกใช้ภายในโดยโปรแกรมควบคุมเวอร์ชันรุ่นใหม่บางโปรแกรม รวมถึงBitKeeperและTeamWareซึ่ง TeamWare เป็นส่วนหน้าของ SCCS Sablime [ 6 ]ได้รับการพัฒนาจาก SCCS เวอร์ชันที่แก้ไขแล้ว[ 7 ]แต่ใช้รูปแบบไฟล์ประวัติที่ไม่เข้ากันกับ SCCS รูปแบบไฟล์ SCCS ใช้เทคนิคการจัดเก็บที่เรียกว่าinterleaved deltas (หรือ weave [ 8 ] ) ปัจจุบันนักพัฒนา ซอฟต์แวร์ระบบควบคุมเวอร์ชันหลายคนถือว่าเทคนิคการจัดเก็บนี้เป็นพื้นฐานสำหรับ เทคนิค การรวมและการกำหนดเวอร์ชัน ขั้นสูง [ 9 ]เช่น การรวม "Precise Codeville" ("pcdv")
นอกจากการแก้ไขปัญหาปี 2000ในปี 1999 แล้ว ไม่มีการพัฒนาใดๆ เกิดขึ้นกับ SCCS เวอร์ชันต่างๆ ที่เฉพาะเจาะจงสำหรับผู้จำหน่าย UNIX [ 10 ] ในปี 2006 Sun Microsystems (ปัจจุบันเป็นส่วนหนึ่งของOracle ) ได้เผยแพร่ SCCS เวอร์ชัน Solaris ของตน เป็นโอเพนซอร์สภายใต้ใบอนุญาต CDDLซึ่งเป็นส่วนหนึ่งของความพยายามในการเปิดซอร์สโค้ด Solaris [ 11 ]
พื้นหลัง
ระบบควบคุมซอร์สโค้ด (SCCS) เป็นระบบสำหรับควบคุมการเปลี่ยนแปลงไฟล์และประวัติ โดยทั่วไปซอฟต์แวร์จะได้รับการอัปเกรดเป็นเวอร์ชันใหม่โดยการแก้ไขข้อผิดพลาด ปรับปรุงอัลกอริทึม และเพิ่มฟังก์ชันเพิ่มเติม[ 12 ]การเปลี่ยนแปลงซอฟต์แวร์ทำให้เกิดปัญหาที่ต้องใช้การควบคุมเวอร์ชันเพื่อแก้ไข[ 1 ]
- โค้ดต้นฉบับใช้พื้นที่มากเกินไป เนื่องจากมีการทำซ้ำในทุกเวอร์ชัน
- การหาข้อมูลเกี่ยวกับเวลาและสถานที่ที่การเปลี่ยนแปลงเกิดขึ้นนั้นเป็นเรื่องยาก
- การค้นหาเวอร์ชันที่ ลูกค้า มีปัญหา อย่างแน่ชัดนั้นเป็นเรื่องยาก
SCCS ถูกสร้างขึ้นเพื่อแก้ปัญหาเหล่านี้ SCCS จาก AT&T มีเวอร์ชันหลักห้าเวอร์ชันสำหรับระบบปฏิบัติการ IBM และเวอร์ชันหลักห้าเวอร์ชันสำหรับ UNIX [ 13 ] การใช้งานเฉพาะสองแบบที่ใช้ SCCS ได้แก่ PDP 11 ภายใต้ Unix และ IBM 370 ภายใต้ระบบปฏิบัติการ[ 1 ]
องค์ประกอบ
SCCS ประกอบด้วยสองส่วน: คำสั่ง SCCS และไฟล์ SCCS [ 14 ]การดำเนินการพื้นฐานทั้งหมด (เช่น สร้าง ลบ แก้ไข) สามารถทำได้โดยใช้คำสั่ง SCCS [ 14 ]ไฟล์ SCCS มีคำนำหน้ารูปแบบเฉพาะs.ซึ่งถูกควบคุมโดยคำสั่ง SCCS [ 2 ]
ไฟล์ SCCS
ไฟล์ SCCS ประกอบด้วยสามส่วน: [ 15 ]
- ตารางเดลต้า
- แฟล็กการเข้าถึงและการติดตาม
- เนื้อหาหลักของข้อความ
ตารางเดลต้า
ใน SCCS เดลต้าคือการแก้ไขครั้งเดียวในไฟล์ SCCS เดลต้าจะถูกเก็บไว้ในตารางเดลต้า ดังนั้นไฟล์ SCCS แต่ละไฟล์จึงมีบันทึกการเปลี่ยนแปลงของตัวเอง[ 15 ]
แฟล็กควบคุมและติดตามในไฟล์ SCCS
การดำเนินการทุกอย่างของไฟล์ SCCS แต่ละไฟล์จะถูกติดตามด้วยแฟล็ก หน้าที่ของแฟล็กมีดังต่อไปนี้: [ 15 ]
- ตั้งค่าสิทธิ์ในการแก้ไขไฟล์ SCCS ทุกไฟล์
- ควบคุมการเผยแพร่ไฟล์ SCCS ทุกไฟล์อย่างเข้มงวด
- อนุญาตให้แก้ไขไฟล์ SCCS ทุกไฟล์ ร่วมกันได้
- การเปลี่ยนแปลงที่อ้างอิงซึ่งกันและกันของไฟล์ SCCS ทุกไฟล์
ร่างกาย
SCCS ใช้เรคอร์ดควบคุมสามประเภทเพื่อติดตามการแทรกและการลบที่ใช้ในเดลต้าต่างๆ ได้แก่ เรคอร์ดควบคุมการแทรก เรคอร์ดควบคุมการลบ และเรคอร์ดควบคุมการสิ้นสุด เมื่อใดก็ตามที่ผู้ใช้เปลี่ยนแปลงส่วนใดส่วนหนึ่งของข้อความ จะมีการแทรกเรคอร์ดควบคุมไว้รอบๆ การเปลี่ยนแปลงนั้น เรคอร์ดควบคุมจะถูกจัดเก็บไว้ในเนื้อหาพร้อมกับเรคอร์ดข้อความต้นฉบับ[ 1 ]
คำสั่งพื้นฐานของ SCCS
SCCS มีชุดคำสั่งในรูปแบบของการเรียกใช้มาโครที่ดำเนินการหรือเริ่มต้นฟังก์ชันการจัดการซอร์สโค้ดด้วยไวยากรณ์ที่เรียบง่าย เช่น create, get, edit, prt [ 16 ] [ 17 ] นอกจากนี้ยังให้การเข้าถึงประวัติการแก้ไขของไฟล์ภายใต้การจัดการ คำ สั่งเหล่านี้ถูกนำไปใช้เป็นอาร์กิวเมนต์กริยาในโปรแกรมไดรเวอร์sccs
สร้าง
คำสั่ง sccs createใช้ข้อความจากไฟล์ต้นฉบับเพื่อสร้างไฟล์ประวัติใหม่ ตัวอย่างเช่น:
$ sccs create program.c program.c: 1.1 87 บรรทัดผลลัพธ์ที่ได้คือ ชื่อ เวอร์ชัน และจำนวนบรรทัด
คำสั่งนี้เป็นมาโครที่ขยายเป็นadminเพื่อสร้างไฟล์ประวัติใหม่ ตามด้วยgetเพื่อเรียกดูไฟล์นั้น
แก้ไข
$ sccs edit program.c 1.1 new delta 1.2 87 linesแก้ไขไฟล์เฉพาะไฟล์หนึ่ง
คำสั่งนี้เป็นมาโครที่ขยายเป็นget -e
เดลเก็ต
$ sccs delget program.c comments? main function enhanced 1.2 10 inserted 0 deleted 87 unchanged 1.2 97 linesตรวจสอบเวอร์ชันใหม่และดาวน์โหลดเวอร์ชันใหม่จาก sccs
คำสั่งนี้เป็นมาโครที่ขยายเป็นdeltaเพื่อตรวจสอบไฟล์เวอร์ชันใหม่ จากนั้นจึงใช้getเพื่อดึงไฟล์นั้นออกมา
รับ
$ sccs get program.c 1.1 87 บรรทัดผลลัพธ์ที่ได้คือเวอร์ชันและจำนวนบรรทัดที่คุณต้องการดึงจากไฟล์ที่ระบุ
พาร์ท
$ sccs prt program.c คำสั่งนี้จะสร้างรายงานเกี่ยวกับการเปลี่ยนแปลงในซอร์สโค้ด
การนำไปใช้
เวอร์ชัน UNIX SCCS
ระบบปฏิบัติการ UNIXส่วนใหญ่มี SCCS เวอร์ชันหนึ่งซึ่งอย่างไรก็ตามมักจะไม่มีการพัฒนาต่อยอดอย่างต่อเนื่อง[ 18 ]
ส้อมของ Jörg Schilling
Jörg Schillingผู้ล่วงลับ(ผู้ร้องขอการเผยแพร่ SCCS ในช่วงแรกๆ ของ โครงการ OpenSolaris ) [ 19 ]ได้ดูแลSCCS เวอร์ชันแยก[ 20 ] [ 21 ]ซึ่งอิงตามซอร์สโค้ดของ OpenSolaris โดยได้รับการปรับปรุงคุณสมบัติหลักๆ แต่ยังคงเข้ากันได้กับ SCCS เวอร์ชันดั้งเดิม เว้นแต่จะใช้โหมด "โครงการใหม่" [ 22 ]
โครงการมรดกตกทอด
โครงการHeirloomประกอบด้วย SCCS เวอร์ชันที่ได้มาจากซอร์สโค้ดOpenSolaris [ 23 ]และได้รับการบำรุงรักษาระหว่างเดือนธันวาคม พ.ศ. 2549 ถึงเมษายน พ.ศ. 2550 [ 24 ]
ยูทิลิตี้การแปลง GNU
GNUเสนอโปรแกรมGNU CSSC ("Compatibly Stupid Source Control") ที่เข้ากันได้ กับ SCCS ซึ่งบางครั้งใช้ในการแปลงไฟล์เก็บถาวร SCCS ไปยังระบบที่ใหม่กว่า เช่นCVSหรือSubversion [ 25 ]ไม่ใช่การใช้งาน SCCS ที่สมบูรณ์[ 26 ]และไม่แนะนำให้ใช้ในโครงการใหม่ แต่ส่วนใหญ่มีไว้สำหรับการแปลงเป็นระบบควบคุมเวอร์ชันที่ทันสมัย
ระบบควบคุมเวอร์ชันอื่นๆ
ตั้งแต่ทศวรรษ 1990 เป็นต้นมาระบบควบคุมเวอร์ชันใหม่ๆ จำนวนมากได้รับการพัฒนาและได้รับความนิยม โดยได้รับการออกแบบมาเพื่อจัดการโครงการที่มีไฟล์จำนวนมาก และมีฟังก์ชันการทำงานขั้นสูง เช่น การทำงานแบบหลายผู้ใช้ การควบคุมการเข้าถึง การสร้างอัตโนมัติ การสนับสนุนเครือข่าย การจัดการการเผยแพร่ และการควบคุมเวอร์ชันแบบกระจายBitkeeperและTeamWareใช้รูปแบบไฟล์ SCCS ภายใน และสามารถถือได้ว่าเป็นผู้สืบทอดของ SCCS [ 27 ] [ 28 ]
บนระบบ BSD นั้น SCCSID จะถูกแทนที่ด้วย RCSID ที่เริ่มต้นและสิ้นสุดด้วย$ ; เครื่องมือที่เกี่ยวข้องคือident [ 29 ]ระบบนี้เดิมทีใช้โดยRCS และถูกเพิ่มโดยอัตโนมัติเมื่อเช็คเอาท์ ตัวระบุการควบคุมการ แก้ไขซอร์สโค้ดที่ได้นั้นจะถูกบันทึกไว้ใน คู่มือสไตล์ของ NetBSD [ 30 ]และFreeBSD [ 31 ]สำหรับฐานโค้ดของตนเอง NetBSD กำหนดคำหลักแบบกำหนดเอง$NetBSD: ...$ในขณะที่ FreeBSD กำหนด$FreeBSD: ...$และมาโครที่เปลี่ยนชื่อเป็น __FBSDID
ระบบควบคุมเวอร์ชัน SRC สามารถใช้รูปแบบไฟล์ SCCS ภายใน (หรือRCS ) และมุ่งเน้นที่จะมอบอินเทอร์เฟซผู้ใช้ที่ดีกว่าสำหรับ SCCS ในขณะที่ยังคงจัดการเฉพาะโปรเจกต์ไฟล์เดียว[ 32 ]
อ่านเพิ่มเติม
- บทความจากมาร์ค รอชไคนด์ เกี่ยวกับวิธีการคิดค้น SCCS
- – เอกสารอ้างอิงเชลล์และยูทิลิตี้จากข้อกำหนด UNIX ฉบับเดียวเวอร์ชัน 5 จากThe Open Group
- – คู่มือคำสั่งทั่วไปของ FreeBSD
- – คู่มืออ้างอิงคำสั่งผู้ใช้Solaris 11.4
- – หน้าคู่มือ AIX 7.3
- – คู่มือคำสั่งผู้ใช้HP-UX 11i
- – คู่มือคำสั่งผู้ใช้IRIX 6.5
ลิงก์ภายนอก
- SCCS ของ Schily บน Codeberg
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ระบบควบคุมซอร์สโค้ด
ระบบควบคุมซอร์สโค้ด ( SCCS ) เป็นระบบควบคุมเวอร์ชันที่ออกแบบมาเพื่อติดตามการเปลี่ยนแปลงในซอร์สโค้ดและไฟล์ข้อความอื่นๆ ในระหว่างการพัฒนาซอฟต์แวร์
ประวัติศาสตร์
ในปี พ.ศ. 2515 Marc Rochkind ได้พัฒนา SCCS ใน SNOBOL4 ที่ Bell Labs สำหรับ คอมพิวเตอร์ IBM System/370 ที่ใช้ OS/360 MVT [ 1 ] เขาได้เขียน SCCS ใหม่ด้วยภาษาโปรแกรม C เพื่อใช้งานภายใต้ UNIX ซึ่งในขณะนั้นทำงานบน PDP-11 ในปี พ.ศ. 2516
พื้นหลัง
ระบบควบคุมซอร์สโค้ด (SCCS) เป็นระบบสำหรับควบคุมการเปลี่ยนแปลงไฟล์และประวัติ โดยทั่วไปซอฟต์แวร์จะได้ รับการอัปเกรด เป็นเวอร์ชันใหม่โดยการแก้ไขข้อผิดพลาด ปรับปรุงอัลกอริทึม และเพิ่มฟังก์ชันเพิ่มเติม [ 12 ]...
องค์ประกอบ
SCCS ประกอบด้วยสองส่วน: คำสั่ง SCCS และไฟล์ SCCS [ 14 ] การดำเนินการพื้นฐานทั้งหมด (เช่น สร้าง ลบ แก้ไข) สามารถทำได้โดยใช้คำสั่ง SCCS [ 14 ] ไฟล์ SCCS มีคำนำหน้ารูปแบบเฉพาะ s. ซึ่งถูกควบคุมโดยคำสั่ง SCCS [ 2 ]