אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » SVN » עבודה עם לוג של SVN

עבודה עם לוג של SVN

רן בר-זיק נובמבר 8, 2015 7:01 am אין תגובות

מעבר בין גרסאות, השוואה בין גרסאות וחזרה לגרסה מסוימת ב-SVN

»מדריך לעבודה עם SVN – קונפליקטים
»כלים גרפיים לניהול SVN
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

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

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

$ svn log
------------------------------------------------------------------------
r7 | ran | 2015-10-10 21:28:48 +0300 (ב', 12 אוק 2015) | 2 lines

Making it decisive 

------------------------------------------------------------------------
r2 | ran | 2015-10-10 20:33:16 +0300 (ש', 10 אוק 2015) | 4 lines

Adding echo

M    trunk/index.php

------------------------------------------------------------------------
r1 | ran | 2015-10-10 20:13:17 +0300 (ו', 9 אוק 2015) | 5 lines

Initial

A    trunk
A    trunk/index.php

------------------------------------------------------------------------

אפשר לראות כאן את הקומיטים האחרונים שנעשו לפרויקט והקבצים השונים. למשל, אפשר לראות שב19 באוקטובר שיניתי את index.php. ההערה שלי היא "Adding echo". שימו לב שלכל קומיט יש מספר סידורי – למשל r1 או r7. אם מיזגנו ענף, ב-SVN המיזוג נחשב כקומיט והוא אינו שונה מכל קומיט אחר. למשל השינוי r7 הוא מיזוג של שני ענפים ולא רואים את זה בלוג. לפחות ב-SVN.

הגרסה האחרונה היא r7 במקרה הזה והיא הגרסה המייצגת.

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

svn diff 

אני אקבל משהו בסגנון הזה:

$ svn diff 
Index: index.php
===================================================================
--- index.php	(revision 11)
+++ index.php	(working copy)
@@ -1,6 +1,6 @@
 <?php
 
 //Printing Hello World!
-print "Hello World :)";
+print "Hello World :O";

זה יכול להראות מבלבל וגם קצת מפחיד, אבל אם נסתכל על זה קצת לעומק, נראה שזה די קריא. בגדול אנחנו מקבלים את רשימת הקבצים שנעשו בהם שינויים. במקרה שלנו index.php. מה שיש ליד ה[email protected]@ הוא פירוט של השורות שבהם יש את ההבדלים. במקרה שלנו – הוא מציג את שורה 1-6 בשני הקבצים.

בתחילה ה-diff מראה כמה שורות שאין בהם שינוי, זה ה- <?php וההערה. ליד המינוס הוא מציג את השורה שנמחקה (במקרה הזה ה-hello world עם החיוך) השורה הזו בעצם היא שורה שנמצאת בגרסה האחרונה במנהל הגרסאות אך לא נמצאת בגרסה המקומית. ליד הפלוס הוא מציג שורות שנמצאות בגרסה המקומית ולא נמצאות בגרסה ששמורה במנהל הגרסאות. במקרה הזה השורה עם הסמיילי המופתע.

מה אנחנו למדים מה-diff הזה? שהחלפתי את הסמיילי, זה הכל!

אני יכול לבצע checkin לקוד שנמצא אצלי במחשב ולהכניס אותו למנהל הגרסאות כגרסה האחרונה. אם אעשה זאת, יקרו שני דברים: הראשון הוא שב-svn log אני אראה את ה-checkin. השני הוא שאם אני אריץ svn diff אני לא אקבל דבר, כי אין שינוי כלל בין הגרסה במנהל הגרסאות לגרסה המקומית אצלי.

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

svn revert index.php

הפקודה הזו מוחקת את השינויים שנעשו ב-index.php ומשווה את הקובץ המקומי לקובץ של הגרסה האחרונה במנהל הגרסאות.

אם יש יותר מקובץ אחד, אפשר לעשות revert להכל:

svn revert -R .

ה-revert להכל נקרא גם revert head. כשאומרים revert head מתכוונים לחזרה לגרסה האחרונה.

כמו שאפשר לעשות diff בין הגרסה הלוקלית לגרסה האחרונה ששמורה ב-SVN אפשר לעשות diff בין הגרסה הלוקלית לכל גרסה ששמורה ב-SVN. את הגרסאות אנו מזהים באמצעות המספרים הסידוריים שלהן שנמצאים בלוג. ראינו קודם שזה r1, r2 ו-r7.

כך מבצעים השוואה בין הגרסה הלוקלית לגרסת r1:

svn diff --revision r1

וכך מבצעים השוואה בין גרסת r1 ל-r2.

svn diff --revision r1:r2

הפלט הוא אותו פלט של diff שלמדנו לנתח קודם לכן.

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

svn update -r r1

כדי לחזור לגרסה הנוכחית ששמורה במנהל הגרסאות, אנו יכולים להשתמש בפקודה הזו:

svn update

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

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

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

במאמר הבא נלמד על כלים נוספים לעבודה עם SVN

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
מדריך ל-SVN
svn

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד