כיועץ ומפתח שכמעט ולא נמצא במשרד אלא מסתובב בין לקוחות, העבודה מול TFS Source Control הפכה להיות הרבה יותר נוחה באמצעות קונספט ה- Local Workspaces שהוצג ב- VS 11. במאמר זה נספר כיצד.
הורידו והתנסו ללא תשלום בגרסה החדשה של Visual Studio 11 Beta
אחת הבעיות הגדולות של המשתמשים ב- Visual Studio 2010 ובעיקר המתחילים שבהם, היא הבנת נושא ה- Workspace וצורת העבודה עם Workspace. אז לפני שנסביר מהו Local Workspace, בואו ניישר קו ונבין את מושג ה- Workspace.
מה זה Workspace
Workspace הוא סט שמכיל את כל המיפויים בין הנתיב של קובץ/ספריה בשרת לבין קובץ/ספריה בדיסק המקומי. כל Workspace משוייך למשתמש TFS מסויים והוא יכול להכיל מספר רב של מיפויים.
בצילום המסך הבא אנו רואים שישנן 3 מיפויים שונים של נתיבים מהשרת למחשב המקומי:

Workspace זה צריך להיות מנוהל בצורה כלשהי ולזהות ולדעת אילו גירסאות של קבצים קיימות במחשב המקומי ואילו שינויים בוצעו לוקאלית וטרם הוכנסו לשרת.
עוד מימיו הראשונים של מוצר ה-TFS ב- 2005, התקבלה החלטה לנהל בצורה מרכזית את ה- Workspaces על שרת ה- TFS ולא על המחשבים המקומיים, בין היתר מטעמי איטיות הרשתות ועוד. מי שמתעניין בהיסטוריה יכול להרחיב ידיעות בפוסט המצוין של Brian Harry בנושא.
כלומר, השרת יודע מה המיפויים הקיימים בכל Workspace ואלו קבצים נמצאים ב- Workspace ובאיזו גירסה. הבעיה היתה, שבמקרים מסויימים במיוחד כאשר למשתמשים היה חסר ידע בנושא ניהול ה- Workspaces והצורה שבה הקונספט עובד, ניהול ה- Workspace בשרת הוביל להתנהגויות לא רצויות.
לדוגמא, התרחיש הבא:
על המכונה המקומית יש לי קבצים המקושרים ל- TFS Source Control:
ניגש למערכת הקבצים ונמחק את הקבצים:

כעת נקח גרסה עדכנית מהשרת (Get Latest). שימו לב להודעה – כל הקבצים מעודכנים..

שימו לב, אם נחזור למערכת הקבצים לתיקייה שמחקנו את תוכנה נגלה ש..
התיקיה ריקה!.. אותה תיקייה שה- TFS אמר לפני רגע שהיא מעודכנת.
כיצד זה ייתכן? הסיבה להתנהגות זו היא ניהול ה- Workspace בשרת, מה שגורם לשרת להיות לא מודע לשינויים שחלו במערכת הקבצים המקומית מלבד לאלו שבוצעו דרך סביבת העבודה של Visual Studio.
אז מה חדש ב- VS 11 בנושא Workspace?
ב- Visual Studio 11 נוספה האפשרות להגדיר כ-Workspace כמנוהלת לוקאלית או בקיצור Local Workspace. בצורה זאת, ניהול ה- Workspace עובר למחשב הלוקאלי ומאפשר למערכת ניהול הקוד לנטר את השינויים שנעשים בתיקיות הרלוונטיות, גם אם הם נעשו ישירות במערכת הקבצים.
ההגדרה מתבצעת דרך ממשק הניהול הרגיל של Worksapce:
באותו מסך ניתן גם להגדיר מה יהיה ה- timestamp של הקבצים: Current - Get Time או Check In Time

איך משפיע השינוי על העבודה היומיומית
נשים לב, שמעתה יש לנו פונקציונליות נוספת אשר מאפשרת לנו לזהות שנעשו שינויים מקומיים דרך מערכת הקבצים, שינויים שאנו יכולים כעת לבחור אם להכניס אותם למערכת ניהול הקוד בשרת ה- TFS או לא.
כיצד זה נראה בפועל?
נדאג שחלון Pending Changes לא יכיל כל שינוי המחכה ל- Check In.
כעת נפתח את התיקיה המקומית ונוסיף קובץ שלא דרך Visual Studio, אלא דרך ה- Windows Explorer:

שימו לב כי נמצא שינוי בחלון הPending Changes, אולם תחת קטגוריה של Excluded Changes. כלומר, השינוי המקומי זוהה. עם זאת, לא כל שינוי מקומי באמת צריך להכנס ל- Source Control. אם נרצה להוסיף את השינוי לשרת, ניתן ללחוץ על הקישור Detected Changes:

כעת ניתן ללחוץ Promote ולהעביר את השינוי ל- Included Changes

כאשר מדובר בשינוי בקובץ שכבר קיים ב- Source Control, גם אם נערוך אותו לדוגמא בNotepad

השינוי יזוהה ויכלל אוטומטית ב- Included Changes:

עבודה בOffline
אחד מהיתרונות הגדולים במעבר ל- Local Workspaces הוא היכולת המשופרת של עבודה במצב לא מקוון,Offline. אמנם ב- Visual Studio 2010 הייתה תמיכה בעבודה במצב לא מקוון, אולם תמיכה זאת לא היתה אופטימלית.
מי לא זוכר את הIcon הקטן והמתחבא (כאן הוא מופיע בהגדלה
)
שלא לדבר על ההודעות המרגיזות בכל פעם שניסית לבצע Check Out ללא חיבור לשרת..
ב- Visual Studio 11 נקבל פעם אחת את ההודעה המוכרת הזאת על מנת ליידע אותנו שאנו עובדים במצב אופליין:
VS יעבור אוטומטית למצב אופליין ומנקודה זאת תוכלו לעבוד כרגיל ולבצע Check Out ללא הפרעה.
כל שינוי שנבצע הן בסביבת Visual Studio או בכל עורך שהוא ישירות ממערכת הקבצים, ייקלט וייכנס אוטמטית לרשימת ה- Pending Changes.
הדבר היחיד שלא נוכל לבצע הוא פעולות המחייבות ישירות שרת כגון Check In:
כאשר נחזור למקום בעל חיבור לרשת, Refresh קטן וניתן לבצע Check In כרגיל.
אז מי אמר שאי אפשר לקחת עבודה לחופש/ים כי אין רשת?..
הורידו והתנסו ללא תשלום בגרסה החדשה של Visual Studio 11 Beta
הפוסט נכתב ע"י ברוך פריי, ארכיטקט ALM בכיר בקבוצת סלע המייעץ לחברות רבות בתעשייה ובתעשייה הביטחונית בפרויקטי הטמעה של שרת TFS בתחומי הפיתוח והבדיקות. בין יתר ההתמחויות ברוך מתמחה בתכנון ופיתוח כלי מעטפת על בסיס פלטפורמת ALM של מייקרוסופט, וכן בפתרונות Automated Build מתקדמים למערכות מבוזרות הכוללים פריסה ובדיקות. אם יש לכם שאלות נוספות בנושא ALM, אתם מוזמנים לבקר אותנו בפורום ALM.