על תרופות חזקות במיוחד מופיעה האזהרה: "לא לחולי לב ונשים בהריון". התרופה כל כך חזקה, שעם כל הטוב שהיא יכולה לעשות, אסור לתת אותה לגוף שחלש מכדי להתמודד עם תופעות הלוואי. מערכת בקרת הקוד git צריכה להגיע עם תווית דומה.
במהלך הקיץ הזה אני עובד על פרוייקט שאני שואף לשחרר בסופו של דבר (למעשה הוא כבר חופשי ב-github, אבל עוד לא בשלב ראוי לחשיפה), וכשאני אומר "אני עובד" אני מתכוון שאני הגדרתי מה אני רוצה וכתבתי קוד ראשוני, וכמעט את כל השאר כתבה מתמחה שעובדת איתי הקיץ. אותה מתמחה הגיעה עם ידע ב-Python, אבל היא לעולם לא עבדה על פרוייקט מספיק גדול שדרש שימוש במערכת בקרת קוד, והיתה צריכה ללמוד.
בתחילת הפרוייקט בחרתי להשתמש ב-git, מתוך מחשבה שאם היא ממילא צריכה ללמוד להשתמש במערכת בקרת קוד כלשהי (מעכשיו VCS), למה שלא תלמד את האופנתית ביותר, וזו שנראתה לי אישית כמציעה יתרונות על פני המערכת שאיתה יש לי הכי הרבה ניסיון - Subversion. אלא שהסתבר שיש הבדלים מסויימים שמקשים על לימוד git יותר מעל משהו אחר.
ראשית, git היא מערכת מבוזרת, וזה מחייב אותה לתמוך במספר מושגים ודרכי פעולה שאין ב-VCS שמתבסס על עץ-קוד ראשי אחד שכולם עובדים מולו: מיזוג בין עצים שונים, תלויות בין שינויים, גרסאות שלא תלויות באלה שקדמו להן, ועוד הפתעות. וכאילו שזה לא מספיק, ל-git יש מילון מונחים ייחודי שצריך להכיר ולהבין: fast forward merge, למשל (מיזוג קוד שנקודת ההתחלה של השינויים בו היא נקודת הסוף של השינויים בענף שאליו ממזגים את הקוד) ועוד אחרים.
כדי להוסיף קושי, התיעוד של git נכתב ע"י מפתחי קרנל, ככה שהוא מניח שאתה כבר יודע הרבה מאוד על ניהול קוד, וכתוב לרוב כתזכורת למי שכבר יודע מה לעשות. אני יכול לעקוב אחרי התיעוד ולמצוא מה כדאי לקרוא מעבר לפקודה הספציפית שאני מחפש, אבל מישהו עם פחות ניסיון לא יצליח. גם תיעוד כללי, כזה שמסביר את התמונה הכללית של עבודה עם git חסר, למרות שמתחילים להופיע דפים כמו How to use git without feeling stupid ומדריכים שונים, ואפילו הספר הקהילתי על git; נראה שכולם מקבלים את הטענה שלגיט יש עקומת למידה תלולה.
כמובן, ככה אמרנו פעם על לינוקס: צריך להשקיע זמן בלימוד אבל בסוף מקבלים כוח! במשך הזמן הפצות לינוקס התקדמו, ומצאו איך לתת יותר כוח בפחות מאמץ, וגם פחות כוח בפחות מאמץ, וכל מה שבאמצע. git עוד בשלב המוקדם כנראה, וצריך להיות מוכן להשקעה גבוהה - גם אם בסוף היא משתלמת מאוד. ובינתיים, אם יש לך עובד לפחות משלושה חודשים, לך על Subversion. חבל על הזמן.
וידאו: Tech Talk: Linus Torvalds on git
ידיעות נוספות
תעוד ספגטי
ייחודיות וקבוצות בשפות שונות
אבן רוזטה
קישורים שימושים
http://git-scm.com
http://book.git-scm.com
http://repo.or.cz
http://gitorious.org
http://github.com
learn.github
Visual git tutorial I
The Git Parable
Using Git with Vim
* עריכה (קישורים): אורי
במהלך הקיץ הזה אני עובד על פרוייקט שאני שואף לשחרר בסופו של דבר (למעשה הוא כבר חופשי ב-github, אבל עוד לא בשלב ראוי לחשיפה), וכשאני אומר "אני עובד" אני מתכוון שאני הגדרתי מה אני רוצה וכתבתי קוד ראשוני, וכמעט את כל השאר כתבה מתמחה שעובדת איתי הקיץ. אותה מתמחה הגיעה עם ידע ב-Python, אבל היא לעולם לא עבדה על פרוייקט מספיק גדול שדרש שימוש במערכת בקרת קוד, והיתה צריכה ללמוד.
בתחילת הפרוייקט בחרתי להשתמש ב-git, מתוך מחשבה שאם היא ממילא צריכה ללמוד להשתמש במערכת בקרת קוד כלשהי (מעכשיו VCS), למה שלא תלמד את האופנתית ביותר, וזו שנראתה לי אישית כמציעה יתרונות על פני המערכת שאיתה יש לי הכי הרבה ניסיון - Subversion. אלא שהסתבר שיש הבדלים מסויימים שמקשים על לימוד git יותר מעל משהו אחר.
ראשית, git היא מערכת מבוזרת, וזה מחייב אותה לתמוך במספר מושגים ודרכי פעולה שאין ב-VCS שמתבסס על עץ-קוד ראשי אחד שכולם עובדים מולו: מיזוג בין עצים שונים, תלויות בין שינויים, גרסאות שלא תלויות באלה שקדמו להן, ועוד הפתעות. וכאילו שזה לא מספיק, ל-git יש מילון מונחים ייחודי שצריך להכיר ולהבין: fast forward merge, למשל (מיזוג קוד שנקודת ההתחלה של השינויים בו היא נקודת הסוף של השינויים בענף שאליו ממזגים את הקוד) ועוד אחרים.
כדי להוסיף קושי, התיעוד של git נכתב ע"י מפתחי קרנל, ככה שהוא מניח שאתה כבר יודע הרבה מאוד על ניהול קוד, וכתוב לרוב כתזכורת למי שכבר יודע מה לעשות. אני יכול לעקוב אחרי התיעוד ולמצוא מה כדאי לקרוא מעבר לפקודה הספציפית שאני מחפש, אבל מישהו עם פחות ניסיון לא יצליח. גם תיעוד כללי, כזה שמסביר את התמונה הכללית של עבודה עם git חסר, למרות שמתחילים להופיע דפים כמו How to use git without feeling stupid ומדריכים שונים, ואפילו הספר הקהילתי על git; נראה שכולם מקבלים את הטענה שלגיט יש עקומת למידה תלולה.
כמובן, ככה אמרנו פעם על לינוקס: צריך להשקיע זמן בלימוד אבל בסוף מקבלים כוח! במשך הזמן הפצות לינוקס התקדמו, ומצאו איך לתת יותר כוח בפחות מאמץ, וגם פחות כוח בפחות מאמץ, וכל מה שבאמצע. git עוד בשלב המוקדם כנראה, וצריך להיות מוכן להשקעה גבוהה - גם אם בסוף היא משתלמת מאוד. ובינתיים, אם יש לך עובד לפחות משלושה חודשים, לך על Subversion. חבל על הזמן.
וידאו: Tech Talk: Linus Torvalds on git
ידיעות נוספות
תעוד ספגטי
ייחודיות וקבוצות בשפות שונות
אבן רוזטה
קישורים שימושים
http://git-scm.com
http://book.git-scm.com
http://repo.or.cz
http://gitorious.org
http://github.com
learn.github
Visual git tutorial I
The Git Parable
Using Git with Vim
* עריכה (קישורים): אורי