מדריך ל- JGit

1. הקדמה

JGit היא יישום קל וטהור של ספריית Java של מערכת בקרת הגרסאות של Git - כולל שגרות גישה למאגר, פרוטוקולי רשת ואלגוריתמי בקרת גרסאות ליבה.

JGit הוא יישום מלא לחלוטין של Git שנכתב ב- Java ונמצא בשימוש נרחב בקהילת Java. פרויקט JGit נמצא תחת מטריית הליקוי, ואת ביתו ניתן למצוא ב- JGit.

במדריך זה נסביר כיצד לעבוד איתו.

2. תחילת העבודה

ישנן מספר דרכים לחבר את הפרויקט שלך ל- JGit ולהתחיל לכתוב קוד. כנראה שהדרך הקלה ביותר היא להשתמש ב- Maven - השילוב מתבצע על ידי הוספת קטע הבא ל- התג שלנו pom.xml קוֹבֶץ:

 org.eclipse.jgit org.eclipse.jgit 4.6.0.201612231935-r 

אנא בקר במאגר Maven Central עבור הגרסה החדשה ביותר של JGit. לאחר סיום שלב זה, Maven ירכוש וישתמש אוטומטית בספריות JGit הדרושות לנו.

אם אתה מעדיף חבילות OSGi, יש גם מאגר p2. אנא בקרו ב- Eclipse JGit כדי לקבל את המידע הדרוש כיצד לשלב ספרייה זו.

3. יצירת מאגר

ל- JGit שתי רמות בסיסיות של API: אינסטלציה ו חַרְסִינָה. המינוח עבור אלה מגיע מגיט עצמו. JGit מחולק לאותם אזורים:

  • חַרְסִינָה ממשקי API - חזיתית לפעולות נפוצות ברמת המשתמש (בדומה לכלי שורת הפקודה Git)
  • אינסטלציה ממשקי API - אינטראקציה ישירה עם אובייקטי מאגר ברמה נמוכה

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

ה init פקודה תאפשר לנו ליצור מאגר ריק:

Git git = Git.init (). SetDirectory ("/ path / to / repo"). Call ();

פעולה זו תיצור מאגר עם ספריית עבודה במיקום שניתן setDirectory ().

ניתן לשכפל מאגר קיים עם cloneRepository פקודה:

Git git = Git.cloneRepository () .setURI ("// github.com/eclipse/jgit.git") .setDirectory ("/ path / to / repo") .call ();

הקוד לעיל ישכפל את מאגר JGit לספרייה המקומית ששמה נתיב / אל / רפו.

4. אובייקטים של גיט

כל האובייקטים מיוצגים על ידי מזהה SHA-1 במודל האובייקט Git. ב- JGit, זה מיוצג על ידי ה- AnyObjectId ו ObjectId שיעורים.

ישנם ארבעה סוגים של אובייקטים במודל האובייקט Git:

  • כֶּתֶם - משמש לאחסון נתוני קבצים
  • עֵץ - ספריה; זה מתייחס לאחרים עצים ו כתמים
  • לְבַצֵעַ - מצביע על עץ בודד
  • תָג - מסמן התחייבות כמיוחד; משמש בדרך כלל לסימון מהדורות ספציפיות

כדי לפתור אובייקט ממאגר, פשוט העבירו את התיקון הנכון כמו בפונקציה הבאה:

ראש ObjectId = repository.resolve ("HEAD");

4.1. Ref

ה Ref הוא משתנה המחזיק במזהה אובייקט יחיד. מזהה האובייקט יכול להיות כל אובייקט Git חוקי (כֶּתֶם, עֵץ, לְבַצֵעַ, תָג).

לדוגמא, כדי לשאול לגבי ההפניה לכותרת ראשית, אתה יכול פשוט להתקשר:

Ref HEAD = repository.getRef ("refs / heads / master");

4.2. RevWalk

ה RevWalk עובר גרף התחייבות ומייצר את ההתחייבויות המתאימות לפי הסדר:

הליכה של RevWalk = RevWalk חדש (מאגר);

4.3. RevCommit

ה RevCommit מייצג התחייבות במודל אובייקט גיט. כדי לנתח התחייבות, השתמש ב- RevWalk למשל:

הליכה של RevWalk = RevWalk חדש (מאגר); RevCommit commit = walk.parseCommit (objectIdOfCommit);

4.4. RevTag

ה RevTag מייצג תג במודל האובייקט Git. אתה יכול להשתמש ב- RevWalk למשל לנתח תג:

הליכה של RevWalk = RevWalk חדש (מאגר); תג RevTag = walk.parseTag (objectIdOfTag);

4.5. RevTree

ה RevTree מייצג עץ במודל האובייקט Git. א RevWalk מופע משמש גם לניתוח עץ:

הליכה של RevWalk = RevWalk חדש (מאגר); עץ RevTree = walk.parseTree (objectIdOfTree);

5. ממשק API לפורצלן

בעוד JGit מכיל הרבה קוד ברמה נמוכה לעבודה עם מאגרי Git, הוא מכיל גם API ברמה גבוהה יותר שמחקה חלק מה- Git חַרְסִינָה פקודות ב org.eclipse.jgit.api חֲבִילָה.

5.1. AddCommand (git-add)

ה AddCommand מאפשר לך להוסיף קבצים לאינדקס באמצעות:

  • addFilepattern()

הנה דוגמה מהירה כיצד להוסיף קבוצת קבצים לאינדקס באמצעות ה- חַרְסִינָה ממשק API:

Git git = Git חדש (db); AddCommand להוסיף = git.add (); add.addFilepattern ("someDirectory"). call ();

5.2. CommitCommand (git-commit)

ה CommitCommand מאפשר לך לבצע התחייבויות ויש לו את האפשרויות הבאות:

  • setAuthor()
  • setCommitter()
  • setAll()

הנה דוגמה מהירה כיצד להתחייב באמצעות ה- חַרְסִינָה ממשק API:

Git git = Git חדש (db); CommitCommand commit = git.commit (); commit.setMessage ("התחייבות ראשונית"). call ();

5.3. TagCommand (git-tag)

ה TagCommand תומך במגוון אפשרויות תיוג:

  • setName()
  • setMessage()
  • setTagger()
  • setObjectId()
  • setForceUpdate()
  • setSigned()

הנה דוגמה מהירה לתיוג התחייבות באמצעות ה- חַרְסִינָה ממשק API:

Git git = Git חדש (db); RevCommit commit = git.commit (). SetMessage ("התחייבות ראשונית"). Call (); תג RevTag = git.tag (). SetName ("תג"). Call ();

5.4. LogCommand (git-log)

ה LogCommand מאפשר לך ללכת בקלות על גרף התחייבות.

  • הוסף (התחל AnyObjectId)
  • addRange (AnyObjectId מאז, AnyObjectId עד)

הנה דוגמה מהירה כיצד לקבל כמה הודעות יומן:

Git git = Git חדש (db); יומן Iterable = git.log (). Call ();

6. משימות נמלים

ל- JGit יש גם כמה משימות נמלים נפוצות הכלולות ב- org.eclipse.jgit.ant חבילה.

כדי להשתמש במשימות אלה:

זה יספק את git-clone, git-init ו git-checkout משימות.

6.1. שיבוט גיט

התכונות הבאות נדרשות:

  • אורי: ה- URI לשכפל ממנו

התכונות הבאות הן אופציונליות:

  • גורל: היעד לשכפול אליו (ברירת המחדל היא להשתמש בשם ספריות קריא אנושי המבוסס על רכיב הנתיב האחרון של URI)
  • חָשׂוּף: נָכוֹן/שֶׁקֶר/כן/לא כדי לציין אם המאגר המשובט צריך להיות חשוף או לא (ברירת המחדל ל שֶׁקֶר)
  • ענף: הענף הראשוני לבדיקה בעת שיבוט המאגר (ברירת המחדל היא רֹאשׁ)

6.2. git-init

אין צורך בתכונות להפעלת ה- git-init מְשִׁימָה.

התכונות הבאות הן אופציונליות:

  • גורל: הנתיב שבו מאתחל מאגר git (ברירת המחדל היא $ GIT_DIR או בספרייה הנוכחית)
  • חָשׂוּף: נָכוֹן/שֶׁקֶר/כן/לא כדי לציין אם המאגר צריך להיות חשוף או לא (ברירת המחדל ל שֶׁקֶר)

6.3. git-checkout

התכונות הבאות נדרשות:

  • src: הדרך למאגר git
  • ענף: הסניף הראשוני לקופה

התכונות הבאות הן אופציונליות:

  • יצירת סניף: נָכוֹן/שֶׁקֶר/כן/לא כדי לציין אם צריך ליצור את הענף אם הוא עדיין לא קיים (ברירת מחדל ל שֶׁקֶר)
  • כּוֹחַ: נָכוֹן/שֶׁקֶר/כן/לא: אם נָכוֹן/כן והענף עם השם הנתון כבר קיים, נקודת ההתחלה של ענף קיים תוגדר לנקודת התחלה חדשה; אם שֶׁקֶר, הסניף הקיים לא ישתנה (ברירת המחדל ל שֶׁקֶר)

7. מסקנה

לא קשה להבין את ה- JGit API ברמה גבוהה. אם אתה יודע באיזה פקודת git להשתמש, אתה יכול לנחש באילו מחלקות ושיטות להשתמש ב- JGit.

יש כאן אוסף של קטעי קוד JGit מוכנים להפעלה.

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


$config[zx-auto] not found$config[zx-overlay] not found