Subversion/מניפולציות על הקוד המקומי


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

שינויים בקבצים

עריכה

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

כדי להוסיף קובץ או תיקייה למערכת, יש לכתוב:

svn add file

יש להחליף את file בשם הקובץ.


 

שימו לב:

ניתן להשתמש בנתיב יחסי, וניתן גם להשתמש בסימן * שמשמעותו "כל תו וכל מספר של תווים במקום זה" - למשל, ‎*.exe יתייחס לכל קבצי ה-exe. כמו כן ניתן לציין מספר קבצים. הערה זו חלה בכל מקום שבו יש לציין קובץ.

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

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

svn delete file

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

הפקודות הבאות:

svn move file1 file2
svn copy file1 file2
svn mkdir dir

מעבירות קובץ/תיקייה, מעתיקות קובץ/תיקייה ויוצרות תיקייה בהתאמה. יצוין שפקודת svn move שווה לפקודת svn copy ואחריה פקודת svn delete.

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

svn revert file

אם הקובץ שונה מהמקור, הוא ישוחזר למצבו המקורי; אם הוא נוסף למערכת באמצעות פקודת svn add, ההוספה תבוטל; אם הוא נמחק (באמצעות פקודת svn delete או ידנית), המחיקה תבוטל והוא ישוחזר; ואם הוא הועתק לשם זה, הוא יימחק. גם המאפיינים (Properties) שלו ישוחזרו למצבם המקורי.

אם מצוינת תיקייה במקום קובץ, הרי שאם היא נוספה, ההוספה תבוטל, ואם היא נמחקה, המחיקה תבוטל.

כדי לשחזר לא רק תיקייה, אלא גם את כל הקבצים בתיקייה, יש לכתוב:

svn revert -R dir

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

הצגה של מצב הקוד

עריכה

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

  • M - הקובץ שונה באופן מקומי
  • A - הקובץ נוסף באופן מקומי
  • D - הקובץ נמחק באופן מקומי
  • C - הקובץ במצב של קונפליקט
  • ? - הקובץ אינו חלק מהקוד המקומ
  • ! - הקובץ לא נמצא, כנראה שהוא נמחק ללא שימוש ב-svn delete

פקודה נוספת מציגה את השינויים בקבצים עצמם:

svn diff
svn diff file

הפקודה הראשונה מציגה את כל השינויים בתיקייה, והשנייה מציגה את השינויים בקובץ מסוים. ניתן להשתמש גם בפקודה:

svn diff > patch

כדי ליצור קובץ (בשם patch) שכולל את כל השינויים במערכת, כך שאפשר יהיה להעביר אותם למערכת אחרת באמצעות הפקודה patch (בלינוקס/יוניקס בלבד; בחלונות יש להוריד תוכנה זו במיוחד):

patch -p0 < patch

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

פקודות נוספות:

svn info
svn list

הראשונה מציגה מידע על הקוד הנוכחי, והשנייה מציגה את כל התיקיות.


הפרק הקודם:
קבלת הקוד מהשרת
מניפולציות על הקוד המקומי הפרק הבא:
פעולות על השרת