תרגיל 3, הפקודה add

תגיות:

מה בנוגע למצב שהתיקיה הפעילה נמצאת בנתיב שמעליה איפה שהוא ישנה תיקיית wit., אבל הפעולה add מתבצעת על קובץ או תיקיה שבנתיב חיצוני לגמרי לנתיב הזה?
שאלה נוספת:
האם ניתן להניח שהפונקציה add מקבלת גם את הנתיב לקובץ\תיקיה, או רק את שמם?

לייק 1

האם הנתיב החיצוני נמצא בתיקייה, שבאחת מהתיקיות שמעליה קיימת תיקיית wit.?

ניתן ורצוי להניח נתיב

נאמר שכן, שיש שם בנתיב תיקיית .wit. אז הגיבוי מתבצע בנתיב אליה, ולא לתיקיית ה wit שבמעלה הנתיב של המיקום בו הפעלנו?

הגיבוי תמיד מתבצע ביחס לתיקייה שבה יש את תיקיית ה־.wit
משמע, אם ה־current working directory היא a/b/c/d, ו־.wit נמצאת בתיקייה b, ובחרנו לגבות את c, הנתיב שיגובה הוא b/c וכל מה שמתחתיו.

לייק 1

תודה. אבל אם ככה, גם בהקשר של ההסבר וגם בהקשר של התיאור בתרגיל, אני לא ממש מבין את חשיבות מיקום ה working directory לענין הגיבוי. אם הגיבוי בכל אופן בוחן את נתיב התיקייה\קובץ המגובים, ומחפש את תיקיית wit במעלה הנתיב שלה כמיקום היחס לפעולת הגיבוי, אז איזו משמעות טכנית יש למיקום ההפעלה? להבנתי, מיקום ההפעלה פה פחות רלוונטי, אלא מה שחשוב זה נתיב הגיבוי ביחס לתיקיית wit שממוקמת בו.
אשמח מאוד להבהרה :slight_smile:

אין חשיבות למיקום ה־current working directory באמת.
ה"חשיבות" היחידה היא שאם ה־cwd הוא a/b/c ונותנים ל־add פרמטר כמו d (נתיב רלטיבי), הוא אמור לדעת להתמודד.
זו לא דרישה חזקה, אבל ככה כל תוכנה בערך תעבוד ב־cmd וכדאי לתרגל :slight_smile:

לייק 1

אז אם ככה, הצעה קטנה (בצניעות), אולי כדאי לערוך את הוראות התרגיל. מצוין שם בפירוש שמה שקובע את היתכנות הגיבוי הוא הימצאות של wit במעלה הנתיב של CWD. ועל פי ההסבר שלך, מה שמכריע היא הימצאות התיקייה במעלה הנתיב של מיקום הגיבוי, והם לא בהכרח ‘יתחברו’. זה מעט מבלבל…

לייק 1

אתה צודק, אערוך. :slight_smile:

לייק 1

@koby מחקתי את המשפט הראשון שיכל להיות מבלבל.
תוכל לראות אם עכשיו זה בסדר בעינייך?

עכשיו זה הרבה יותר ברור :slight_smile:
אבל… לראשונה קראתי את המשפט האחרון, וגם אותו אני לא מבין…

האם הכוונה שהפונקציה add תופעל על path2? כי לפי שורת הפקודה, זה מה שאמור לקרות…

הכוונה באמת ל-path2

לא ברור לי בדיוק מה הפרמטר שהפוקנציה add מקבלת, האם זה רק שם הקובץ שבהכרח נמצא בתיקייה שממנה אנחנו מפעילים את add?
או האם הפרמטר לadd זה הfull_path של הקובץ?
לפי הדוגמאות זה רק שמות הקבצים אבל פה בתשובה אתה מדבר על כך שמדובר בנתיב כלומר full_path?

הפונקציה ADD מקבלת נתיב לקובץ או תיקייה

כלומר relative path ?

או absolute path, שניהם אמורים לעבוד.

לייק 1

2 פוסטים פוצלו לנושא חדש: הנתיב בפרמטר לפקודת add

אז רק לוודא שהבנתי:
1.כאשר מגבים קובץ, רק הקובץ עצמו יגובה.
2. כאשר מגבים תיקייה מסויימת יגובו כל התיקיות האב שלה, עד שמגיעים לתיקייה של wit.?

בדוגמא הזאת:

  1. אם, בעודנו נמצאים בתיקייה Etztrubal, אנחנו נעשה add ל־ lms/lmsdb – בתיקייה staging_area תווצר התיקייה lms, תחתיה התיקייה lmsdb, והקבצים bootstrap.py , database_config.py , __init__.py ו־ models.py יועתקו אליה.

פה בדוגמא עושים add בעצם לתיקייה lmsdb, אבל גם התיקייה שמעליה lms נמצאת בתיקיית הגיבוי.
בעצם מועתקת תיקיית האב, lms, אך היא מכילה אך ורק את התיקייה ששמנו לגיבוי, (שאר התיקיות שתיקיית האב lms מכילה לא מגובות).

גם כשמגבים קובץ, המיקום היחסי שלו ב־staging_area נשמר. wit add lms/lmsdb/koko.py יצור את staging_area/lms/lmsdb/koko.py

לייק 1

עוד שאלת הבהרה…
הבנתי שבמידה והפעולה נעשית בשנית על אותו הקובץ\תיקיה, יש ‘לדרוס’ את השמירה הקודמת.
אבל נתקלתי בבעיה אחרת. על פי נתיב הדוגמה בשאלה, איך הפעולה אמורה לפעול במצב שנעשה גיבוי ראשוני לתיקיה lmsdb, ולאחר מכן נעשה גיבוי לתיקיה extractor?
בשני המקרים, הנתיב לקובץ מגובה, מה שאומר שבשניהם התיקיה הראשונה שאמורה להיווצר בפעולת הגיבוי היא lms. אבל לא ניתן ליצור את אותה התיקיה באותו המיקום פעמיים, רק בגלל שבמורד הנתיב שלה, היא מביאה למיקום שונה

עניין של היגיון – אתה אמור לדרוס רק את התיקייה שביקשו לגבות, לא את אלו שמעליה :upside_down_face: