Skip to content

initial_import לא מזהה את הענף הראשי: שלוש פקודות git נדחות ברשימת ההיתר של _run_git_command #3479

Description

@amirbiron

מה קורה

initial_import ב-services/repo_sync_service.py מנסה לזהות את הענף הראשי של ריפו חדש בכמה דרכים, וכולן משתמשות בפקודות git ש-GitMirrorService._run_git_command דוחה:

  • git symbolic-ref --short HEAD, ו-git symbolic-ref --short refs/remotes/origin/HEAD
  • git for-each-ref --format=%(refname) refs/remotes/origin, ואותו דבר על refs/heads
  • ובדיקת הקיום _branch_exists, שמריצה git show-ref --verify --quiet

רשימת ההיתר (self._allowed_git_subcommands ב-GitMirrorService.__init__) היא clone, fetch, rev-parse, diff-tree, show, ls-tree, grep, log, rev-list. פקודה שאינה ברשימה חוזרת כ-GitCommandResult(success=False, stderr="Unsupported git subcommand"), בלי חריגה. כלומר כל ניסיון "נכשל בשקט", והזיהוי נופל תמיד לברירת המחדל: logger.warning("Could not detect any branch, falling back to 'main'").

מה זה עושה בפועל (מקריאת הקוד)

  • ריפו שהענף הראשי שלו main — עובד, במקרה.
  • ריפו שהענף הראשי שלו אחר (למשל master) ואין בו main — כל המועמדים ל-list_all_files נכשלים, והייבוא נגמר ב-"Failed to list repository files".
  • ריפו שיש בו גם main וגם ענף ראשי אחר — הייבוא מאנדקס את main, ו-repo_metadata.default_branch נשמר כ-main.

מה אומת ומה לא

  • אומת בהרצה: קריאה ל-_run_git_command עם symbolic-ref, show-ref ו-for-each-ref מחזירה success=False עם "Unsupported git subcommand".
  • לא אומת: האם יש היום בפרודקשן ריפו שהענף הראשי שלו אינו main. שאילתה על repo_metadata מול ה-default_branch האמיתי ב-GitHub תענה על זה.

למה זה עולה עכשיו

זה התגלה בעבודה על ref_not_mirrored (ענף claude/focused-ritchie-ju95we). מאז השינוי הזה, כלי ה-MCP עונים ref_not_mirrored כשהענף הראשי שבמטא-דאטה חסר במראה, במקום not_found כללי. לכן default_branch שגוי ייראה מעכשיו כ"הענף הראשי לא במראה" בכל קריאה בלי ref — גלוי יותר, אבל עדיין שגוי.

כיוון לתיקון (לא הוחלט)

  • להוסיף את שלוש הפקודות לרשימת ההיתר. שלושתן פקודות קריאה בלבד, אבל ההוספה משנה את התנהגות הייבוא, ולכן צריך טסט על מראה אמיתית שהענף הראשי שלה master (ובלי main).
  • או לזהות את הענף בפקודה שכבר ברשימה (rev-parse) — לא נבדק אם זה אפשרי במראה bare בכל המקרים.
  • בשתי הדרכים: הזיהוי לא צריך ליפול בשקט ל-main. כשאף ניסיון לא הצליח, זה כשל שצריך לומר את שמו.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions