מבקש עזרה לאחר התסבכות עם ה-SVN

מבקש עזרה לאחר התסבכות עם ה-SVN

שלום,
נכנסתי למקום עבודה חדשה וקצת הסתבכתי עם ה- SVN.
אנחנו עובדים שם עם GUI ולא מ- CMD.
חשוב לציין שאף פעם לא עבדתי עם תוכנה בסגנון כזה (לא git ולא tfs).
השאלות שלי הם בעיקרון בנושא revert ו- switch וזה אחרי שקראתי קצת מידע שלא קידם אותי לצערי.
אקדים בכך, שאני מניח שכל השאלות שאני שואל למטה, משנות רק את הסטטוס במחשב האישי שלי ולא ברשת (במידה ואני טועה אשמח לקבל תיקון)
1. ראיתי שאם אני עומד על תיקיית אב של קובץ שאני מעוניין לעשות לו revert אז לחיצה על כפתור ימני על העכבר פותחת סדרה של פעולות שמתוכם אפשר לבחור פעולת revert. השאלה שלי היא מדוע אי אפשר לעמוד ספציפית על קובץ אחד ולעשות את זה (אלא חייב להיות על תיקיית האב)?, ומה בדיוק ה- revert הזה עושה? האם הוא מחזיר לי את הקובץ שביקשתי עבורו revert להיות בדיוק עם אותה תכולה כמו שהייתה בנקודה שהורדתי את הקבצים? כל שינוי שעשיתי יימחק והגירסא תהיה זהה לזאת שהורדתי?
2. ראיתי שאם אני עומד על קובץ ולוחץ על show log נפתח לי למעשה לוג עם כל הגירסאות שבהן הקובץ הזה עבר עידכון כלשהו. במידה ואני "עומד" על אחת הגירסאות (נניח XXX), לוחץ על הכפתור הימני בעכבר מופיעות לי כמה אופציות: א. update to this revision (מה ההבדל בין תוצאת פעולת ה- update לבין תרחיש שבו אני עומד על קובץ, לוחץ על כפתור ימני, בוחר switch ואז בוחר את אותה הגירסא XXX)?
ב. revert to this revision - מה ההבדל בין בחירה באפשרות לבין 2 הפעולות שרשמתי בסעיף 2א?
ג. revert changes from this revision- מה זה עושה? במידה והיו לי עידכונים גם אחרי הגירסא שעליה אני "עומד" כרגע, מה קורה?
3.במידה ועשיתי אחת מהפעולות שמתוארות בשני הסעיפים הראשונים, איך אני יכול לדעת מה הגירסא האחרונה ביותר שהבאתי מה- SVN (בין אם הבאתי אותה בפעולת update רגילה (עידכון לגירסא הכי חדשה שהעולתה), בין אם לא שיניתי אותה אלא רק עשיתי revert לגירסא האחרונה שהורדתי, ובין אם עשיתי revert לגירסא ספציפית (שאינה אחרונה?

במידה והשאלות לא ברורות יותר מאשמח להבהיר אותם.

תודה מראש
 

BravoMan

Active member
כן, צריך כמה הבהרות:

1. SVN ן-GIT אלו 2 מערכות שונות לניהול גרסאות.
TFS הוא בכלל שרת של MS שתומך ב-GIT, ובעוד מערכת ניהול גרסאות של MS (שאני לא זוכר את שמה כי לא משתמשים בה אצלנו).
&nbsp
אז עם מה אתה עובד בדיוק?
אם אתה עובד עם GIT, בתחילת העבודה וודאי עשית clone - שכפלת לך עותק מקומי של ה-repository, ואז רוב הפעולות שלך יהיו "מקומיות" - על המחשב שלך בלבד.
למעט דברים כמו push pull fetch וכו'
&nbsp
בנוסף, באיזה GUI אתה משתמש?
שוב, בהנחה שמדובר ב-GIT, אין לו GUI אחד רשמי, יש הרבה, אז תציין איך קוראים לתוכנת ה-GUI, וכדאי גם לספר על איזו מערכת הפעלה אתה עובד?
&nbsp
אגב, יכול להיות שה-GUI משולב בסביבת הפיתוח שלך?
&nbsp
כל השמות שציינת לא ממש תואמות למונחים של GIT, ואני כבר לא מספיק זוכר SVN כדי לעזור עם זה.
&nbsp
בכל מקרה, אני ממליץ לך בחום לשאול במקום העבודה, כדי שיבהירו לך על הדרך מה נהלי העבודה של החברה מול ה-source control.
אל תתבייש - עדיף שתשאל מאשר תנחש על סמך עצות של אנשים שלא מכירים את המערכת שלכם!
 
העבודה אצלנו היא מול “SVN”

ה-GUI רץ על גבי הווינדוס, לפי מה שראיתי לא משולב כחלק מסביבת הפיתוח. רק לחיצה על כפתור ימני בעכבר מראה לי בנוסף לדברים הרגילים שמציעה מערכת ההפעלה עוד פקדים של SVN.
האם השאלות ששאלתי לא תקפות בגיט? כי אני משער שאין הרבה בפורום שעובדים/זוכרים SVN לצערי
 

BravoMan

Active member
GIT עובד בצורה מאוד שונה.

אומנם הקונספטים הבסיסיים זהים בכל מערכות ניהול קוד, אבל GIT הוא מערכת מבוזרת, ואתה עובד על repository משלך, ובוחר מתי, אם בכלל לסנכרן אותו ל-repository מרכזי על השרת אם יש לכם כזה.
&nbsp
ב-SVN, הקבצים אצלך הם "working copy" ומקושרים קשר הדוק ל-repository מרכזי שעל השרת (ובהכרח יש כזה).
לכן, ברגע שעשית commit, או כל שינוי אחר, זה ישר עובר לשרת.
&nbsp
אני זוכר שיש תוסף נחמד ל-Windows שנקרא Totoise SVN, והוא מוסיף פקודות SVN לתפריט לחיצה ימנית בסייר קבצים.
תוכל לקרוא עליו כאן:
https://tortoisesvn.net
&nbsp
יש שם גם הסברים על הפקודות שלו.
&nbsp
יש לו גם אינטגרציה עם VS, אז יכול להיות שזה מה שמשתמשים בו אצלכם.
בהצלחה!
אם אזכר בעוד משהו אוסף, אבל באמת ששנים לא נגעתי ב-SVN...
 
זה בדיוק התוסף שאנחנו עובדים איתו

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

BravoMan

Active member
יש ברשת ספר חינמי על SVN עצמו

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.revert.html
בהנחה ששמות הפקודות בתפריט אכן תואמות במדויק פקודות של SVN, תוכל לקבל ממנו את התשובות לשאלות שלך, ואינך חייב לקרוא את כולו, אלא יכול לחפש בו, כי הוא שמור בצורה דיגיטלית.
&nbsp
למשל, כתוב שם ש-revert יכול לעבוד על קובץ בודד, ושמה שהוא עושה, כפי שחשדתי, זה למחוק את השינויים "המקומיים" - כלומר, עריכות שעשית לקובץ בלי לעשות commit.
&nbsp
ייתכן שהסיבה שאינך יכול לעשות את זה על קובץ בודד דרך התפריט הגרפי, היא שמיש שעשה את ה-"צב", לא מימש אפשרות כזו, או אולי מותקנת לך גרסה ישנה של ה-"צב" וזה התווסף בגרסה החדשה.
 
קודם כל סליחה. טעות שלי

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