כיצד תבחרו את מנהל הקוד המבוזר שלכם? המבוזר מכפר Bazaar

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

בפוסט הקודם דיברנו על שיטת ניהול הקוד המבוזרת ההולכת וגוברת על שיטת ניהול הקוד הריכוזית והכרנו את המלך הבלתי-מוכתר של ממלכת הקוד המבוזר – Git.
משיחות שיצא לי לערוך עם חברי לשולחן הפיתוח בנושא מנהלי קוד מבוזרים מצאתי שרובם לא מכירים את אחיו של Git המפורסמים פחות – Bazaar ו Mercurial ולכן חשבתי שמן הראוי לערוך הכרות קצרה למען יוכלו מפתחי ישראל באשר הם לבחור את כלי ניהול הקוד שלהם על-סמך קומץ עובדות ולא רק ניקוד פופולרי.

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

Mercuriaimage.axdl, שנהוג לקצר לכנותו hg על שם הסמל של היסוד כספית (Mercury) בטבלה המחזורית, הוא מנהל קוד הכתוב בשפת פייתון שתוכנן לעבודה מבוזרת, מהירה וסקאלבילית עם יכולות מיזוג ענפים (Merge) אמינה והתמודדות טובה עם שינויים בקבצי-טקסט וקבצים בינאריים. Mercurial זמין עבור כל פלטפורמה שיכולה להריץ פייתון ולכן עובד בצורה מצויינת הן על חלונות והן אל לינוקסים ויוניקסים ושאר סים (תגידו מהר עשר פעמים רצוף).

יתרונות

נדידות (portability) – כפי שהוזכר לעיל, מכיוון ש Mercurial כתוב בפייתון הוא עובד מצויין (באופן זהה) על כל פלטפורמה שיכולה להריץ פייתון.

פשטות – ל Mercurial יש אוצר מילים פשוט, עם קיצורי דרך מובנים (לדוגמה up בשביל update ו co בשביל checkout) ופקודות ששמן אינו מרמז על יכולות נסתרות אלא על מה שהפקודה אמורה לעשות. נקודה זו חשובה במיוחד למשתמשים חדשים משום שפשטות הפקודות הופכת את ההסתגלות ל Mercurial לפשוטה יותר בהשוואה ל Git ידידנו.

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

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

חסרונות

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

ניהול ענפים – נקודה זו היא בהשוואה ל Git בלבד, ובאה לציין שבכל הקשור לניהול ענפי פיתוח ל Git יש עדיין יכולות מעט עדיפות על Mercurial (אבל לא בהרבה)

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

Bazaar_Logo_PRINT_2006-07-27מנהל הקוד השלישי בחבורה המבוזרת הוא Bazaar, שנוצר ע"י חברת קאנוניקל, ההורים של אובונטו, ככלי לניהול קוד המקור של אובונטו ופרוייקטים נוספים מבוססי קוד-פתוח. כמו Mercurial גם בזאר כתוב בפייתון ונבנה תוך שימת דגש על יכולות ניהול ומיזוג ענפים, קלות שימוש ותמיכה במודלים מגוונים של פיתוח קוד. למעשה הנקודה האחרונה היא אחת מיתרונותיו הבולטים של בזאר, מכיוון שבניגוד ל Git ו Mercurial, בזאר תוכנן מיסודו לתמוך במגוון תרחישי פיתוח, כולל מודלים ריכוזים ומבוזרים, מרובי ומעוטי משתתפים, מודל מרובה ענפים (דומה ל Git), מודל מרובה מאגרים ולמעשה כל תרחיש נפוץ בו תבחרו לעבוד.

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

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

מהירות עבודה – Git ללא ספק מנצח ו Mercurial צמוד מאחריו. אם חשובה לכם עבודה מהירה מול מאגרים מרוחקים שווה לשקול אחד מהשניים.

כלים משלימים ותמיכה בסביבות פיתוח – Mercurial מנצח בגדול ובזאר מקום שני. לבזאר יש כלי ניהול ויזואלי מצויין ללינוקס וחלונות (בזאר אקספלורר) שמפותח ע"י קאנונוקיל. ל Mercurial תמיכה מצויינת באקליפס ונטבינס וכלים ויזואליים טובים לכל הפלטפרומות.

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

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

שיתוף קוד במאגרים מרוחקים – לכל שלושת הכלים יש פרוטוקולים יעודיים המאפשרים הרצת שרת החושף יכולות קריאה וכתיבה למאגר מקוון. מנסיון וקריאת התיעוד של שלושת הכלים, נראה שהתקנת ותצורת שירותי השיתוף בבזאר ו Mercurial קלה ופשוטה יותר בהשוואה ל Git בעיקר בכל הנוגע למתן הרשאות כתיבה למאגר שלא ע"ג SSH. מומלץ לבחון את דרישות ומגבלות המערכת שלכם, בעיקר בכל הנוגע לניהול משתמשים ברשת ומתן הרשאות לשרתים, החלפת מפתחות עוד מרעין בישין כדי להמנע מהפתעות.

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

תיעוד – יסלחו לי משתמשי Git באשר הם, אבל בזאר, שעלה לאחרונה לגרסה 2+ התחדש לא רק בעדכון קוד אלא גם בתיעוד מקיף וברמה גבוהה המקלה על תהליך האימוץ וחבלי הלידה. כמאמר חז"ל "ובאתם לבניכם והגדתם להם: כך מתעדים ומסבירים. וכל המוסיף גורע!"

לסיכום

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

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

אתר הפרוייקט של Git
אתר הפרוייקט של Mercurial
אתר הפרוייקט של בזאר

זהר ארד

בן 35, קיבוצניק שהדרים לעיר הגדולה, מפתח client-side בנשמתו (מטהקפה, קול הקמפוס 106fm ואחרים). משתמש מקינטוש מושבע (שחוטא גם בלינוקס בשעות הפנאי). מעדיף הכל פשוט, מינימליסטי ועובד טוב ומשתדל להמנע מדברים עם הלוגו של מיקרוסופט ונהגי מוניות כעסנים. אוהב הרבה Web, מתובלת בג'אווהסקריפט, HTML, CSS, פייתון ורובי, ספרים, פפאיות ומוזיקה מהחנות (בדיסק המקורי). מתנודד תדיר בין אקזיסטנציאליזם לאינדיבידואליזם ונכון להיום עדיין אוחז ב-fetish לא מוסבר לצבים.

הגב

4 Comments on "כיצד תבחרו את מנהל הקוד המבוזר שלכם? המבוזר מכפר Bazaar"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
תום
Guest

יש כלים פשוטים להמרה בין גיט/באזאר/מרקוריאל?

זהר
Guest

כן, יש כלים כאלו. תציץ בתיעוד של הפרוייקטים (לינקים בסוף הכתבה) – יש בדר"כ חקל להמרה או מעבר בין הכלים

trackback

[…] מתלבטיםישנם מספר פוסטים טובים על הנושא, כולל פוסט על ניהול קוד מבוזר של זהר ארד שכתב גם פוסט מצוין על כלי ניהול פרויקטים. […]

trackback

[…] מתלבטיםישנם מספר פוסטים טובים על הנושא, כולל פוסט על ניהול קוד מבוזר של זהר ארד שכתב גם פוסט מצוין על כלי ניהול פרויקטים. […]

wpDiscuz

תגיות לכתבה: