יש לי התקנה שהיא יחסית נדירה, אני משתמש במספר מערכות ניהול גירסאות על המחשב שלי בו זמנית.
יש לי גם ניהול גירסאות מבוסס svn וגם ניהול גירסאות מבוסס git-svn, והחלק הבעייתי באמת מדובר על מספר גיגה בייתים של מידע תחת svn.
בפעם הראשונה שמנסים לעשות clone מגבלים שgit יוצא ללא שגיאה ומה שרואים היינו:
אם ניכנס לתיקיה local_repo נראה שאין קבצים פרט לתיקיית .git, על מנת לפתור את הבעיה הזאת יש להריץ git svn fetch מתוך התיקייה שנוצרה ע"י git svn.
בחלק מהמקרים נאלצתי להריץ ידנית fetch עוד עשרות פעמים עד ש git הואיל בטובו להוריד את כל הפרוייקט, מדי פעם עדיף להריץ גם git gc (אחת ל 1000 גירסאות הספיק לי .
בעייה נוספת שניתקלתי בה היה יצאה של git תוך כדי clone ולאחר מכאן fetch או rebase:
הפתרון לבעיה זו הוא להשתמש ללא -s ולכוון ל svn trunk שצריך דוגמה :
טוב בשעה טובה ומוצלחת הצלנו לעשות clone לפרוייקט הגדול שלנו איך ניתן לו לחיות ביחד עם svn באותה התיקיה ? שימו לב שזה מתכון לצרות - אבל גם ללמידה.
לוקחים את תיקיית ה git שנוצרה (יש רק אחת ומושכים אותה לתיקיה הראשונה שנוצרת לכם ע"י svn ,
לדוגמה:
הוספתי את התיקייה .git לתוך תיקיות שהיו תחת svn, השלב הבא הוא לזכור שבכל פעם שאנחנו משנים קבצים ע"י svn לעשות :
שימו לב זה יעיף את כל השינוים המקומים שלכם בgit.
יש לי גם ניהול גירסאות מבוסס svn וגם ניהול גירסאות מבוסס git-svn, והחלק הבעייתי באמת מדובר על מספר גיגה בייתים של מידע תחת svn.
בפעם הראשונה שמנסים לעשות clone מגבלים שgit יוצא ללא שגיאה ומה שרואים היינו:
git svn clone -s https://ip/svn/project/trunk_name local_repo
rXXXXX = 231876121242148168246 (refs/remotes/git-svn)
אם ניכנס לתיקיה local_repo נראה שאין קבצים פרט לתיקיית .git, על מנת לפתור את הבעיה הזאת יש להריץ git svn fetch מתוך התיקייה שנוצרה ע"י git svn.
בחלק מהמקרים נאלצתי להריץ ידנית fetch עוד עשרות פעמים עד ש git הואיל בטובו להוריד את כל הפרוייקט, מדי פעם עדיף להריץ גם git gc (אחת ל 1000 גירסאות הספיק לי .
בעייה נוספת שניתקלתי בה היה יצאה של git תוך כדי clone ולאחר מכאן fetch או rebase:
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
log --no-color --no-decorate --first-parent --pretty=medium HEAD: command returned error: 128
git svn clone https://ip/svn/project/trunk_name/ local_repo
טוב בשעה טובה ומוצלחת הצלנו לעשות clone לפרוייקט הגדול שלנו איך ניתן לו לחיות ביחד עם svn באותה התיקיה ? שימו לב שזה מתכון לצרות - אבל גם ללמידה.
לוקחים את תיקיית ה git שנוצרה (יש רק אחת ומושכים אותה לתיקיה הראשונה שנוצרת לכם ע"י svn ,
לדוגמה:
/opt/svn/bfs_patches$ ls -la
total 7816
drwxr-xr-x 15 boris boris 4096 Jun 21 18:49 .
drwxr-xr-x 3 boris boris 4096 Jun 21 18:21 ..
-rw-r--r-- 1 boris boris 174 Jun 21 18:24 .buildpath
drwxr-xr-x 3 boris boris 4096 Jun 21 18:24 docgenerator
drwxr-xr-x 9 boris boris 4096 Jun 22 00:47 .git
drwxr-xr-x 3 boris boris 4096 Jun 21 18:51 2.6.38-bfs
-rw-r--r-- 1 boris boris 517 Jun 21 18:24 .project
drwxr-xr-x 3 boris boris 4096 Jun 21 18:24 .settings
drwxr-xr-x 6 boris boris 4096 Jun 21 20:15 .svn
הוספתי את התיקייה .git לתוך תיקיות שהיו תחת svn, השלב הבא הוא לזכור שבכל פעם שאנחנו משנים קבצים ע"י svn לעשות :
git reset --hard && git svn rebase
שימו לב זה יעיף את כל השינוים המקומים שלכם בgit.
למה אני עושה את זה - אני עובד עם הרבה מאוד תוכנות ותסריטים שדורשות עבודה עם svn ולא יודעות להתמודד עם git. לכן כאשר אני מסיים איתן אני מריץ reset וחוזר לעבוד עם git.
אין תגובות:
הוסף רשומת תגובה