יום 1 הפקודה Add נתיב רלטיבי \ אבסולוטי

תגיות:

בגדול מה שקורה זה שאת מגבה את התקייה שאת מקבלת בנתיב (את זו שבקצה)
ואת מכניס לstage את השרשור תקיות ממנה עד לתקיה .wit.

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

2 לייקים

מהתשובה של ים השתמע לי שהנתיב אחרי גיבוי יראה כך

C:\Projects\Yam\Etztrubal\.wit\staging_area\lms\lmsdb

ולא

C:\Projects\Yam\Etztrubal\.wit\staging_area\lmsdb

לייק 1

כיוון שהתיקייה .wit נמצאת ב־Etztrubal, ואנחנו גוזרים את כל היררכיית התיקיות את התיקייה שאותה אנחנו רוצים לגבות.

תחשבי שבעץ שלנו, תחת Etztrubal הייתה גם התיקייה lms/lmsdb וגם התיקייה moshe/lmsdb, והיינו מגבים את שניהם. היה יוצא לנו סלט של קבצים משתי התיקיות.
יותר גרוע – אם היה לנו קובץ בשם main.py בשניהם, לדוגמה, האחד היה דורס את השני.

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

סיבה נוספת: אחר כך, כשנעשה checkout כדי לחזור ל־image מסוים (לשחזר גיבוי), נוכל לקבל בקלות את הצורה המקורית של התיקייה שגיבינו.

לייק 1

לגבי הנתיב שצריך לגבות, אני מבינה שצריך את הנתיב האבסולוטי ולא רק את השם של הקובץ או התיקייה.
השאלה שלי היא לגבי הנתיב שנוצר אחרי הגיבוי.

עורכת:
צריך בתיקיית היעד(wit\staging_area.) ליצור את כל התיקיות בין שורש תיקיית הגיבוי עד למה שהתבקשנו לגבות ע"מ שכשנצטרך לשחזר בעתיד, נדע בדיוק לאן לשחזר. (חוץ מזה שזה מונע דריסה של קבצים שונים עם שם זהה שמקורם בתיקיות שונות)

ב-STAGING_AREA…
גם את הקבצים הקיימים - מבחינת שם? או גם תוכן (פעם ראשונה)?

כלומר -
├── lms
│ ├── lmsdb
│ │ ├── bootstrap.py
│ │ ├── database_config.py
│ │ ├── init.py
└── └── └── models.py
כל ה-.py מועתקים? או רק נוצרים?

ל-image בהמשך אני מבין שמועתקים.

בadd מעתיקים כולל תוכן, את כל מה שקיבלת בפרמטר לadd. כלומר, קובץ/ תיקייה כולל כל מה שבתוכו.
בשביל ההיררכיה של התיקיות,
מתיקיית השורש, אתה יוצר תיקייה בתוך תיקייה שמכילות רק את התיקייה הבאה בהיררכיה עד הקובץ/התיקייה המדוברת שכוללת את כל התוכן.

שאלה כדי לוודא - במידה ובנתיב שעושים אליו add יש בין היתר תת תיקייה ולא רק סתם קבצים, האם התיקייה תועתק על כל תתי הקבצים שלה? (כיוון שהיא תיקיית בת של הנתיב שבחרתי ולא תיקיית אב)

כן. כולל כל מה שנמצא בתיקייה ובתתי תיקיה.

אם הבנתי נכון ממה שכתבת כאן, האיתור של תיקיית wit. מתבצע על בסיס ה-path שנמסר בקלט. מה שלא הבנתי - מה המשמעות של תיקיית העבודה העכשווית? למה היא משנה כאן?

קראתי הרבה פעמים את המשפט הזה מתוך ההסבר המקורי של התרגיל ועדיין לא הצלחתי להבין:
דאגו שאם אנחנו רושמים: python path/to/wit.py add path2 (כאשר path/to/wit.py זה הנתיב ל־ wit.py ), תופעל הפונקציה add על ה־ path2 , כשאתם מתייחסים לנתיב ביחס לתיקיית העבודה הנוכחית .

אם מספקים אחרי add פרמטר שהוא נתיב אבסולוטי (C:\Yam\Projects\Etztrubal\moshe.py), אין משמעות לתיקיית העבודה הנוכחית.
אם מספקים אחרי add פרמטר שהוא נתיב רלטיבי (Etztrubal\moshe.py), אז הרלטיביות היא ביחס לתיקיית העבודה הנוכחית (משמע: אם אני ב־C, הנתיב הוא C:\Etztrubal\moshe.py ואם אני ב־C:\Yam\Projects הנתיב הוא C:\Yam\Projects\Etztrubal\moshe.py)

2 לייקים

תודה רבה. אז בעצם צריכה להתבצע איזושהי בדיקה של סוג הנתיב שהתקבל כדי שנדע אם צריך “לערוך” אותו?

יש מצב שפייתון יכולה לבדוק עבורך :upside_down_face:

היי, אם ניתנה לי כתובת של תיקיה, מלבד העתקת כל הקבצים בתיקיה אני צריך להעתיק בעזרת add גם את התיקיות ותתי התיקיות ותוכנן?

יש לך תשובות למעלה בשרשור.
כן.