מאמרים

שיטות לבקרת גרסאות

 

 

בסביבה הדינמית שלנו עלינו לעדכן גרסאות של מוצר או תוכנה לפי בקשות מן הלקוחות לעתים קרובות.  מספר שחקנים משתתפים במהלך העדכון. חשוב לקבוע שיטה אחידה לכולם על-מנת להבטיח  גישה לכול השחקנים לכול הגרסאות.

 

לגבי בקרת גרסה

מהי "בקרת גרסאות", ולמה צריך לדאוג לך? בקרת גרסאות היא מערכת שמתעדת שינויים בקובץ או בקבוצת קבצים לאורך זמן, כך שתוכל לבדוק  גרסאות ספציפיות מאוחר יותר. עבור הדוגמאות בדף  זה, תשתמש בקוד מקור של התוכנה בתור הקבצים הנשלטים על גרסה מסוימת , אם כי במציאות אתה יכול לעשות זאת עם כמעט כל סוג של קובץ במחשב.

אם אתה מעצב גרפי או מעצב אינטרנט תרצה לשמור כל גרסה של תמונה או פריסה (מה שבוודאי תרצה), מערכת בקרת גרסאות (VCS) היא דבר חכם מאוד ולרצוי להשתמש בו. זה מאפשר לך להחזיר קבצים נבחרים למצב קודם, להחזיר את כל הפרויקט למצב קודם, להשוות שינויים לאורך זמן, לראות מי שינה לאחרונה משהו שעלול לגרום לבעיה בעתיד. מי הציג בעיה ומתי. השימוש ב-VCS גם אומר בדרך כלל שאם אתה מקלקל או מאבד קבצים, אתה יכול לשחזר אותם בקלות בעלות נמוכה.

 

להלן גרסאות בסיסיות לבקרה.

 

מערכות בקרת גרסאות מקומיות

שיטת הבחירה של אנשים רבים היא להעתיק קבצים לספרייה אחרת (אולי ספרייה עם חותמת זמן, אם הם חכמים). גישה זו נפוצה מאוד מכיוון שהיא כל כך פשוטה, אך היא גם נוטה לשגיאות בצורה מדהימה. קל לשכוח באיזו ספרייה אתה נמצא ולכתוב בטעות לקובץ הלא נכון או להעתיק קבצים שלא התכוונת.

כדי להתמודד עם בעיה זו, מתכנתים פיתחו מזמן VCSs מקומיים בעלי מסד נתונים פשוט ששמר את כל השינויים בקבצים תחת בקרת גרסאות.

 

 

Figure1- Local version control

 

אחד ה-VCS הפופולרי ביותר היה מערכת בשם RCS, המופצת עד היום עם מחשבים רבים. RCS פועל על ידי שמירה על ערכות תיקונים (כלומר, ההבדלים בין קבצים) בפורמט מיוחד בדיסק; לאחר מכן ניתן ליצור מחדש איך כל קובץ נראה בכל נקודת זמן על ידי הוספת כל התיקונים.

 

מערכות בקרת גרסאות מרכזיות

הנושא העיקרי הבא שאנשים נתקלים בו הוא שהם צריכים לשתף פעולה עם מפתחים במערכות אחרות. כדי להתמודד עם בעיה זו פותחו מערכות בקרת גרסאות מרכזיות (CVCSs). למערכות אלו (כגון CVS, Subversion ו-Perforce) יש שרת יחיד המכיל את כל הקבצים עם גרסאות, ומספר לקוחות הבודקים קבצים מאותו מקום מרכזי. במשך שנים רבות, זה היה סטנדרט לבקרת גרסאות.

 

 

Figure 2- Centralized version control

 

הגדרה זו מציעה יתרונות רבים, במיוחד על פני VCSs מקומיים. לדוגמה, כולם יודעים במידה מסוימת מה כל השאר בפרויקט עושים. למנהלים יש שליטה עדינה על מי יכול לעשות מה, והרבה יותר קל לנהל CVCS מאשר להתמודד עם מסדי נתונים מקומיים בכל לקוח.עם זאת, להגדרה הזו יש גם כמה חסרונות רציניים. הבולט ביותר הוא נקודת הכשל הבודדת שהשרת המרכזי מייצג. אם השרת הזה נופל לשעה, אז במהלך השעה הזו אף אחד לא יכול לשתף פעולה בכלל או לשמור שינויים בגרסה לכל דבר שהוא עובד עליו. אם הדיסק הקשיח שבו נמצא מסד הנתונים המרכזי פגום, ולא נשמרו גיבויים נאותים, אתה מאבד לחלוטין -את כל ההיסטוריה של הפרויקט מלבד כל תמונת מצב בודדות שיש לאנשים על המחשבים המקומיים שלהם. VCSs מקומיים סובלים מאותה בעיה — בכל פעם שיש לך את כל ההיסטוריה של הפרויקט במקום אחד, אתה מסתכן לאבד את הכול.

 

מערכות בקרת גרסאות מבוזרותזה המקום שבו נכנסות מערכות בקרת גרסאות מבוזרות (DVCSs). ב-DVCS (כגון Git, Mercurial, Bazaar או Darcs), לקוחות לא רק בודקים את תמונת המצב העדכנית ביותר של הקבצים; במקום זאת, הם משקפים באופן מלא על  המאגר, כולל ההיסטוריה המלאה שלו. לפיכך, אם שרת כלשהו נופל , ומערכות אלו שיתפו פעולה באמצעות אותו שרת, ניתן להעתיק כל אחד ממאגרי הלקוח בחזרה לשרת כדי לשחזר אותו. כל חיקוי  (clone) הוא למעשה גיבוי מלא של כל הנתונים.

 

 

Figure 3 - Distributed version control

 

יתר על כן, רבות מהמערכות הללו מתמודדות די טוב עם מספר מאגרים מרוחקים איתם הם יכולים לעבוד, כך שתוכל לשתף פעולה עם קבוצות שונות של אנשים בדרכים שונות בו זמנית באותו פרויקט. זה מאפשר לך להגדיר כמה סוגים של זרימות עבודה שאינן אפשריות במערכות מרכזיות, כגון מודלים היררכיים. 

 

 

054-7510280