העברה (Migration)
GitHub Importer
עבור פרויקטים נגישים באינטרנט, GitHub.com מספק Importer להעברה אוטומטית ויצירת מאגר מ-Subversion, Team Foundation Server, Mercurial, או פרויקטים מבוססי Git שמתארחים במקומות אחרים.
התהליך פשוט, צריך רק להתחבר לחשבון GitHub שלכם (אם אתם לא מחוברים כבר), להזין את ה-URL של מערכת ניהול הגרסאות הקיימת של הפרויקט שלכם בשדה המאגר, ולהתחיל את ההמרה.
בהתאם למערכת ניהול הגרסאות שזוהתה, Importer עשוי לבקש מידע נוסף להעברה. זה כולל קובץ מיפוי לקישור בין שמות משתמש ב-Subversion לשדות Git.
קראו עוד על איך לייבא את הפרויקט שלכם ל-GitHub על ידי עיון במלוא התיעוד של GitHub Importer.
כלי SVN2Git
כשיש מגבלות גישה או מאגרי Subversion לא ציבוריים שצריך להעביר ל-Git, הכלי SVN2Git הוא כלי שורת הפקודה המועדף ומספק שליטה בכל שלב בתהליך.
Subversion מציג הבדלים ברורים במבנה לעומת מאגר Git, ו-SVN2Git מספק את הגמישות וההגדרות עבור מבני Subversion מסורתיים ומותאמים אישית. זה מבטיח שמאגר ה-Git שמתקבל מתיישר עם שיטות עבודה מומלצות סטנדרטיות עבור קומיטים, ענפים ותגים לאורך כל ההיסטוריה של הפרויקט.
תכונות בולטות של SVN2Git כוללות:
- המרת כל המוסכמות של SVN למבנה Git מסורתי
- אספקת שדות משתמש SVN לנתוני שם ודוא״ל בקומיטים של Git
- אפשרות לדפוסי החרגה לתוכן מדויק של מאגר Git
למדו עוד על SVN2Git בדף הבית הרשמי של הפרויקט:
גישור (Bridging)
ניצול התמיכה של Git ב-SVN
לעתים קרובות, במהלך המעבר ל-Git, תשתית ה-Subversion נשארת במקום בזמן שהמשתמשים מתרגלים לאינטראקציות עם מאגר Git מקומי, תהליכי עבודה מקומיים ואפליקציות שולחן עבודה.
הפקודה git svn מאפשרת למשתמשים להסתנכרן עם שרת מאגר Subversion מרכזי תוך ניצול כל היתרונות שיש להציע ללקוחות Git מקומיים בשורת פקודה וגרפיים.
כדי לרכוש מאגר Subversion כמאגר Git מקומי שמתקבל, הורידו את הפרויקט במלואו עם הפקודה הזו:
git svn clone [svn-repo-url] --stdlayout
וודאו שאתם מכירים את המבנה של מאגר ה-Subversion הממוקד ואם הוא עוקב אחר הפריסה הסטנדרטית או לא. עבור פריסות לא מסורתיות של trunk, branches ו-tags, יש לציין את מתגי האופציה הבאים במהלך svn clone:
-
T [trunk]למוסכמת קוד מקור ראשית חלופית -
b [branches]למיקום ענפים חלופי -
t [tags]למיקום מבנה תגים חלופי
ברגע שפעולת ה-clone מסתיימת, תוכלו להמשיך עם כל אינטראקציה מקומית של Git בשורת הפקודה או עם לקוחות גרפיים.
סנכרון עם Subversion
פרסום היסטוריית Git מקומית חזרה למאגר Subversion מרכזי שנרכש עם git svn clone מבוצע עם פקודה אחת:
git svn dcommit
אם ההיסטוריה של מאגר ה-Subversion המתארח מכילה קומיטים שעדיין לא נמצאים במאגר ה-Git המקומי, פעולת ה-dcommit תידחה עד שהקומיטים יירכשו עם הפקודה הזו:
git svn rebase
זכרו שפעולה זו משכתבת את היסטוריית ה-Git המקומית שלכם ומזהי הקומיט שלכם יהיו שונים.
הבנה (Understanding)
Subversion ו-Git חולקים אוצר מילים דומה, אבל המשותף לעתים קרובות הוא רק שמות הפקודות. ההתנהגות והפונקציונליות שונות למדי בהתחשב בתכונות הייחודיות ש-Git מספק כמערכת ניהול גרסאות מבוזרת בהשוואה להיבטים המרכזיים של Subversion.
| פקודת SVN | פקודת Git | התנהגות Git |
|---|---|---|
status |
status |
דיווח על מצב עץ העבודה |
add |
add |
נדרש עבור כל נתיב לפני ביצוע קומיט |
commit |
commit |
שמירת שינויים מוכנים בהיסטוריית הגרסאות המקומית |
rm, delete
|
rm |
הכנת נתיבים למחיקה בקומיט הבא |
move |
mv |
הכנת תוכן שהועבר לקומיט הבא |
checkout |
clone |
רכישת ההיסטוריה השלמה של פרויקט מקומית בפעם הראשונה |
branch |
יצירת הקשר מקומי לקומיטים | |
merge |
חיבור היסטוריות ענפים ושינויים לעץ העבודה | |
log |
לא נדרשת רשת | |
push |
העלאת היסטוריית קומיטים ל-GitHub/שרת Git מרכזי | |
pull |
הורדה ואינטגרציה של היסטוריית מאגר GitHub עם המקומי | |
fetch |
הורדת היסטוריית מאגר GitHub ללא פעולה נוספת |