$
המדריך

מכונת ה-Undo המושלמת

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

רן יניב הרטשטיין 14:4418.04.09

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

 

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

 

אבל The Mythical Man Month פורסם לראשונה ב-1975, והמאמרים בו נכתבו על בסיס ניסיונו של המחבר בפרויקט תוכנה גדול במיוחד - פיתוח מערכת הפעלה למחשב מיינפריים של יבמ. היום, רוב העבודה שמחשבים מסייעים בביצועה לא קשורה לפיתוח תוכנה, והיא בדרך כלל מתבצעת בצוותים קטנים במיוחד, של אדם אחד בלבד. אמנם, פקיד מנהלתי יכול לעזור מאוד לרבים מאיתנו בחיי היום יום, אבל אם להתעלם מעצותיהם של כמה בלוגרים אקסצנטריים שעשויים לחשוב אחרת, לא מדובר ברעיון מעשי.

  

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

 

מה זה ניהול גרסאות?

 

מתוך הנחה שהאלמנט החשוב ביותר בעבודה שלכם על המחשב הוא הקבצים שאתם יוצרים, מערכת ניהול גרסאות (או Revision Control, או Version Control, או Source Control) מספקת כלים מתקדמים יותר לניהול הקבצים האלה, מעבר למה שמציעה מערכת הקבצים הרגילה של מערכת ההפעלה.

 

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

 

יש הרבה מאוד מערכות ניהול גרסאות, חלקן חופשיות וחלקן מסחריות, חלקן בסיסיות ופשוטות מאוד וחלקן מורכבות הרבה יותר מהנחוץ עבור שימוש פרטי. תוכנות נפוצות רבות כוללות בתוכן מערכות ניהול גרסאות פשוטות, שמשתלבות באופן שקוף בשימוש הרגיל בתוכנה. לדוגמה, גרסאות קודמות של Word (לפני 2007) כללו אפשרות לניהול גרסאות שונות של מסמך אחד באותו הקובץ (בתפריט File > Versions).

 

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

 

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

 

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

  

ניהול גרסאות בוויקיפדיה: היסטוריית השינויים של העמוד "ניהול גרסאות" ניהול גרסאות בוויקיפדיה: היסטוריית השינויים של העמוד "ניהול גרסאות" קרדיט: צילום מסך

 

היסודות

 

הבסיס של Subversion הוא מאגר הקבצים (או ה-"Repository", ובקיצור "repo"). במאגר נמצאים כל התיקיות והקבצים שלכם, ועבור כל קובץ שומרת Subversion כל גרסה קודמת, יחד עם מידע נוסף על כל גרסה. עד כאן, Subversion לא שונה בהרבה ממערכת קבצים רגילה - לדוגמה, במהדורות מסוימות של ויסטה, ישנה אפשרות לשמור מספר גרסאות של כל קובץ באופן אוטומטי. ההבדל הוא באופן ש-Subversion מטפלת במאגר.

 

Subversion מחולקת לשניים, והמאגר הוא רק צד אחד מהסיפור. בצד השני נמצאים עותקים של הקבצים במאגר, שעליהם מתבצעת העבודה. ב-Subversion, המאגר קדוש. הוא פועל כמו לכספת. המשתמשים לעולם אינם פותחים קבצים ישירות מהמאגר, וודאי שלא מבצעים שינויים על קבצים במאגר עצמו. במקום זאת, כל משתמש מבקש מ-Subversion ליצור עבורו עותק מקומי לעבודה על הקבצים של המאגר (הנקרא "Working Copy", ובקיצור "WC"), ועובד רק על הקבצים שבעותק הזה. פעולת יצירת העותק נקראת "Check-Out", או בקיצור "co".

 

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

 

בתום העבודה, או במידת הצורך, המשתמש מבקש מ-Subversion לשלוח את הקבצים שהוא שינה בעותק שלו בחזרה למאגר, או לשמירה בטוחה בכספת. פעולה זו נקראת "Commit", או "Check-In", ובקיצור "ci". המשתמש בוחר את הקבצים שהוא רוצה לשלוח למאגר, וכותב הודעה קצרה שמסבירה את מהות השינויים שביצע. Subversion שולחת את הקבצים למאגר, ושם נשמרת גרסה חדשה של כל אחד מהקבצים, שמכילה את כל השינויים שביצע המשתמש. הגרסה הקודמת לא משתנה.

 

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

 

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

 

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

 

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

 

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

 

TortoiseSVN

 

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

 

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

 

לשם הניסוי, נתחיל מיצירת מאגר Subversion מקומי. בהמשך נסקור כמה אפשרויות ליצירת מאגר Subversion מקוון.

 

אחרי ההורדה וההתקנה, צרו תיקייה ריקה במקום כלשהו במחשב, ופתחו אותה. לחצו עם כפתור העכבר הימני במקום כלשהו בתוך התיקייה, והצביעו על האפשרות TortoiseSVN בתפריט. כאמור, TortoiseSVN פועלת כתוסף לסייר הקבצים. אין לה חלון ראשי משל עצמה, והיא רק מוסיפה אפשרות וכלים לעבודה עם Subversion לתוך התפריטים של סייר הקבצים. ליצירת מאגר, לחצו על Create repository here. אין צורך לבחור הגדרות או לשנות דבר - אחרי סיום יצירת המאגר, תוצג ההודעה "The repository was successfully created".

 

יצירת מאגר Subversion חדש יצירת מאגר Subversion חדש קרדיט: צילום מסך

 

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

 

פתחו את תיקיית המסמכים שלכים (או כל תיקייה אחרת שבה אתם רוצים לשמור את העותק המקומי), לחצו במקום כלשהו בתוך התיקייה עם כפתור העכבר הימני, ובחרו את האפשרות SVN Checkout.

 

התפריטים של TortoiseSVN משולבים בתפריטים של סייר הקבצים התפריטים של TortoiseSVN משולבים בתפריטים של סייר הקבצים קרדיט: צילום מסך

 

לביצוע ה-Check-Out, תתבקשו לציין את מיקום המאגר ואת שם התיקייה שבה יישמר העותק המקומי (העותק שעליו תוכלו לעבוד ולעשות שינויים, בניגוד למאגר שבו אף פעם לא נוגעים ישירות). כשתתחברו למאגרים דרך הרשת, תצטרכו להזין בשדה URL of Repository את כתובת המאגר שתקבלו מספק השירות או ממנהל הרשת - לדוגמה, http://svn.example.com/docs עבור מאגר ששמור באינטרנט, או ‎fileserver/svn/docs עבור מאגר ששמור ברשת משרדית.

 

הפעם, המאגר נמצא באותו המחשב. בשורה URL of Repository, הקלידו file:///‎, ולאחר מכן לחצו על הכפתור שבקצה השורה כדי לאתר את התיקייה שבה יצרתם את המאגר. TortoiseSVN תשלים בעצמה את שם התיקייה שבה יווצר העותק לפי שם התיקייה בה נמצא המאגר, אבל תוכלו לשנות אותו במידת הצורך.

 

ביצוע Check-Out למאגר Subversion ביצוע Check-Out למאגר Subversion קרדיט: צילום מסך

 

אחרי ביצוע ה-Check-Out, תופיע תיקייה חדשה של העותק המקומי, ועליה סימן של "וי" ירוק. TortoiseSVN משתמשת בסימנים האלה כדי לציין את מצב העותק המקומי והקבצים בו. פירושו של סימן זה הוא שעדיין לא נעשו שינויים מקומיים במאגר.

 

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

 

הדבר הבא שיש לעשות הוא להוסיף לעותק המקומי את הקבצים שאתם רוצים לנהל באמצעות Subversion.

  

עותק מקומי חדש עותק מקומי חדש קרדיט: צילום מסך

 

אחרי הוספת הקבצים לתיקיה של העותק המקומי, TortoiseSVN תציג עליהם סימן שאלה כחול. פירושו של סימן זה הוא ש-Subversion עדיין לא מכירה את הקבצים האלה, ושהם אינם קיימים במאגר. לחצו על התיקייה באמצעות כפתור העכבר הימני ובחרו את האפשרות SVN Commit כדי להוסיף את הקבצים החדשים למאגר. פעולת ההוספה של קבצים חדשים נקראת "Add".

 

סימן שאלה כחול מציין קבצים חדשים סימן שאלה כחול מציין קבצים חדשים קרדיט: צילום מסך

 

בחלון שיופיע, TortoiseSVN תציג את כל הקבצים החדשים (אם היו כאלה, היו מוצגים כאן גם כל הקבצים ששונו), ותאפשר לכם לבחור אילו קבצים אתם רוצים לשלוח למאגר. מכיוון שכרגע אנחנו רוצים להוסיף את כל הקבצים, פשוט סמנו את השורה Select / deselct all כדי לסמן את כל הקבצים בבת אחת. הזינו הערה אינפורמטיבית בשדה Message כדי לתאר את נסיבות ביצוע ה-Commit, ולחצו על OK.

 

בחרו את הקבצים לשליחה למאגר בחרו את הקבצים לשליחה למאגר קרדיט: צילום מסך

 

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

 

סימן וי ירוק מציין קבצים עדכניים סימן וי ירוק מציין קבצים עדכניים קרדיט: צילום מסך

 

אחרי ביצוע פעולת ה-Commit הראשונה, משתנה מספר הגרסה של המאגר מ-0 ל-1, וכל הקבצים במאגר יהיו בגרסה 1 (מספר הגרסה יוצג בתחתית החלון עם סיום ה-Commit). מספר הגרסה של המאגר סופר למעשה את פעולות ה-Commit שבוצעו עליו, וכל פעולת Commit מקדמת את מספר הגרסה של המאגר.

 

כאמור, מספרי הגרסאות של כל קובץ אינם עוקבים, אלא תלויים במספרן של פעולות ה-Commit שבהן הקובץ שונה. כך, למשל, אם ביצעתם שינויים בקובץ מסוים כשהמאגר היה בגרסה 1, אבל אז שיניתם רק קבצים אחרים עד שהמאגר הגיע לגרסה 5, הקובץ המקורי נשאר בגרסה 1. אם תעשו בו עתה שינוי נוסף, יהיו לכם שתי גרסאות שלו: גרסה 1 וגרסה 6, לפי המספרים של פעולות ה-Commit בהן הוא שונה.

 

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

 

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

 

סימן הקריאה האדום מציין קבצים ששונו סימן הקריאה האדום מציין קבצים ששונו קרדיט: צילום מסך

 

להשוואת גרסאות שונות של קובץ, לחצו עליו עם כפתור העכבר הימני, הצביעו על TortoiseSVN, ובחרו את האפשרות Diff כדי להשוות אותו עם הגרסה האחרונה.

 

השוואת גרסאות של מסמך Word - תצוגה משולבת משמאל, ושתי הגרסאות מימין השוואת גרסאות של מסמך Word - תצוגה משולבת משמאל, ושתי הגרסאות מימין קרדיט: צילום מסך

 

השוואת גרסאות של תמונה - התמונה המקורית משמאל, התמונה החדשה מימין השוואת גרסאות של תמונה - התמונה המקורית משמאל, התמונה החדשה מימין קרדיט: צילום מסך

 

השוואת מסמך טקסט - הגרסה המקורית משמאל, הגרסה החדשה מימין השוואת מסמך טקסט - הגרסה המקורית משמאל, הגרסה החדשה מימין קרדיט: צילום מסך

 

להצגת היסטוריית שינויים של מסמך, בחרו את האפשרות Show Log במקום Diff. אחרי עדכון הנתונים מהמאגר, TortoiseSVN תציג את כל הגרסאות הקודמות של הקובץ, יחד עם ההודעות שצורפו לפעולת ה-Commit של כל גרסה, ורשימה של הקבצים האחרים ששונו באותו פעולה. להשוואת גרסאות קודמות לגרסה הנוכחית שבעותק המקומי, לחצו עליה עם כפתור העכבר הימני ובחרו את האפשרות Compare with working copy. להשוואה בין שתי גרסאות כלשהן, בחרו את שתיהן (החזיקו את המקש Ctrl במקלדת לחוץ כדי לבחור יותר מגרסה אחת), לחצו על אחת מהן עם כפתור העכבר הימני, ובחרו את האפשרות Compare revisions.

 

היסטוריית שינויים של קובץ במאגר היסטוריית שינויים של קובץ במאגר קרדיט: צילום מסך

 

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

 

עדכון ושחזור גרסאות

 

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

 

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

 

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

 

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

 

לחצו על הקובץ עם כפתור העכבר הימני, הצביעו על TortoiseSVN, ובחרו את האפשרות Revert. מכיוון שאפשר לבצע את הפעולה הזו על מספר קבצים או על תיקייה שלמה, יופיע חלון שיציג רשימת קבצים ויאפשר לכם לבחור את הקבצים שאתם רוצים לשחזר. סמנו את הקבצים הרצויים ולחצו על OK.

 

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

 

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

 

במקרים נדירים יותר, תצטרכו לשחזר קובץ לגרסה מוקדמת יותר - לדוגמה, עם עשיתם טעות לפני כמה גרסאות ורק עכשיו שמתם לב אליה. לחצו על הקובץ (או על התיקייה) עם כפתור העכבר הימני, הצביעו על TortoiseSVN, ובחרו את האפשרות Show log. אתרו את הגרסה הרצויה מהרשימה (השתמשו בכלי ההשוואה כדי לוודא שזו הגרסה הנכונה), ובחרו את האפשרות Update item to revision כדי לעדכן את הקובץ שבעותק המקומי לגרסה הרצויה (Subversion משתמשת בפועל "לעדכן", אם כי בפועל מדובר בשחזור של גרסה עדכנית פחות).

 

לחלופין, בחרו את האפשרות Save revision to...‎ כדי לשמור את הגרסה הקודמת למחשב בלי להשפיע על הגרסה הקיימת כרגע בעותק המקומי. אם אתם כבר יודעים את מספר הגרסה שאליה צריך לעדכן את הקובץ, בחרו את האפשרות Update to revision...‎ במקום Show log, והזינו את מספר הגרסה הרצויה.

 

ספקי Subversion

 

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

 

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

  

BeanStalk הוא שירות מסחרי לניהול מאגרי Subversion, והוא מציע ממשק צבעוני ופשוט במיוחד וכלים ידידותיים לניהול ועיון במאגר, שיהיו מתאימים למשתמשים חדשים. החבילה החינמית מאפשרת ליצור מאגר אחד בנפח אחסון של 100MB, שמתאים בעיקר לניסוי השירות. החבילה הבסיסית עולה 15 דולר בחודש, ומאפשר ליצור 10 מאגרים בנפח אחסון כולל של 3GB.

 

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

  

להשוואה מקיפה יותר של אפשרויות אחסון למאגרי Subversion, עיינו בתוצאות החיפוש subversion hosting בגוגל.

 

מידע נוסף

 

מדריך זה משמש כהקדמה טובה ל-Subversion, אבל יש עוד הרבה מה לדעת. במידת הצורך, עיינו בקישורים הבאים כדי להשלים את החורים.

 

איך להשתמש בניהול גרסאות - מדריך תיאורטי מקיף וקריא במיוחד לניהול גרסאות מאת אריק סינק, ונקודת הפתיחה הטובה ביותר. כולל השוואות של מערכות ניהול גרסאות רבות, ודוגמאות מעשיות ממערכת ניהול הגרסאות המסחרית Vault (שאותה מפתחת החברה שבראשה עומד מחבר המדריך).

 

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

 

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

 

החיים ב-Subversion - ג'ואי הס הוא משתמש יוניקס ששומר את תיקיית הבית שלו, ולכן את כל החיים שלו, במאגר Subversion. תיאור מפורט ומועיל לשימוש  בלתי רגיל במערכת ניהול גרסאות.

 

Version Control with Subversion - גרסה מקוונת של הספר של O'Reilly. כולל הוראות שימוש מפורטות ותיעוד מלא של כל הפקודות הטקסטואליות של Subversion.

 

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