אני יודע שנשאר על זה רבות, ועדין מכל הדיבורים על זה יצאתי מבולבל והייתי שמח לראות אם הבנתי נכון.
מה כן הבנתי:
את התקיה wit צריך לחפש ביחס לנתיב אותו מכניסים לנו ב add, כלומר אם קיבלנו נתיב מלא אז אנחנו נחפש בתקיות האב בו את התקיה wit הראשונה ואליה נגבה.
במידה וניתן לנו נתיב חלקי, אנו בהכרח נקשר אותו לcurrent working directory נקבל נתיב מלא ואז נפעל באותו האופן.
איפה אני מסתבך:
בדוגמא שניתנה בתרגיל:
אם, בעודנו נמצאים בתיקייה Etztrubal, אנחנו נעשה add ל־ lms/lmsdb – בתיקייה staging_area תווצר התיקייה lms,
כלומר במקרה ואני מקבל פה נתיב חלקי אני יודע בדיוק מאיזה תקיה להתחיל לגבות אל תוך staging_area. כי ה"חלקיות" של הקוד בעצם אומרת לי מאיזה תקיה אני אמור לגבות את הקבצים.
אולם אם מישהו היה מעביר לי נתיב מלא: (ונניח התקיה wit קיימת ב course)
c:\users\loli\course\Etztrubal\lms\lmsdb:
במקרה זה אני לא יכול לדעת איזה קבוצת תקיות אני אמור להעביר לגיבוי:
האם זה lmsdb או החל מ lms האם זה Etzrubal וכו …
בעצם שני המקרים האלה הם שונים בעיניי ולא אקוויטלנטים כפי שמתואר בתשובה של ים בפוסט הנל:
שני הקלטים האלו אקוויולנטיים וירוצו בדיוק באותה צורה.
גם בדוגמא של גילי … איך אני אמור לדעת אם לגבת את util עם הקבצים בה או רק את main.py.
ואם הייתי מוצא את wit בcourse אז איך הייתי יודע לא לגבות את project אלא להישאר רק עם utils.
סליחה על החפירה אבל אולי יש משהו שאני מפספס ואני אשמח להבין אותו כעט לפני שאני מפתח טעויות בכל תוכנה עצמה.
nirpn1
כאשר מדובר בתיקייה לדוגמה
\lms\lmsdb
אז התוכן שתרצה להעביר לגיבוי הוא התוכן החל מהתיקייה lmsdb (כולל כל מבנה התיקיות בדרך עד אליה)
כאשר מדובר בקובץ ספציפי לדוגמה
lms\lmsdbo\pizza.txt
נגבה את רק את הקובץ הספציפי כולל כל שרשור התיקיות עד אליו
כך אני הבנתי
aviadamar
ככה אני הבנתי, אבל זה לא מה שעולה מהתשובה של ים עבור הפוסט של גילי.
כי מה קורה שאתה מקבל את הנתיב המלא של \lms\lmsdb ?
איך אתה יודע לגבות רק את שניהם או את כל התקיות האב עד wit שמצאת.
nirpn1
אם אני מקבל את הנתיב המלא של
lms\lmsdb
אז אני מגבה את התוכן של תיקיית lmsdb תוך כדי שרשור התיקיות עד אליה מהפעם הראשונה שאני נפגש עם תיקיית .wit
aviadamar
עבור הנתיב:
c:\users\loli\course\Etztrubal\lms\lmsdb:
ותקיית wit שנמצאת ב course
מה אתה מגבה ?
nirpn1
Etztrubal\lms\lmsdb
וכל התוכן שבתוך lmsdb
aviadamar
סורי שאני חופר אני באמת לא מצליח לרדת לסוף העניין הזה.
מה עם הקבצים בתוך Etzrubal או Lms … ממה בעצם הבנת בהסבר של התרגיל שאתה לא אמור לגבות את התוכן שלהם גם ?
nirpn1
אם הייתי רוצה לגבות את הקבצים החל מlms:
הייתי רושם כך: Etztrubal\lms
ולא כך: Etztrubal\lms\lmsdb
ואתה לא חופר בכלל, זה מה שאני הבנתי פשוט
aviadamar
גם אני הבנתי כך אבל זה לא מה שאני מבין מהתשובה בפוסט של גילי.
Yam
הבנתם נכון.
איפה הפער בין התשובה שלי לגילי לבין התשובה של ניר?
aviadamar
בתשובה שלך לגילי אמרת שבקבלת הנתיב:
C:\Users\Gili\python\course\project\utils\main.py
והמצאות התקיה wit ב project יש לגבות את utils\main.py
כלומר כולל את התקיה utils ולא רק את ההקובץ main.py .
וזה אפילו נהיה לי עוד יותר לא ברור אם במקום קובץ נגיד יש תקיה ולא קובץ.
בשתי הדוגמאות אתה מגבה גם את הקבצים שיש בתוך lms או רק את התקיה עצמה ?
Yam
רק את התיקייה.
אתה תמיד מגבה את היררכיית התיקיות מהמקום שבו יש את .wit ועד הקובץ/תיקייה שמבקשים ממך לגבות.
aviadamar
אוקי אז לסיכום אני מגבה רק את מה שנמצא ב"קצה" הנתיב מבחינת תקיות או קבצים,
ואת כל תקיות האב עד לתיקיית האב בה אני מוצא את wit ללא התוכן שלהם אלא רק את התקיות עצמן.
Yam
אתה מגבה את מה שביקשו ממך לגבות, שזה הפרמטר שקיבלת ב־add.
את כולו, את כל הקבצים והתיקיות ותתי הקבצים של מה שקיבלת ב־add.
על הדרך, אתה מגבה גם את התיקיות (רק התיקיות) שנמצאות מעל הנתיב שאתה מגבה, עד (ולא כולל) התיקייה שבה נמצאת תיקיית .wit.
צריך להשתמש בהיגיון כדי להבין למה.
נניח ויש לך את projects שבחרת להפוך לתיקיית wit. אז הלכת לprojects והרצת את python wit.py init ונוצרה שם תיקיית .wit.
בתוך projects יש לך את Projects/exercises/1 ואת Projects/answers/1. נניח שעשינו לשתיהן add.
אם סתם היית מגבה ל־staging_area את 1 ולא את כל ההיררכייה עד אליה, staging_area הייתה כוללת את כל הקבצים מעורבבים משתי התיקיות. זה היה יוצר התנגשות והיה קשה לך לשחזר את צורת התיקייה בעתיד.
aviadamar
סבבה עכשיו אני לגמרי מבין.
מצטער אם קצת שיגעתי בנושא אבל באמת לא היה לי ברור הנושא של גיבוי כל תקיות
האב ללא התוכן שלהם.
תודה לכל העוזרים
ron.huberfeld
בדוגמה א, כאשר אתה עומד ב c:\projects אין מעליך תיקיית .wit - לא צריכים לקבל שגיאה?
Yam
לא, כיוון שמה שמעניין שם זה הקובץ שהוספת ולא תיקיית העבודה העכשווית, ולכן הבדיקה של האם יש תיקיית .wit למעלה מתייחסת ל־sys.argv[2] ולא ל־cwd
לייק 1
efratush
מנסה להבין,
כשאני אכניס את אחד מהנתיבים בדוגמה הראשונה לחיפוש/שורת כתובת, אגיע לתיקיה lmsdb.
לא הבנתי למה צריך לגבות גם את תיקיית האב: lms כמו שהראת בעץ?