מפתח | The CVS Team![]() |
---|---|
מחזור חיים | 19 בנובמבר 1990 – הווה (34 שנים)![]() |
גרסה אחרונה | 1.11.23 (8 במאי 2008)![]() |
מערכת הפעלה | מערכת הפעלה דמוית יוניקס![]() |
נכתבה בשפות | C![]() |
סוג רישיון | GNU General Public License, version 1.0 or later![]() |
קוד מקור | https://savannah.nongnu.org/projects/cvs![]() |
www | |
![]() ![]() |
CVS (ראשי תיבות שלConcurrent Versions System - מערכת גרסאות מקבילית, השם המלא כמעט שאינו בשימוש) היא מערכתניהול גרסאות מסוגשרת–לקוח שהייתה המערכת החופשית הראשונה מסוגה והפכה לפופולרית החל מראשיתשנות ה-90 של המאה ה-20. כיום עדיין בשימוש נרחב אולם מוחלפת בהדרגה על ידי מערכות מתקדמות יותר כגוןSubversion וגיט.
CVS פותחה על בסיסRCS, שהיא מערכת פשוטה לניהול גרסאות של קובץ בודד. החל משנת1984 פיתח דיק גרון (Dick Grune) מעטפת ל-RCS שמספקת אפשרות לעבודה במקביל וכן במספר קבצים ביחד. הגרסה המקורית נכתבה כאוסף של סקריפטיBourne Shell, ופורסמה ב-23 ביוני1986 תחת השם CVS[1][2].
בהמשך שוכתבה CVS בשפתC על ידי בריאן ברלינר ואחרים. CVS נותרה בשימוש פנימי בעיקר של המפתחים עד שנת1990, כשהיא הוצגה בכנסUSENIX[3]. בנובמבר 1990 שוחררה גרסה 1.0 ברישיוןGPL. בשנת1994 נוספה תמיכה בעבודה מרוחקת: התחברות דרךTCP/IP לשרת שיכול להיות במחשב אחר[4].
האפשרות להוסיף שרת מרוחק שיספק גישה מהירה לגרסה הנוכחית של קוד המקור של התוכנה התבררה כתכונה מועילה. פרויקטי תוכנה שונים (לדוגמה:OpenBSD) שמו שרתים ונתנו גישת CVSאנונימית, כלומר פתוחה לכל מי שיכול להתחבר מהאינטרנט. השימוש ב־CVS הפך לסטנדרטי בין פרויקטי תוכנה חופשית[5]
מערכת CVS משתמשת באוסף כלים קיימים (RCS,patch), אולם היא לא הצליחה להתמודד עם מספר בעיות שנבעו מתכנונה הבסיסי. מכיוון שכל המידע על הגרסאות נאגר על כל קובץ בנפרד, אין תמיכה פשוטה בפעולת הזזת קבצים. אין גם אפשרות להבטיח שפעולת commit תצליח או תיכשל כולה (atomic commit) - יכול להיות שפעולת commit שכוללת שינויים בכמה קבצים תיכשל באמצע ותשאיר חלק מהקבצים עם השינויים החדשים וחלק עם הגרסה הישנה[5].