====== ניהול גרסאות קוד תכנה באמצעות CVS ====== == <כרמית לוי> == [[carmit3levi@gmail.com]] ^ היסטוריית גירסאות ^^^ ^ גירסה 1.0 ^ 28-1-2008 ^ **<כרמית לוי>** ^ | טיוטא ראשונה ||| ==== תקציר ==== מדריך לשימוש בכלי CVS לניהול פיתוחי קוד בתכנות וגרסאות קוד ותכנה. ==== זכויות יוצרים ורשיון ==== כל הזכויות שמורות (c) 2007, **<כרמית לוי>**, הרשות ניתנת להעתיק, לשנות ולהפיץ מדריך זה תחת התנאים של רשיון ה-GFDL \\ Linux הוא סימן מסחרי רשום של Linus Torvalds. ==== הסרת אחריות ==== הכותב אינו נושא באחריות עבור שימוש ברעיונות, דוגמאות ומידע שבמדריך. השימוש הוא באחריות הקורא בלבד. המדריך עשוי להחיל טעויות ופרטים לא נכונים, שהשימוש בהם עשוי להיות מזיק למחשבך. למרות הסבירות הנמוכה, הכותב אינו לוקח כל אחריות ==== תורמים למדריך \ תודות ==== הכותב מודה לאנשים הבאים על תרומתם למדריך * תרום מספר 1 * תורם מספר 2 ==== משוב ==== תגובות, תלונות, הערות והארות לכתובת: . ==== מבוא ==== שלום, במסגרת פיתוח פרוייקטים לקהילה בקוד פתוח נתקלתי בצורך לשתף קוד תכנה שכתבתי בשפת תכנות כלשהי על מנת שמפתחים נוספים יוכלו באם ירצו להצטרף לפרוייקט בתיכנות ובשינוי ותחזוקת הקוד של תכנה מסויימת או יישום שכתבתי או שאתם תכתבו בעתיד... על מנת שהקוד יהיה שיתופי לקהילה ובר שיתוף עם מתכנתים נוספים (שאולי ירצו לשכלל אותו בעתיד) קיים צורך להעמיד את הקוד לשימוש הרבים על אחד השרתים. כדי שמספר מפתחים יוכלו לקבל גישה לקוד ולפתח אותו במקביל או להצטרף לפיתוח ולעקוב אחרי טעויות של כולם אם יש וכדי שתהיה אפשרות "לחזור אחורה" בפיתוח ולתקן באגים למשל שנוצרו או התגלו יש צורך להקנות לקוד גירסאות שונות שחלקן יציבות וחלקן גירסאות פיתוח שעלולות להכיל באגים מסויימים ולתת הרשאות פיתוח למי שרוצה לפתח ולחזור לגירסה קודמת שתהיה מאוחסנת וקיימת במידה והפיתוח החדש יוצר באגים או לא יוצא טוב מכל מיני סיבות טעויות אנוש וחוסר תצומת לב. לצורך מטרת שיתוף זו נבנו כלים ספציפיים לניהול גירסאות קוד (לא משנה באיזה שפת תיכנות כרגע) מכל הכלים אני רוצה לציין שניים בקוד פתוח החדיש והטוב שהוא SVN שעליו ממליצים רבים נכון להיום ינואר 2008 קיצור של subversion והענתיקה שאני אמקד את הכתיבה אליו שהוא CVS קיצור של concurrent versions system משתמשים בו בסורספורג' למשל בגישה דרך SSH (גישה למסוף ושורת הפקודה במחשב אחר שמכיל שרת SSH) == בקיצור מטרת המנהל גירסאות היא == א. לשתף את הקוד עצמו וגם גירסאות פיתוח ניסיוניות עם הקהילה ב. לשתף אנשים שרוצים להצטרף לפיתוח בקוד עצמו ג. כדי לא לפתח לבד. ==== פרק ראשון repository ==== == הכרות עם המושג ריפוזיטורי ואפשרויות הכלי CVS == שלום נעים מאוד קוראים לי רפוזיטורי אני העותק המרכזי של כל קבצי הפרוייקט אני מועתק לכל מפתח שרוצה לפתח אותי במטנה. מי שרוצה לעדכן אותי או להתעדכן שיצור איתי קשר באמצעות תכנת לקוח CVS. כדי להתעדכן ממני לגבי השינויים תכתבו את הפקודה update כדי לעדכן אותי בשינויים שעשיתם תכתבו את הפקודה commit ואם אתם חדשים ואין לכם שום עותק של העבודה תוכלו לקבל אחד באמצעות בקשת checkout. מי שרוצה מצגת שינויים שנעשו בגירסאות של קובץ ספציפי שיתשתמש ב log אגב המונח המוגדר של גירסאות ספציפיות של קובץ נקרא רויזין. (revisions) מי שרוצה מצגת שינויים בין הקבצים בעבודה הנוכחית למקוריים שישתמש ב diff מי שרוצה לעשות commit כאילו לעדכן שינויים ושאז העותק ימחק מהמחשב שלו שישתמש ב release. סטטוס status מציג מצב של כל הקבצים בריפוזיטורי. ==== פרק שני - מבנה הפקודה ==== מבנה הפקודה: cvs [ אפשרויות ] cvs_command [ אפשרויות פקודה ] [ command_args ] ==== פרק שלישי - דוגמאות למבנה הפקודה ==== יש להגדיר לתכנת לקוח CVS היכן הקבצים ומהיכן לייבא אותם אפשר לעשות זאת דרך שורת הפקודה או אם כל פעם מבצעים פעולות על אותו מקור או אותו ריפוזיטורי אפשר להגדיר אותו בתוך משתנה מקומי ששמו CVSROOT כדי לא לכתוב את הכתובת הארוכה מידי למשל: cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj את כל השורה אחרי המאפיין של מיקום ספריית הריפוזיטורי שרוצים אפשר להכניס למשתנה מערכת CVSROOT בצורה זו: CVSROOT=:pserver:bach@faun.example.org:2401/usr/local/cvsroot ואז כשקוראים לפקודה checkout בכלי CVS הפקודה תיראה יותר קצר וברור בצורה זו: cvs checkout someproj בדוגמאות הנ"ל הדוגמא הייתה לריפוזיטורי שאינו יושב במחשב מקומי והוא נמצא באיזה שהוא סוג של שרת מרוחק שאז המבנה של המיקום שלו הוא כזה: [:method :][[user ][:password ]@]hostname [:[port ]]/path/to/repository על מנת לגשת אליו בשרת מרוחק (pserver) עם שם משתמש וסיסמא. דוגמאות ל "method" שאליו מתחברים בשרת המרוחק שהם pserver gserver kserver fork לא חייבים לזכור רק לדעת שזה קיים: cvs -d :pserver:bach:p4ss30rd@faun.example.org:/usr/local/cvsroot login cvs -d :gserver:faun.example.org:/usr/local/cvsroot checkout foo cvs -d :kserver:faun.example.org:/usr/local/cvsroot checkout foo cvs -d :fork:/usr/local/cvsroot checkout foo ==== פרק רביעי - דוגמא ממשית לשימוש בפקודה ==== הנה דוגמא ממשית לשימוש בפקודה דרך שורת הפקודה בלי קיצורי דרך בהמחשה של הורדת דרופל חמש cvs -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal checkout -r DRUPAL-5 drupal אם למשל CVSROOT=:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal אז ניתן לכתוב את הפקודה גם כך: cvs checkout -r DRUPAL-5 drupal ==== בעיות ==== חלק זה יכיל בעיות ושאלות נפוצות שקשורות לנושא המדריך. הוא ערוך בפורמט של שו"ת (FAQ). * שאלה מספר 1 * תשובה מספר 1 * שאלה מספר 2 * תשובה מספר 2 ==== מידע נוסף ==== __מידע נוסף שנוגע למדריך כמו מדריכים נוספים, מסמכי שו"ת, ספרים וקישורים.__ [*] מדריכי CVS באנגלית באתר הזה : http://ximbiot.com/cvs/manual [*] מדריכים אחרים הקשורים לאותו נושא: http://penguin.org.il/guides/cvs-server-intro [*] האתר של דרופל http://www.drupal.org.il/guides/bguide