זוהי הפקודה git-fast-export שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.
תָכְנִית:
שֵׁם
git-fast-export - ייצוא נתוני גיט
תַקצִיר
סילון ייצוא מהיר [אפשרויות] | סילון יבוא מהיר
תיאור
תוכנית זו שולחת את התיקונים הנתונים בצורה המתאימה להעברה אליה סילון
יבוא מהיר.
ניתן להשתמש בו כתחליף לחבילה קריא על ידי בני אדם (ראה גיט-באנדל(1)), או כמעין
אינטראקטיבי סילון פילטר-ענף.
אפשרויות
--התקדמות=
הַבלָעָה התקדמות הצהרות כל חפצים, שיוצגו על ידי סילון יבוא מהיר בְּמַהֲלָך
ייבוא.
--תגיות-חתומות=(מילה במילה|אזהרה|רצועת-אזהרה|רצועת|ביטול)
ציין כיצד לטפל בתגים חתומים. מכיוון שכל טרנספורמציה לאחר הייצוא יכולה
לשנות את שמות התגים (מה שיכול לקרות גם בעת אי הכללת גרסאות) את החתימות
לא יתאים.
כאשר מבקשים ביטול (שהיא ברירת המחדל), תוכנית זו תמות כאשר היא נתקלת ב
תג חתום. עם להפשיט, התגים יהפכו בשקט ללא חתומים, עם רצועת אזהרה הֵם
יהפוך ללא חתום אך תוצג אזהרה, עם מלה במלה, הם יהיו
מיוצא בשקט ועם להזהיר, הם ייוצאו, אך תראה אזהרה.
--תגית של אובייקט מסונן=(ביטול|שחרור|כתיבה מחדש)
ציין כיצד לטפל בתגים שאובייקט המתויג שלהם מסונן. מאחר ותיקונים
ניתן להגביל קבצים לייצוא לפי נתיב, ניתן לסנן לחלוטין אובייקטים שתויגו.
כאשר מבקשים ביטול (שהיא ברירת המחדל), תוכנית זו תמות כאשר היא תיתקל ב-
תג כזה. עם ירידה זה ישמיט תגיות כאלה מהפלט. עם לְשַׁכְתֵב, אם
אובייקט מתויג הוא commit, הוא יכתוב מחדש את התגית כדי לתייג commit קדמון (דרך
כתיבה מחדש של הורים; ראה git-rev-list(1))
-M, -C
בצע זיהוי העברה ו/או העתקה, כמתואר ב git-diff(1) עמוד מדריך, ו
השתמש בו כדי ליצור פקודות שינוי שם והעתקה במאגר הפלט.
שימו לב שגרסאות קודמות של פקודה זו לא התלוננו והפיקו שגויות
תוצאות אם הייתם נותנים את האפשרויות האלה.
--סימני-יצוא=
משליך את טבלת הסימנים הפנימיים ל כאשר הושלם. סימנים נכתבים אחד בכל שורה
כ- :markid SHA-1. רק סימונים עבור גרסאות נמחקים; סימונים עבור בלובים מתעלמים מהם.
מערכות תמיכה (backends) יכולות להשתמש בקובץ זה כדי לאמת ייבוא לאחר השלמתו, או כדי
שמור את טבלת הסימונים לאורך ריצות מצטברות. רק נפתח וקצוץ
בסיום, ניתן לתת את אותו נתיב בבטחה גם ל---import-marks. הקובץ י...
לא ייכתב אם לא סומן/יוצא אובייקט חדש.
--import-marks=
לפני עיבוד קלט כלשהו, טען את הסימנים המצוינים ב . קובץ הקלט חייב
קיים, חייב להיות קריא, ועליו להשתמש באותו פורמט כמו שנוצר על ידי --export-marks.
כל קומיט שכבר סומן לא ייוצא שוב. אם ה-backend
משתמש בקובץ דומה מסוג --import-marks, זה מאפשר הפעלה דו-כיוונית מצטברת
ייצוא המאגר על ידי שמירה על הסימונים זהים בכל הריצות.
--תייג-חסר-מזויף
לחלק מהמאגרים הישנים יש תגיות ללא תיוג. פרוטוקול הייבוא המהיר היה די...
קפדן לגבי זה, ולא התיר זאת. אז תזייף תייג כדי שיוכל לייבא במהירות
הפלט.
--use-done-feature
התחל את השידור עם תכונה עשה בית, ולסיים אותו ב- עשה פקודה.
--אין מידע
דלג על פלט של אובייקטי blob ובמקום זאת הפנה לבלובים באמצעות ה-hash SHA-1 המקורי שלהם.
זה שימושי בעת כתיבה מחדש של מבנה הספריות או ההיסטוריה של מאגר
מבלי לגעת בתוכן של קבצים בודדים. שימו לב שהזרם המתקבל יכול
לשימוש רק על ידי מאגר שכבר מכיל את האובייקטים הדרושים.
--עץ מלא
אפשרות זו תגרום ל-fast-export להוציא הנחיית "deleteall" עבור כל commit
ואחריה רשימה מלאה של כל הקבצים ב-commit (בניגוד לרישום בלבד של ה-
קבצים השונים מההורה הראשון של ה-commit).
-- אנונימי
אנונימיזציה של תוכן המאגר תוך שמירה על צורתו
היסטוריה ועץ מאוחסן. ראה את הסעיף על אנונימיזציה להלן.
--מפרט ref
החל את קוד ההפניה שצוין על כל קוד המיוצא. ניתן לציין מספר קוד.
[ ...]
רשימה של טיעונים, מקובל על סילון rev-parse ו סילון רשימת סיבובים, שמציין את
אובייקטים והפניות ספציפיים לייצוא. לדוגמה, master~10..master גורם ל-
ייצוא של ההפניה האבית הנוכחית יחד עם כל האובייקטים שנוספו מאז ה-10 שלה
התחייבות של אב קדמון.
דוגמאות
$ git fast-export --all | (cd /empty/repository && git fast-import)
פעולה זו תייצא את כל המאגר ותיבא אותו למאגר הריק הקיים.
למעט קידוד מחדש של קומיטים שאינם ב-UTF-8, זו תהיה שיקוף אחד לאחד.
$ git fast-export master~5..master |
sed "s|refs/heads/master|refs/heads/other|" |
ייבוא מהיר של גיט
זה יוצר ענף חדש בשם אַחֵר החל מ- מאסטר~5..מאסטר (כלומר, אם אב יש ליניארי
היסטוריה, זה ייקח את 5 הקומיטים האחרונים).
שים לב שזה מניח שאף אחד מהבלובים והודעות ה-commit שאליהם מתייחס אותו
טווח הגרסאות מכיל את המחרוזת שופטים/ראשים/מאסטר.
אנונימיזציה
אם האפשרות --anonymize ניתנת, git ינסה להסיר את כל המידע המזהה
מהמאגר תוך שמירה על מספיק מהעץ המקורי ודפוסי ההיסטוריה
לשחזר כמה באגים. המטרה היא שבאג גיט שנמצא במאגר פרטי
יישאר במאגר האנונימי, ואת האחרון ניתן לשתף עם git
מפתחים שיסייעו בפתרון הבאג.
עם אפשרות זו, git יחליף את כל ה-refnames, ה-paths, תוכן ה-blob, ה-commit והתגים.
הודעות, שמות וכתובות דוא"ל בפלט עם נתונים אנונימיים. שני מופעים של
אותה מחרוזת תוחלף באופן שווה (למשל, שני קומיטים עם אותו מחבר יוחלפו
יש את אותו מחבר אנונימי בפלט, אך אין דמיון למקור
מחרוזת המחבר). הקשר בין commits, branches ותגים נשמר, גם כן.
כמו חותמות הזמן של commit (אבל הודעות commit ושמות ה-rephname אינם דומים ל-
המקוריים). ההרכב היחסי של העץ נשמר (למשל, אם יש לך עץ שורש
עם 10 קבצים ו-3 עצים, כך גם הפלט), אבל השמות שלהם ותוכן ה-
הקבצים יוחלפו.
אם אתם חושבים שמצאתם באג ב-git, תוכלו להתחיל בייצוא זרם אנונימי של
כל המאגר:
$ git מהיר-יצוא --אנונימיזציה --הכל >אנונימיזציה-זרם
לאחר מכן, ודא שהבאג קיים במאגר שנוצר מאותו זרם (באגים רבים
לא, מכיוון שהם באמת תלויים בתוכן המדויק של המאגר):
$ git init anon-repo
$ cd אנונימי-ריפו
$ git מהיר-יבוא <../anon-stream
... בדוק את הבאג שלך ...
אם המאגר האנונימי מציג את הבאג, ייתכן שכדאי לשתף את anonstream יחד עם
דוח באג רגיל. שימו לב שהזרם האנונימי נדחס היטב, לכן דחיסה מהירה שלו (gzip)
מומלץ. אם ברצונך לבדוק את הזרם ולראות שהוא אינו מכיל כל
נתונים פרטיים, ניתן לעיין בהם ישירות לפני השליחה. ייתכן שתרצה גם לנסות:
$ perl -pe 's/\d+/X/g'
אשר מציג את כל השורות הייחודיות (עם מספרים שהומרו ל-"X", כדי לכווץ את "משתמש 0",
"משתמש 1" וכו' לתוך "משתמש X"). זה מייצר פלט קטן בהרבה, וזה בדרך כלל קל
כדי לאשר במהירות שאין נתונים פרטיים בזרם.
מגבלות
השאלה היא איך? סילון יבוא מהיר לא ניתן לתייג עצים, לא תוכל לייצא את הקובץ linux.git
repository לחלוטין, מכיוון שהוא מכיל תגית המפנה לעץ במקום commit.
השתמש ב-git-fast-export באופן מקוון באמצעות שירותי onworks.net