LibGit2
يوفر وحدة LibGit2 روابط إلى libgit2، وهي مكتبة C محمولة تنفذ الوظائف الأساسية لنظام التحكم في الإصدارات Git. تُستخدم هذه الروابط حاليًا لتشغيل مدير حزم جوليا. من المتوقع أن يتم نقل هذه الوحدة في النهاية إلى حزمة منفصلة.
Functionality
بعض هذه الوثائق تفترض معرفة سابقة بواجهة برمجة التطبيقات libgit2. لمزيد من المعلومات حول بعض الكائنات والأساليب المشار إليها هنا، يرجى الرجوع إلى libgit2 API reference.
LibGit2.Buffer
— TypeLibGit2.Buffer
حاوية بيانات لتصدير البيانات من libgit2. تتطابق مع هيكل git_buf
.
عند جلب البيانات من LibGit2، سيكون الاستخدام النموذجي كما يلي:
buf_ref = Ref(Buffer())
@check ccall(..., (Ptr{Buffer},), buf_ref)
# عملية على buf_ref
free(buf_ref)
بشكل خاص، لاحظ أنه يجب استدعاء LibGit2.free
بعد ذلك على كائن Ref
.
LibGit2.CheckoutOptions
— TypeLibGit2.CheckoutOptions
يتطابق مع هيكل git_checkout_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.checkout_strategy
: تحديد كيفية التعامل مع النزاعات وما إذا كان يجب فرض عملية السحب/إعادة إنشاء الملفات المفقودة.disable_filters
: إذا كانت غير صفرية، فلا تطبق الفلاتر مثل CLRF (لتحويل فواصل الأسطر بين UNIX و DOS).dir_mode
: وضع القراءة/الكتابة/الوصول لأي دلائل متعلقة بالسحب. الافتراضي هو0755
.file_mode
: وضع القراءة/الكتابة/الوصول لأي ملفات متعلقة بالسحب. الافتراضي هو0755
أو0644
، اعتمادًا على الكائن.file_open_flags
: أعلام بتية تستخدم لفتح أي ملفات أثناء السحب.notify_flags
: أعلام لنوع النزاعات التي يجب أن يتم إبلاغ المستخدم عنها.notify_cb
: دالة رد نداء اختيارية لإبلاغ المستخدم إذا حدثت نزاع أثناء السحب. إذا كانت هذه الدالة تعيد قيمة غير صفرية، سيتم إلغاء السحب.notify_payload
: الحمولة لدالة رد النداء للإبلاغ.progress_cb
: دالة رد نداء اختيارية لعرض تقدم السحب.progress_payload
: الحمولة لدالة رد النداء للتقدم.paths
: إذا لم تكن فارغة، تصف أي المسارات يجب البحث عنها أثناء السحب. إذا كانت فارغة، ستحدث عملية السحب على جميع الملفات في المستودع.baseline
: المحتوى المتوقع لـworkdir
، الملتقط في (مؤشر إلى)GitTree
. الافتراضي هو حالة الشجرة عند HEAD.baseline_index
: المحتوى المتوقع لـworkdir
، الملتقط في (مؤشر إلى)GitIndex
. الافتراضي هو حالة الفهرس عند HEAD.target_directory
: إذا لم تكن فارغة، السحب إلى هذا الدليل بدلاً منworkdir
.ancestor_label
: في حالة النزاعات، اسم الجانب المشترك.our_label
: في حالة النزاعات، اسم "جانبنا".their_label
: في حالة النزاعات، اسم "جانبهم".perfdata_cb
: دالة رد نداء اختيارية لعرض بيانات الأداء.perfdata_payload
: الحمولة لدالة رد النداء للأداء.
LibGit2.CloneOptions
— TypeLibGit2.CloneOptions
يتطابق مع هيكل git_clone_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.checkout_opts
: الخيارات لأداء عملية السحب من البعيد كجزء من الاستنساخ.fetch_opts
: الخيارات لأداء عملية السحب المسبق من البعيد كجزء من الاستنساخ.bare
: إذا كانت0
، استنساخ المستودع البعيد بالكامل. إذا كانت غير صفرية، قم بإجراء استنساخ عاري، حيث لا يوجد نسخة محلية من ملفات المصدر في المستودع وgitdir
وworkdir
هما نفس الشيء.localclone
: علامة تشير إلى ما إذا كان يجب استنساخ قاعدة بيانات كائن محلية أو إجراء سحب. الافتراضي هو السماح لـ git بالقرار. لن يستخدم النقل المدرك لـ git لاستنساخ محلي، ولكنه سيستخدمه لعناوين URL التي تبدأ بـfile://
.checkout_branch
: اسم الفرع الذي سيتم سحبه. إذا كانت سلسلة فارغة، سيتم سحب الفرع الافتراضي من البعيد.repository_cb
: رد نداء اختياري سيتم استخدامه لإنشاء المستودع الجديد الذي يتم فيه الاستنساخ.repository_cb_payload
: الحمولة لرد نداء المستودع.remote_cb
: رد نداء اختياري يستخدم لإنشاءGitRemote
قبل إجراء الاستنساخ منه.remote_cb_payload
: الحمولة لرد نداء البعيد.
LibGit2.DescribeOptions
— TypeLibGit2.DescribeOptions
يتطابق مع هيكل git_describe_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.max_candidates_tags
: اعتبر هذا العدد من أحدث العلامات فيrefs/tags
لوصف الالتزام. الافتراضي هو 10 (لذا سيتم فحص أحدث 10 علامات لمعرفة ما إذا كانت تصف الالتزام).describe_strategy
: ما إذا كان يجب اعتبار جميع الإدخالات فيrefs/tags
(ما يعادلgit-describe --tags
) أو جميع الإدخالات فيrefs/
(ما يعادلgit-describe --all
). الافتراضي هو عرض العلامات المعلنة فقط. إذا تم تمريرConsts.DESCRIBE_TAGS
، سيتم اعتبار جميع العلامات، سواء كانت معلنة أم لا. إذا تم تمريرConsts.DESCRIBE_ALL
، سيتم اعتبار أي مرجع فيrefs/
.pattern
: اعتبر فقط العلامات التي تتطابق معpattern
. يدعم توسيع الجلوب.only_follow_first_parent
: عند العثور على المسافة من مرجع مطابق إلى الكائن الموصوف، اعتبر فقط المسافة من الوالد الأول.show_commit_oid_as_fallback
: إذا لم يمكن العثور على مرجع مطابق يصف الالتزام، اعرضGitHash
للالتزام بدلاً من إلقاء خطأ (السلوك الافتراضي).
LibGit2.DescribeFormatOptions
— TypeLibGit2.DescribeFormatOptions
يتطابق مع هيكل git_describe_format_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.abbreviated_size
: الحد الأدنى لحجمGitHash
المختصر الذي يجب استخدامه، مع الافتراضي7
.always_use_long_format
: تعيينه إلى1
لاستخدام التنسيق الطويل للسلاسل حتى لو كان يمكن استخدام تنسيق قصير.dirty_suffix
: إذا تم تعيينه، سيتم إضافته إلى نهاية سلسلة الوصف إذا كانتworkdir
متسخة.
LibGit2.DiffDelta
— TypeLibGit2.DiffDelta
وصف التغييرات لإدخال واحد. يتطابق مع هيكل git_diff_delta
.
تمثل الحقول:
status
: واحدة منConsts.DELTA_STATUS
، تشير إلى ما إذا كان الملف قد تم إضافته/تعديله/حذفه.flags
: علامات للدلتا والأشياء على كل جانب. تحدد ما إذا كان يجب التعامل مع الملف (الملفات) كملفات ثنائية/نصية، وما إذا كانت موجودة على كل جانب من الفرق، وما إذا كانت معرفات الكائن معروفة بأنها صحيحة.similarity
: تستخدم للإشارة إلى ما إذا كان قد تم إعادة تسمية ملف أو نسخه.nfiles
: عدد الملفات في الدلتا (على سبيل المثال، إذا تم تشغيل الدلتا على معرف التزام فرعي، فقد تحتوي على أكثر من ملف واحد).old_file
:DiffFile
تحتوي على معلومات حول الملف (الملفات) قبل التغييرات.new_file
:DiffFile
تحتوي على معلومات حول الملف (الملفات) بعد التغييرات.
LibGit2.DiffFile
— TypeLibGit2.DiffFile
وصف لواحدة من جوانب الدلتا. يتطابق مع هيكل git_diff_file
.
تمثل الحقول:
id
:GitHash
للعنصر في الفرق. إذا كان العنصر فارغًا في هذه الجانب من الفرق (على سبيل المثال، إذا كان الفرق يتعلق بإزالة ملف)، سيكون هذاGitHash(0)
.path
: مسار منتهي بـNULL
للعنصر بالنسبة لدليل العمل للمستودع.size
: حجم العنصر بالبايت.flags
: مجموعة من أعلامgit_diff_flag_t
. يتم تعيين البتi
من هذه القيمة الصحيحة إلى العلمi
.mode
: وضعstat
للعنصر.id_abbrev
: موجود فقط في إصدارات LibGit2 الأحدث من أو تساوي0.25.0
. طول حقلid
عند تحويله باستخدامstring
. عادة ما يكون مساوياً لـOID_HEXSZ
(40).
LibGit2.DiffOptionsStruct
— TypeLibGit2.DiffOptionsStruct
يتطابق مع هيكل git_diff_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.flags
: علامات تتحكم في الملفات التي ستظهر في الفرق. الافتراضي هوDIFF_NORMAL
.ignore_submodules
: ما إذا كان يجب النظر في الملفات في الوحدات الفرعية أم لا. الافتراضي هوSUBMODULE_IGNORE_UNSPECIFIED
، مما يعني أن تكوين الوحدة الفرعية سيتحكم في ما إذا كانت ستظهر في الفرق أم لا.pathspec
: المسار إلى الملفات التي يجب تضمينها في الفرق. الافتراضي هو استخدام جميع الملفات في المستودع.notify_cb
: رد نداء اختياري سيقوم بإخطار المستخدم بالتغييرات في الفرق مع إضافة دلتا الملفات إليه.progress_cb
: رد نداء اختياري سيعرض تقدم الفرق. ذو صلة فقط في إصدارات libgit2 التي لا تقل عن 0.24.0.payload
: الحمولة التي سيتم تمريرها إلىnotify_cb
وprogress_cb
.context_lines
: عدد الأسطر غير المتغيرة المستخدمة لتعريف حواف الكتلة. هذا هو أيضًا عدد الأسطر التي ستظهر قبل/بعد الكتلة لتوفير السياق. الافتراضي هو 3.interhunk_lines
: الحد الأقصى لعدد الأسطر غير المتغيرة بين كتلتين منفصلتين المسموح به قبل دمج الكتلتين. الافتراضي هو 0.id_abbrev
: يحدد طول اختصارGitHash
للطباعة. الافتراضي هو7
.max_size
: الحد الأقصى لحجم ملف الكائن. فوق هذا الحجم، سيتم التعامل معه ككائن ثنائي. الافتراضي هو 512 ميغابايت.old_prefix
: الدليل الافتراضي للملفات القديمة على جانب واحد من الفرق. الافتراضي هو"a"
.new_prefix
: الدليل الافتراضي للملفات الجديدة على جانب واحد من الفرق. الافتراضي هو"b"
.
LibGit2.FetchHead
— TypeLibGit2.FetchHead
يحتوي على معلومات حول HEAD أثناء عملية السحب، بما في ذلك اسم ورابط الفرع الذي تم السحب منه، وoid لـ HEAD، وما إذا كان HEAD الذي تم سحبه قد تم دمجه محليًا.
تمثل الحقول:
name
: الاسم في قاعدة بيانات المراجع المحلية لرأس السحب، على سبيل المثال،"refs/heads/master"
.url
: رابط رأس السحب.oid
:GitHash
لقمة رأس السحب.ismerge
: علامة بوليانية تشير إلى ما إذا كانت التغييرات في البعيد قد تم دمجها في النسخة المحلية أم لا. إذا كانتtrue
، فإن النسخة المحلية محدثة مع رأس السحب البعيد.
LibGit2.FetchOptions
— TypeLibGit2.FetchOptions
يتطابق مع هيكل git_fetch_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.callbacks
: ردود الاتصال عن بُعد لاستخدامها أثناء السحب.prune
: ما إذا كان يجب إجراء عملية تنظيف بعد السحب أم لا. الإعداد الافتراضي هو استخدام الإعداد منGitConfig
.update_fetchhead
: ما إذا كان يجب تحديثFetchHead
بعد السحب. الإعداد الافتراضي هو إجراء التحديث، وهو السلوك العادي لـ git.download_tags
: ما إذا كان يجب تنزيل العلامات الموجودة على البُعد أم لا. الإعداد الافتراضي هو طلب العلامات للأشياء التي يتم تنزيلها على أي حال من الخادم.proxy_opts
: خيارات الاتصال بالبعيد من خلال وكيل. انظرProxyOptions
. موجودة فقط في إصدارات libgit2 الأحدث من أو تساوي 0.25.0.custom_headers
: أي رؤوس إضافية مطلوبة للسحب. موجودة فقط في إصدارات libgit2 الأحدث من أو تساوي 0.24.0.
LibGit2.GitAnnotated
— TypeGitAnnotated(repo::GitRepo, commit_id::GitHash)
GitAnnotated(repo::GitRepo, ref::GitReference)
GitAnnotated(repo::GitRepo, fh::FetchHead)
GitAnnotated(repo::GitRepo, committish::AbstractString)
تحتوي الالتزامات المعلقة في Git على معلومات حول كيفية البحث عنها ولماذا، بحيث تكون عمليات إعادة الترتيب أو الدمج لديها مزيد من المعلومات حول سياق الالتزام. تحتوي ملفات النزاع على معلومات حول الفروع المصدر/الهدف في الدمج التي تتعارض، على سبيل المثال. يمكن أن تشير الالتزامات المعلقة إلى قمة فرع بعيد، على سبيل المثال عندما يتم تمرير FetchHead
، أو إلى رأس فرع موصوف باستخدام GitReference
.
LibGit2.GitBlame
— TypeGitBlame(repo::GitRepo, path::AbstractString; options::BlameOptions=BlameOptions())
قم بإنشاء كائن GitBlame
للملف الموجود في path
، باستخدام معلومات التغيير المستخلصة من تاريخ repo
. يسجل كائن GitBlame
من قام بتغيير أي أجزاء من الملف ومتى وكيف. تتحكم options
في كيفية فصل محتويات الملف وأي التزامات يجب استكشافها - انظر BlameOptions
لمزيد من المعلومات.
LibGit2.GitBlob
— TypeGitBlob(repo::GitRepo, hash::AbstractGitHash)
GitBlob(repo::GitRepo, spec::AbstractString)
إرجاع كائن GitBlob
من repo
المحدد بواسطة hash
/spec
.
hash
هو تجزئة كاملة (GitHash
) أو تجزئة جزئية (GitShortHash
).spec
هو مواصفة نصية: انظر وثائق git للحصول على قائمة كاملة.
LibGit2.GitCommit
— TypeGitCommit(repo::GitRepo, hash::AbstractGitHash)
GitCommit(repo::GitRepo, spec::AbstractString)
إرجاع كائن GitCommit
من repo
المحدد بواسطة hash
/spec
.
hash
هو تجزئة كاملة (GitHash
) أو تجزئة جزئية (GitShortHash
).spec
هو مواصفة نصية: انظر وثائق git للحصول على قائمة كاملة.
LibGit2.GitConfig
— TypeGitConfig(path::AbstractString, level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP, force::Bool=false)
قم بإنشاء GitConfig
جديدة عن طريق تحميل معلومات التكوين من الملف الموجود في path
. راجع addfile
لمزيد من المعلومات حول خيارات level
و repo
و force
.
GitConfig(repo::GitRepo)
احصل على التكوين المخزن لمستودع الجيت repo
. إذا لم يكن لدى repo
ملف تكوين محدد، فسيتم استخدام تكوين الجيت الافتراضي.
GitConfig(level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_DEFAULT)
احصل على إعدادات جيت الافتراضية عن طريق تحميل ملفات الإعدادات العالمية والنظامية في إعدادات ذات أولوية. يمكن استخدام ذلك للوصول إلى خيارات الإعداد الافتراضية خارج مستودع جيت محدد.
LibGit2.GitHash
— TypeGitHash
معرف كائن git، يعتمد على تجزئة sha-1. إنه سلسلة بطول 20 بايت (40 رقم سداسي عشري) تُستخدم لتحديد GitObject
في مستودع.
LibGit2.GitObject
— TypeGitObject(repo::GitRepo, hash::AbstractGitHash)
GitObject(repo::GitRepo, spec::AbstractString)
إرجاع الكائن المحدد (GitCommit
, GitBlob
, GitTree
أو GitTag
) من repo
المحدد بواسطة hash
/spec
.
hash
هو تجزئة كاملة (GitHash
) أو جزئية (GitShortHash
).spec
هو مواصفة نصية: انظر وثائق git للحصول على قائمة كاملة.
LibGit2.GitRemote
— TypeGitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString) -> GitRemote
ابحث عن مستودع جيت بعيد باستخدام اسمه ورابطه. يستخدم مواصفة جلب الافتراضية.
أمثلة
repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemote(repo, "upstream", repo_url)
GitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString, fetch_spec::AbstractString) -> GitRemote
ابحث عن مستودع جيت بعيد باستخدام اسم المستودع وURL، بالإضافة إلى مواصفات كيفية جلب البيانات من البعيد (مثل الفرع البعيد الذي يجب جلبه).
أمثلة
repo = LibGit2.init(repo_path)
refspec = "+refs/heads/mybranch:refs/remotes/origin/mybranch"
remote = LibGit2.GitRemote(repo, "upstream", repo_url, refspec)
LibGit2.GitRemoteAnon
— FunctionGitRemoteAnon(repo::GitRepo, url::AbstractString) -> GitRemote
ابحث عن مستودع جيت بعيد باستخدام عنوان URL الخاص به فقط، وليس اسمه.
أمثلة
repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemoteAnon(repo, repo_url)
LibGit2.GitRepo
— TypeLibGit2.GitRepo(path::AbstractString)
افتح مستودع git في path
.
LibGit2.GitRepoExt
— FunctionLibGit2.GitRepoExt(path::AbstractString, flags::Cuint = Cuint(Consts.REPOSITORY_OPEN_DEFAULT))
افتح مستودع git في path
مع تحكمات موسعة (على سبيل المثال، إذا كان يجب أن يكون المستخدم الحالي عضوًا في مجموعة وصول خاصة لقراءة path
).
LibGit2.GitRevWalker
— TypeGitRevWalker(repo::GitRepo)
A GitRevWalker
يمشي عبر الإصدارات (أي الالتزامات) لمستودع git repo
. إنه مجموعة من الالتزامات في المستودع، ويدعم التكرار واستدعاءات لـ LibGit2.map
و LibGit2.count
(على سبيل المثال، يمكن استخدام LibGit2.count
لتحديد النسبة المئوية من الالتزامات في مستودع ما التي قام بها مؤلف معين).
cnt = LibGit2.with(LibGit2.GitRevWalker(repo)) do walker
LibGit2.count((oid,repo)->(oid == commit_oid1), walker, oid=commit_oid1, by=LibGit2.Consts.SORT_TIME)
end
هنا، LibGit2.count
يجد عدد الالتزامات على طول المسار مع GitHash
معين. نظرًا لأن GitHash
فريد لالتزام معين، سيكون cnt
هو 1
.
LibGit2.GitShortHash
— TypeGitShortHash(hash::GitHash, len::Integer)
معرف كائن جيت مختصر، يمكن استخدامه لتحديد كائن جيت عندما يكون فريدًا، ويتكون من أول len
رقم سداسي عشري من hash
(يتم تجاهل الأرقام المتبقية).
LibGit2.GitSignature
— TypeLibGit2.GitSignature
هذا هو غلاف جوليا حول مؤشر إلى كائن git_signature
.
LibGit2.GitStatus
— TypeLibGit2.GitStatus(repo::GitRepo; status_opts=StatusOptions())
جمع المعلومات حول حالة كل ملف في مستودع الجيت repo
(على سبيل المثال، هل تم تعديل الملف، أو تم وضعه في المرحلة، إلخ). يمكن استخدام status_opts
لتعيين خيارات مختلفة، على سبيل المثال، سواء للنظر في الملفات غير المتعقبة أو ما إذا كان يجب تضمين الوحدات الفرعية أم لا. انظر StatusOptions
لمزيد من المعلومات.
LibGit2.GitTag
— TypeGitTag(repo::GitRepo, hash::AbstractGitHash)
GitTag(repo::GitRepo, spec::AbstractString)
إرجاع كائن GitTag
من repo
المحدد بواسطة hash
/spec
.
hash
هو تجزئة كاملة (GitHash
) أو تجزئة جزئية (GitShortHash
).spec
هو مواصفة نصية: انظر وثائق git للحصول على قائمة كاملة.
LibGit2.GitTree
— TypeGitTree(repo::GitRepo, hash::AbstractGitHash)
GitTree(repo::GitRepo, spec::AbstractString)
إرجاع كائن GitTree
من repo
المحدد بواسطة hash
/spec
.
hash
هو تجزئة كاملة (GitHash
) أو تجزئة جزئية (GitShortHash
).spec
هو مواصفة نصية: انظر وثائق git للحصول على قائمة كاملة.
LibGit2.IndexEntry
— TypeLibGit2.IndexEntry
تمثيل في الذاكرة لمدخل ملف في الفهرس. يتطابق مع هيكل git_index_entry
.
LibGit2.IndexTime
— TypeLibGit2.IndexTime
يتطابق مع هيكل git_index_time
.
LibGit2.BlameOptions
— TypeLibGit2.BlameOptions
يتطابق مع هيكل git_blame_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.flags
: واحدة منConsts.BLAME_NORMAL
أوConsts.BLAME_FIRST_PARENT
(لم يتم تنفيذ الأعلام الأخرى بعد من قبل libgit2).min_match_characters
: الحد الأدنى لعدد الأحرف الأبجدية الرقمية التي يجب أن تتغير في الالتزام من أجل ربط التغيير بذلك الالتزام. القيمة الافتراضية هي 20. يبدأ سريانها فقط إذا تم استخدام أحد أعلامConsts.BLAME_*_COPIES
، والتي لم تنفذها libgit2 بعد.newest_commit
:GitHash
لأحدث التزام للنظر في التغييرات منه.oldest_commit
:GitHash
لأقدم التزام للنظر في التغييرات منه.min_line
: السطر الأول من الملف الذي يبدأ منه اللوم. القيمة الافتراضية هي1
.max_line
: السطر الأخير من الملف الذي يتم اللوم عليه. القيمة الافتراضية هي0
، مما يعني السطر الأخير من الملف.
LibGit2.MergeOptions
— TypeLibGit2.MergeOptions
يتطابق مع هيكل git_merge_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.flags
:enum
للعلامات التي تصف سلوك الدمج. تم تعريفه فيgit_merge_flag_t
. الـ enum المقابل في جوليا هوGIT_MERGE
وله القيم:MERGE_FIND_RENAMES
: اكتشاف ما إذا تم إعادة تسمية ملف بين السلف المشترك و"نحن" أو "هم" في الدمج. يسمح بالدمج حيث تم إعادة تسمية ملف.MERGE_FAIL_ON_CONFLICT
: الخروج فورًا إذا تم العثور على تعارض بدلاً من محاولة حله.MERGE_SKIP_REUC
: عدم كتابة امتداد REUC على الفهرس الناتج عن الدمج.MERGE_NO_RECURSIVE
: إذا كانت الالتزامات التي يتم دمجها تحتوي على قواعد دمج متعددة، استخدم الأولى، بدلاً من محاولة دمج القواعد بشكل متكرر.
rename_threshold
: مدى تشابه ملفين ليتم اعتبار أحدهما إعادة تسمية للآخر. هذه قيمة صحيحة تحدد نسبة التشابه. الافتراضي هو 50.target_limit
: الحد الأقصى لعدد الملفات التي يمكن مقارنتها للبحث عن إعادة التسمية. الافتراضي هو 200.metric
: دالة مخصصة اختيارية لاستخدامها لتحديد التشابه بين ملفين لاكتشاف إعادة التسمية.recursion_limit
: الحد الأعلى لعدد عمليات الدمج للسلف المشترك التي يتم تنفيذها لمحاولة بناء قاعدة دمج افتراضية جديدة للدمج. الافتراضي هو عدم وجود حد. هذا الحقل موجود فقط في إصدارات libgit2 الأحدث من 0.24.0.default_driver
: سائق الدمج الذي يجب استخدامه إذا كانت كلا الجانبين قد تغيرت. هذا الحقل موجود فقط في إصدارات libgit2 الأحدث من 0.25.0.file_favor
: كيفية التعامل مع محتويات الملفات المتعارضة لسائقtext
.MERGE_FILE_FAVOR_NORMAL
: إذا كان لدى كلا الجانبين من الدمج تغييرات في قسم، قم بتدوين التعارض في الفهرس الذي سيستخدمهgit checkout
لإنشاء ملف دمج، والذي يمكن للمستخدم بعد ذلك الإشارة إليه لحل التعارضات. هذا هو الافتراضي.MERGE_FILE_FAVOR_OURS
: إذا كان لدى كلا الجانبين من الدمج تغييرات في قسم، استخدم النسخة في جانب "نحن" من الدمج في الفهرس.MERGE_FILE_FAVOR_THEIRS
: إذا كان لدى كلا الجانبين من الدمج تغييرات في قسم، استخدم النسخة في جانب "هم" من الدمج في الفهرس.MERGE_FILE_FAVOR_UNION
: إذا كان لدى كلا الجانبين من الدمج تغييرات في قسم، قم بتضمين كل سطر فريد من كلا الجانبين في الملف الذي يتم وضعه في الفهرس.
file_flags
: إرشادات لدمج الملفات.
LibGit2.ProxyOptions
— TypeLibGit2.ProxyOptions
خيارات الاتصال من خلال وكيل.
يتطابق مع هيكل git_proxy_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.proxytype
:enum
لنوع الوكيل المستخدم. محدد فيgit_proxy_t
.GIT_PROXY
هوenum
المقابل في جوليا وله القيم:PROXY_NONE
: عدم محاولة الاتصال من خلال وكيل.PROXY_AUTO
: محاولة معرفة تكوين الوكيل من تكوين git.PROXY_SPECIFIED
: الاتصال باستخدام عنوان URL المعطى في حقلurl
لهذا الهيكل.
الافتراضي هو الكشف التلقائي عن نوع الوكيل.
url
: عنوان URL للوكيل.credential_cb
: مؤشر إلى دالة رد نداء سيتم استدعاؤها إذا كان البعيد يتطلب مصادقة للاتصال.certificate_cb
: مؤشر إلى دالة رد نداء سيتم استدعاؤها إذا فشلت عملية التحقق من الشهادة. هذا يسمح للمستخدم بتحديد ما إذا كان يجب الاستمرار في الاتصال أم لا. إذا كانت الدالة تعيد1
، سيتم السماح بالاتصال. إذا أعادت0
، فلن يُسمح بالاتصال. يمكن استخدام قيمة سالبة لإرجاع الأخطاء.payload
: الحمولة التي سيتم تقديمها إلى دالتي رد النداء.
أمثلة
julia> fo = LibGit2.FetchOptions(
proxy_opts = LibGit2.ProxyOptions(url = Cstring("https://my_proxy_url.com")))
julia> fetch(remote, "master", options=fo)
LibGit2.PushOptions
— TypeLibGit2.PushOptions
يتطابق مع هيكل git_push_options
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.parallelism
: إذا كان يجب إنشاء ملف حزمة، فإن هذه المتغير يحدد عدد خيوط العمل التي سيتم إنشاؤها بواسطة packbuilder. إذا كان0
، سيقوم packbuilder بتعيين عدد الخيوط للاستخدام تلقائيًا. القيمة الافتراضية هي1
.callbacks
: ردود الفعل (مثل المصادقة مع البعيد) لاستخدامها في الدفع.proxy_opts
: ذات صلة فقط إذا كانت نسخة LibGit2 أكبر من أو تساوي0.25.0
. تعيين الخيارات لاستخدام وكيل للتواصل مع البعيد. انظرProxyOptions
لمزيد من المعلومات.custom_headers
: ذات صلة فقط إذا كانت نسخة LibGit2 أكبر من أو تساوي0.24.0
. رؤوس إضافية مطلوبة لعملية الدفع.
LibGit2.RebaseOperation
— TypeLibGit2.RebaseOperation
يصف تعليمات/عملية واحدة يجب تنفيذها أثناء إعادة التأسيس. يتطابق مع هيكل git_rebase_operation
.
تمثل الحقول:
optype
: نوع عملية إعادة التأسيس التي يتم تنفيذها حاليًا. الخيارات هي:REBASE_OPERATION_PICK
: اختيار الالتزام المعني.REBASE_OPERATION_REWORD
: اختيار الالتزام المعني، ولكن إعادة كتابة رسالته باستخدام المطالبة.REBASE_OPERATION_EDIT
: اختيار الالتزام المعني، ولكن السماح للمستخدم بتحرير محتويات الالتزام ورسالتها.REBASE_OPERATION_SQUASH
: دمج الالتزام المعني في الالتزام السابق. ستتم دمج رسائل الالتزامين.REBASE_OPERATION_FIXUP
: دمج الالتزام المعني في الالتزام السابق. سيتم استخدام رسالة الالتزام السابقة فقط.REBASE_OPERATION_EXEC
: عدم اختيار الالتزام. تشغيل أمر والاستمرار إذا انتهى الأمر بنجاح.
id
:GitHash
للالتزام الذي يتم العمل عليه خلال هذه الخطوة من إعادة التأسيس.exec
: في حالة استخدامREBASE_OPERATION_EXEC
، الأمر الذي يجب تشغيله خلال هذه الخطوة (على سبيل المثال، تشغيل مجموعة الاختبارات بعد كل التزام).
LibGit2.RebaseOptions
— TypeLibGit2.RebaseOptions
يتطابق مع بنية git_rebase_options
.
تمثل الحقول:
version
: إصدار البنية المستخدمة، في حال تغير ذلك لاحقًا. في الوقت الحالي، دائمًا1
.quiet
: إبلاغ عملاء git الآخرين الذين يساعدون في/يعملون على إعادة التأسيس أن إعادة التأسيس يجب أن تتم "بهدوء". يستخدم للتوافق. القيمة الافتراضية هي1
.inmemory
: بدء إعادة تأسيس في الذاكرة. يمكن للمتصلين الذين يعملون على إعادة التأسيس المرور عبر خطواتها وتسجيل أي تغييرات، ولكن لا يمكنهم التراجع عن HEAD أو تحديث المستودع. لن يتم تعديلworkdir
. موجود فقط في إصدارات libgit2 الأحدث من أو تساوي 0.24.0.rewrite_notes_ref
: اسم المرجع للملاحظات لاستخدامه لإعادة كتابة ملاحظات الالتزام عند الانتهاء من إعادة التأسيس.merge_opts
: خيارات الدمج التي تتحكم في كيفية دمج الأشجار في كل خطوة من خطوات إعادة التأسيس. موجودة فقط في إصدارات libgit2 الأحدث من أو تساوي 0.24.0.checkout_opts
: خيارات السحب لكتابة الملفات عند تهيئة إعادة التأسيس، والمرور عبرها، وإلغائها. راجعCheckoutOptions
لمزيد من المعلومات.
LibGit2.RemoteCallbacks
— TypeLibGit2.RemoteCallbacks
إعدادات الاستدعاء. تتطابق مع بنية git_remote_callbacks
.
LibGit2.SignatureStruct
— TypeLibGit2.SignatureStruct
توقيع الإجراء (مثل الملتزمين، المعلّقين، إلخ). يتطابق مع هيكل git_signature
.
تمثل الحقول:
name
: الاسم الكامل للملتزم أو مؤلف الالتزام.email
: البريد الإلكتروني الذي يمكن الاتصال بالملتزم/المؤلف من خلاله.when
: هيكلTimeStruct
يشير إلى متى تم تأليف/التزام الالتزام في المستودع.
LibGit2.StatusEntry
— TypeLibGit2.StatusEntry
يوفر الفروقات بين الملف كما هو موجود في HEAD والفهرس، ويوفر الفروقات بين الفهرس ودليل العمل. يتطابق مع بنية git_status_entry
.
تمثل الحقول:
status
: تحتوي على علامات الحالة للملف، مما يشير إلى ما إذا كان حاليًا، أو تم تغييره بطريقة ما في الفهرس أو شجرة العمل.head_to_index
: مؤشر إلىDiffDelta
الذي ي encapsulates الفروقات بين الملف كما هو موجود في HEAD وفي الفهرس.index_to_workdir
: مؤشر إلىDiffDelta
الذي ي encapsulates الفروقات بين الملف كما هو موجود في الفهرس وفيworkdir
.
LibGit2.StatusOptions
— TypeLibGit2.StatusOptions
خيارات للتحكم في كيفية إصدار git_status_foreach_ext()
لاستدعاءات رد الفعل. يتطابق مع هيكل git_status_opt_t
.
تمثل الحقول:
version
: إصدار الهيكل المستخدم، في حال تغير هذا لاحقًا. في الوقت الحالي، دائمًا1
.show
: علامة تحدد الملفات التي يجب فحصها وترتيبها. القيمة الافتراضية هيConsts.STATUS_SHOW_INDEX_AND_WORKDIR
.flags
: علامات للتحكم في أي استدعاءات رد فعل مستخدمة في استدعاء الحالة.pathspec
: مصفوفة من المسارات لاستخدامها في مطابقة المسارات. سيتغير سلوك مطابقة المسارات اعتمادًا على قيمshow
وflags
.baseline
: الشجرة التي ستستخدم للمقارنة مع دليل العمل والفهرس؛ القيمة الافتراضية هي HEAD.
LibGit2.StrArrayStruct
— TypeLibGit2.StrArrayStruct
تمثيل LibGit2 لمصفوفة من السلاسل النصية. يتطابق مع هيكل git_strarray
.
عند جلب البيانات من LibGit2، سيكون الاستخدام النموذجي كما يلي:
sa_ref = Ref(StrArrayStruct())
@check ccall(..., (Ptr{StrArrayStruct},), sa_ref)
res = convert(Vector{String}, sa_ref[])
free(sa_ref)
على وجه الخصوص، لاحظ أنه يجب استدعاء LibGit2.free
بعد ذلك على كائن Ref
.
بالمقابل، عند تمرير مصفوفة من السلاسل النصية إلى LibGit2، يكون من الأسهل عمومًا الاعتماد على التحويل الضمني:
strs = String[...]
@check ccall(..., (Ptr{StrArrayStruct},), strs)
لاحظ أنه لا حاجة لاستدعاء free
حيث يتم تخصيص البيانات بواسطة جوليا.
LibGit2.TimeStruct
— TypeLibGit2.TimeStruct
الوقت في التوقيع. يتطابق مع بنية git_time
.
LibGit2.addfile
— Functionaddfile(cfg::GitConfig, path::AbstractString,
level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP,
repo::Union{GitRepo, Nothing} = nothing,
force::Bool=false)
أضف ملف تكوين جيت موجود يقع في path
إلى GitConfig
الحالي cfg
. إذا لم يكن الملف موجودًا، فسيتم إنشاؤه.
level
يحدد مستوى أولوية تكوين جيت ويتم تحديده بواسطة
repo
هو مستودع اختياري للسماح بتحليل التضمينات الشرطية.- إذا كان
force
هوfalse
وكان هناك تكوين لمستوى الأولوية المعطى موجودًا بالفعل،
فستحدث خطأ في addfile
. إذا كان force
هو true
، فسيتم استبدال التكوين الموجود بالتكوين الموجود في الملف في path
.
LibGit2.add!
— Functionadd!(repo::GitRepo, files::AbstractString...; flags::Cuint = Consts.INDEX_ADD_DEFAULT)
add!(idx::GitIndex, files::AbstractString...; flags::Cuint = Consts.INDEX_ADD_DEFAULT)
أضف جميع الملفات التي تم تحديد مساراتها بواسطة files
إلى الفهرس idx
(أو فهرس repo
). إذا كان الملف موجودًا بالفعل، فسيتم تحديث إدخال الفهرس. إذا لم يكن الملف موجودًا بالفعل، فسيتم إضافته حديثًا إلى الفهرس. قد تحتوي files
على أنماط glob التي سيتم توسيعها وسيتم إضافة أي ملفات مطابقة (ما لم يتم تعيين INDEX_ADD_DISABLE_PATHSPEC_MATCH
، انظر أدناه). إذا تم تجاهل ملف (في .gitignore
أو في التكوين)، فلن يتم إضافته، ما لم يتم تتبعه بالفعل في الفهرس، وفي هذه الحالة سيتم تحديثه. الوسيطة الرئيسية flags
هي مجموعة من علامات البت التي تتحكم في السلوك فيما يتعلق بالملفات المتجاهلة:
Consts.INDEX_ADD_DEFAULT
- الافتراضي، كما هو موصوف أعلاه.Consts.INDEX_ADD_FORCE
- تجاهل قواعد التجاهل الحالية وإجبار إضافة الملف إلى الفهرس حتى لو كان متجاهلاً بالفعل.Consts.INDEX_ADD_CHECK_PATHSPEC
- لا يمكن استخدامها في نفس الوقت معINDEX_ADD_FORCE
. تحقق من أن كل ملف فيfiles
الذي يوجد على القرص ليس في قائمة التجاهل. إذا كان أحد الملفات مُتجاهلاً، ستعيد الدالةEINVALIDSPEC
.Consts.INDEX_ADD_DISABLE_PATHSPEC_MATCH
- إيقاف مطابقة glob، وإضافة الملفات إلى الفهرس التي تتطابق تمامًا مع المسارات المحددة فيfiles
.
LibGit2.add_fetch!
— Functionadd_fetch!(repo::GitRepo, rmt::GitRemote, fetch_spec::String)
أضف fetch refspec لـ rmt
المحدد. ستحتوي هذه refspec على معلومات حول أي فرع (فروع) يجب جلبها.
أمثلة
julia> LibGit2.add_fetch!(repo, remote, "upstream");
julia> LibGit2.fetch_refspecs(remote)
String["+refs/heads/*:refs/remotes/upstream/*"]
LibGit2.add_push!
— Functionadd_push!(repo::GitRepo, rmt::GitRemote, push_spec::String)
أضف refspec للدفع لـ rmt
المحدد. ستحتوي هذه الـ refspec على معلومات حول أي فرع (فروع) يجب دفعها.
أمثلة
julia> LibGit2.add_push!(repo, remote, "refs/heads/master");
julia> remote = LibGit2.get(LibGit2.GitRemote, repo, branch);
julia> LibGit2.push_refspecs(remote)
String["refs/heads/master"]
!!! ملاحظة قد تحتاج إلى close
وإعادة فتح GitRemote
المعني بعد تحديث refspecs الدفع الخاصة به لكي يسري التغيير ولتعمل استدعاءات push
.
LibGit2.addblob!
— FunctionLibGit2.addblob!(repo::GitRepo, path::AbstractString)
اقرأ الملف في path
وأضفه إلى قاعدة بيانات الكائنات في repo
ككائن غير مضغوط. ارجع GitHash
للكائن الناتج.
أمثلة
hash_str = string(commit_oid)
blob_file = joinpath(repo_path, ".git", "objects", hash_str[1:2], hash_str[3:end])
id = LibGit2.addblob!(repo, blob_file)
LibGit2.author
— Functionauthor(c::GitCommit)
إرجاع Signature
لمؤلف الالتزام c
. المؤلف هو الشخص الذي أجرى تغييرات على الملف (الملفات) ذات الصلة. انظر أيضًا committer
.
LibGit2.authors
— Functionauthors(repo::GitRepo) -> Vector{Signature}
إرجاع جميع مؤلفي الالتزامات إلى مستودع repo
.
أمثلة
repo = LibGit2.GitRepo(repo_path)
repo_file = open(joinpath(repo_path, test_file), "a")
println(repo_file, commit_msg)
flush(repo_file)
LibGit2.add!(repo, test_file)
sig = LibGit2.Signature("TEST", "TEST@TEST.COM", round(time(), 0), 0)
commit_oid1 = LibGit2.commit(repo, "commit1"; author=sig, committer=sig)
println(repo_file, randstring(10))
flush(repo_file)
LibGit2.add!(repo, test_file)
commit_oid2 = LibGit2.commit(repo, "commit2"; author=sig, committer=sig)
# سيكون مصفوفة من [sig, sig]
auths = LibGit2.authors(repo)
LibGit2.branch
— Functionbranch(repo::GitRepo)
يعادل git branch
. أنشئ فرعًا جديدًا من HEAD الحالي.
LibGit2.branch!
— Functionbranch!(repo::GitRepo, branch_name::AbstractString, commit::AbstractString=""; kwargs...)
قم بإنشاء فرع جديد في مستودع repo
. commit
هو GitHash
، في شكل سلسلة، والذي سيكون بداية الفرع الجديد. إذا كانت commit
سلسلة فارغة، سيتم استخدام HEAD الحالي.
تكون وسائط الكلمات الرئيسية كما يلي:
track::AbstractString=""
: اسم الفرع البعيد الذي يجب أن يتعقب هذا الفرع الجديد، إن وجد. إذا كانت فارغة (وهي القيمة الافتراضية)، فلن يتم تتبع أي فرع بعيد.force::Bool=false
: إذا كانتtrue
، سيتم فرض إنشاء الفرع.set_head::Bool=true
: إذا كانتtrue
، بعد الانتهاء من إنشاء الفرع، سيتم تعيين رأس الفرع كـ HEAD لـrepo
.
يعادل git checkout [-b|-B] <branch_name> [<commit>] [--track <track>]
.
أمثلة
repo = LibGit2.GitRepo(repo_path)
LibGit2.branch!(repo, "new_branch", set_head=false)
LibGit2.checkout!
— Functioncheckout!(repo::GitRepo, commit::AbstractString=""; force::Bool=true)
يعادل git checkout [-f] --detach <commit>
. قم بتغيير حالة git إلى الالتزام commit
(وهو GitHash
في شكل سلسلة) في repo
. إذا كانت force
تساوي true
، فقم بفرض التغيير وتجاهل أي تغييرات حالية. لاحظ أن هذا يفصل HEAD الحالي.
أمثلة
repo = LibGit2.GitRepo(repo_path)
open(joinpath(LibGit2.path(repo), "file1"), "w") do f
write(f, "111
")
end
LibGit2.add!(repo, "file1")
commit_oid = LibGit2.commit(repo, "add file1")
open(joinpath(LibGit2.path(repo), "file1"), "w") do f
write(f, "112
")
end
# سيفشل بدون force=true
# حيث توجد تعديلات على الملف
LibGit2.checkout!(repo, string(commit_oid), force=true)
LibGit2.clone
— Functionclone(repo_url::AbstractString, repo_path::AbstractString, clone_opts::CloneOptions)
استنساخ المستودع البعيد عند repo_url
(الذي يمكن أن يكون عنوان URL بعيد أو مسار على نظام الملفات المحلي) إلى repo_path
(الذي يجب أن يكون مسارًا على نظام الملفات المحلي). يتم تعيين خيارات الاستنساخ، مثل ما إذا كان يجب إجراء استنساخ عاري أم لا، بواسطة CloneOptions
.
أمثلة
repo_url = "https://github.com/JuliaLang/Example.jl"
repo = LibGit2.clone(repo_url, "/home/me/projects/Example")
clone(repo_url::AbstractString, repo_path::AbstractString; kwargs...)
استنساخ مستودع بعيد يقع في repo_url
إلى موقع نظام الملفات المحلي repo_path
.
تكون وسائط الكلمات الرئيسية كما يلي:
branch::AbstractString=""
: أي فرع من المستودع البعيد لاستنساخه، إذا لم يكن الفرع الافتراضي للمستودع (عادةًmaster
).isbare::Bool=false
: إذا كانتtrue
، استنساخ البعيد كمستودع عاري، مما يجعلrepo_path
نفسه هو دليل git بدلاً منrepo_path/.git
. هذا يعني أنه لا يمكن التحقق من شجرة العمل. يلعب دور وسيط سطر أوامر git--bare
.remote_cb::Ptr{Cvoid}=C_NULL
: رد نداء سيتم استخدامه لإنشاء البعيد قبل استنساخه. إذا كانتC_NULL
(الافتراضي)، فلن يتم محاولة إنشاء البعيد - سيتم افتراض أنه موجود بالفعل.credentials::Creds=nothing
: يوفر بيانات الاعتماد و/أو الإعدادات عند المصادقة ضد مستودع خاص.callbacks::Callbacks=Callbacks()
: ردود نداء وبيانات مقدمة من المستخدم.
معادل لـ git clone [-b <branch>] [--bare] <repo_url> <repo_path>
.
أمثلة
repo_url = "https://github.com/JuliaLang/Example.jl"
repo1 = LibGit2.clone(repo_url, "test_path")
repo2 = LibGit2.clone(repo_url, "test_path", isbare=true)
julia_url = "https://github.com/JuliaLang/julia"
julia_repo = LibGit2.clone(julia_url, "julia_path", branch="release-0.6")
LibGit2.commit
— Functioncommit(repo::GitRepo, msg::AbstractString; kwargs...) -> GitHash
غلاف حول git_commit_create
. إنشاء التزام في المستودع repo
. msg
هو رسالة الالتزام. إرجاع OID من الالتزام الجديد.
تكون وسائط الكلمات الرئيسية كما يلي:
refname::AbstractString=Consts.HEAD_FILE
: إذا لم يكن NULL، اسم المرجع الذي سيتم تحديثه للإشارة إلى الالتزام الجديد. على سبيل المثال،"HEAD"
سيقوم بتحديث HEAD للفرع الحالي. إذا لم يكن المرجع موجودًا بعد، فسيتم إنشاؤه.author::Signature = Signature(repo)
هوSignature
يحتوي على معلومات حول الشخص الذي قام بتأليف الالتزام.committer::Signature = Signature(repo)
هوSignature
يحتوي على معلومات حول الشخص الذي قام بالتزام الالتزام في المستودع. ليس بالضرورة نفس الشخص كـauthor
، على سبيل المثال إذا قامauthor
بإرسال تصحيح إلىcommitter
الذي قام بالتزامه.tree_id::GitHash = GitHash()
هو شجرة git لاستخدامها لإنشاء الالتزام، تظهر أسلافه وعلاقته بأي تاريخ آخر. يجب أن تنتميtree
إلىrepo
.parent_ids::Vector{GitHash}=GitHash[]
هي قائمة من الالتزامات بواسطةGitHash
لاستخدامها كالتزامات والد للالتزام الجديد، ويمكن أن تكون فارغة. قد يحتوي الالتزام على عدة آباء إذا كان التزام دمج، على سبيل المثال.
LibGit2.commit(rb::GitRebase, sig::GitSignature)
قم بارتكاب التصحيح الحالي إلى إعادة التأسيس rb
، باستخدام sig
كالمُرتكب. يكون صامتًا إذا تم تطبيق الالتزام بالفعل.
LibGit2.committer
— Functioncommitter(c::GitCommit)
إرجاع Signature
الملتزم بالتزام c
. الملتزم هو الشخص الذي قام بالتغييرات التي كتبها في الأصل author
، ولكن قد لا يكون هو نفسه author
، على سبيل المثال، إذا قام author
بإرسال تصحيح إلى committer
الذي قام بالتزامه.
LibGit2.count
— FunctionLibGit2.count(f::Function, walker::GitRevWalker; oid::GitHash=GitHash(), by::Cint=Consts.SORT_NONE, rev::Bool=false)
باستخدام GitRevWalker
walker
لـ "المشي" عبر كل التزامات في تاريخ المستودع، ابحث عن عدد الالتزامات التي تعيد true
عند تطبيق f
عليها. المعاملات الرئيسية هي: * oid
: GitHash
للالتزام الذي تبدأ منه المشي. الافتراضي هو استخدام push_head!
وبالتالي الالتزام HEAD وجميع أسلافه. * by
: طريقة الفرز. الافتراضي هو عدم الفرز. الخيارات الأخرى هي الفرز حسب الهيكلية (LibGit2.Consts.SORT_TOPOLOGICAL
)، للفرز للأمام في الوقت (LibGit2.Consts.SORT_TIME
، الأقدم أولاً) أو للفرز للخلف في الوقت (LibGit2.Consts.SORT_REVERSE
، الأحدث أولاً). * rev
: ما إذا كان يجب عكس ترتيب الفرز (على سبيل المثال، إذا تم استخدام الفرز الهيكلي).
أمثلة
cnt = LibGit2.with(LibGit2.GitRevWalker(repo)) do walker
LibGit2.count((oid, repo)->(oid == commit_oid1), walker, oid=commit_oid1, by=LibGit2.Consts.SORT_TIME)
end
LibGit2.count
يجد عدد الالتزامات على طول المشي مع GitHash
معين commit_oid1
، بدءًا من ذلك الالتزام والتحرك للأمام في الوقت منه. نظرًا لأن GitHash
فريد لالتزام، سيكون cnt
هو 1
.
LibGit2.counthunks
— Functioncounthunks(blame::GitBlame)
إرجاع عدد "الحزم" المميزة مع ملف. قد تحتوي الحزمة على عدة أسطر. الحزمة عادةً ما تكون قطعة من ملف تم إضافتها/تغييرها/إزالتها معًا، على سبيل المثال، دالة تمت إضافتها إلى ملف المصدر أو حلقة داخلية تم تحسينها من تلك الدالة لاحقًا.
LibGit2.create_branch
— FunctionLibGit2.create_branch(repo::GitRepo, bname::AbstractString, commit_obj::GitCommit; force::Bool=false)
إنشاء فرع جديد في المستودع repo
بالاسم bname
، الذي يشير إلى الالتزام commit_obj
(الذي يجب أن يكون جزءًا من repo
). إذا كانت force
تساوي true
، سيتم الكتابة فوق فرع موجود يحمل الاسم bname
إذا كان موجودًا. إذا كانت force
تساوي false
وكان هناك فرع موجود بالفعل يحمل الاسم bname
، ستقوم هذه الدالة بإلقاء خطأ.
LibGit2.credentials_callback
— Functioncredential_callback(...) -> Cint
دالة رد الاتصال الخاصة ببيانات الاعتماد في LibGit2 والتي توفر وظائف مختلفة لاكتساب بيانات الاعتماد بالنسبة لبروتوكول الاتصال. يجب أن يحتوي payload_ptr
على كائن LibGit2.CredentialPayload
الذي سيتتبع الحالة والإعدادات.
تحتوي allowed_types
على قناع بت من قيم LibGit2.Consts.GIT_CREDTYPE
التي تحدد طرق المصادقة التي يجب تجربتها.
تتم مصادقة بيانات الاعتماد بالترتيب التالي (إذا كانت مدعومة):
- وكيل SSH
- زوج مفاتيح SSH الخاصة/العامة
- اسم المستخدم/كلمة المرور نص عادي
إذا تم تقديم موجه بيانات الاعتماد للمستخدم، يمكنهم إلغاء الموجه عن طريق كتابة ^D
(الضغط على مفتاح التحكم مع مفتاح d
).
ملاحظة: بسبب خصوصيات إجراء مصادقة libgit2
، عندما تفشل المصادقة، يتم استدعاء هذه الدالة مرة أخرى دون أي إشارة إلى ما إذا كانت المصادقة ناجحة أم لا. لتجنب حلقة لانهائية من استخدام بيانات الاعتماد الخاطئة بشكل متكرر، سنقوم بتتبع الحالة باستخدام الحمولة.
للحصول على تفاصيل إضافية، راجع دليل LibGit2 حول المصادقة ضد خادم.
LibGit2.credentials_cb
— Functionمؤشر دالة C لـ credentials_callback
LibGit2.default_signature
— Functionإرجاع كائن التوقيع. حرره بعد الاستخدام.
LibGit2.delete_branch
— FunctionLibGit2.delete_branch(branch::GitReference)
احذف الفرع المشار إليه بواسطة branch
.
LibGit2.diff_files
— Functiondiff_files(repo::GitRepo, branch1::AbstractString, branch2::AbstractString; kwarg...) -> Vector{AbstractString}
أظهر الملفات التي تغيرت في مستودع git repo
بين الفرعين branch1
و branch2
.
وسيط الكلمة الرئيسية هو:
filter::Set{Consts.DELTA_STATUS}=Set([Consts.DELTA_ADDED, Consts.DELTA_MODIFIED, Consts.DELTA_DELETED]))
، ويحدد خيارات الفرق. القيمة الافتراضية هي عرض الملفات المضافة أو المعدلة أو المحذوفة.
أعد فقط أسماء الملفات التي تغيرت، وليس محتوياتها.
أمثلة
LibGit2.branch!(repo, "branch/a")
LibGit2.branch!(repo, "branch/b")
# أضف ملفًا إلى المستودع
open(joinpath(LibGit2.path(repo),"file"),"w") do f
write(f, "hello repo
")
end
LibGit2.add!(repo, "file")
LibGit2.commit(repo, "add file")
# يعيد ["file"]
filt = Set([LibGit2.Consts.DELTA_ADDED])
files = LibGit2.diff_files(repo, "branch/a", "branch/b", filter=filt)
# يعيد [] لأن الملفات الموجودة لم يتم تعديلها
filt = Set([LibGit2.Consts.DELTA_MODIFIED])
files = LibGit2.diff_files(repo, "branch/a", "branch/b", filter=filt)
معادل لـ git diff --name-only --diff-filter=<filter> <branch1> <branch2>
.
LibGit2.entryid
— Functionentryid(te::GitTreeEntry)
إرجاع GitHash
للكائن الذي يشير إليه te
.
LibGit2.entrytype
— Functionentrytype(te::GitTreeEntry)
إرجاع نوع الكائن الذي يشير إليه te
. ستكون النتيجة واحدة من الأنواع التي ترجعها objtype
، مثل GitTree
أو GitBlob
.
LibGit2.fetch
— Functionfetch(rmt::GitRemote, refspecs; options::FetchOptions=FetchOptions(), msg="")
استرجع من مستودع git البعيد المحدد rmt
، باستخدام refspecs
لتحديد أي فرع (فروع) بعيدة لاسترجاعها. المعاملات الرئيسية هي:
options
: تحدد الخيارات للاسترجاع، مثل ما إذا كان يجب التقليم بعد ذلك. انظرFetchOptions
لمزيد من المعلومات.msg
: رسالة لإدراجها في سجلات الإنعكاس.
fetch(repo::GitRepo; kwargs...)
يجلب التحديثات من مصدر مستودع repo
.
تكون وسائط الكلمات الرئيسية كما يلي:
remote::AbstractString="origin"
: أي مصدر، محدد بالاسم، منrepo
لجلب البيانات منه. إذا كان هذا فارغًا، سيتم استخدام عنوان URL لإنشاء مصدر مجهول.remoteurl::AbstractString=""
: عنوان URL لـremote
. إذا لم يتم تحديده، سيتم افتراضه بناءً على الاسم المعطى لـremote
.refspecs=AbstractString[]
: يحدد خصائص الجلب.credentials=nothing
: يوفر بيانات الاعتماد و/أو الإعدادات عند المصادقة ضدremote
خاص.callbacks=Callbacks()
: ردود الفعل والحمولات المقدمة من المستخدم.
يعادل git fetch [<remoteurl>|<repo>] [<refspecs>]
.
LibGit2.fetchheads
— Functionfetchheads(repo::GitRepo) -> Vector{FetchHead}
إرجاع قائمة بجميع رؤوس الجلب لـ repo
، كل منها ممثلة كـ FetchHead
، بما في ذلك أسمائها، وعناوين URL، وحالات الدمج.
أمثلة
julia> fetch_heads = LibGit2.fetchheads(repo);
julia> fetch_heads[1].name
"refs/heads/master"
julia> fetch_heads[1].ismerge
true
julia> fetch_heads[2].name
"refs/heads/test_branch"
julia> fetch_heads[2].ismerge
false
LibGit2.fetch_refspecs
— Functionfetch_refspecs(rmt::GitRemote) -> Vector{String}
احصل على fetch refspecs لـ rmt
المحدد. تحتوي هذه refspecs على معلومات حول أي فرع (فروع) يجب جلبها.
أمثلة
julia> remote = LibGit2.get(LibGit2.GitRemote, repo, "upstream");
julia> LibGit2.add_fetch!(repo, remote, "upstream");
julia> LibGit2.fetch_refspecs(remote)
String["+refs/heads/*:refs/remotes/upstream/*"]
LibGit2.fetchhead_foreach_cb
— Functionمؤشر دالة C لـ fetchhead_foreach_callback
LibGit2.merge_base
— Functionmerge_base(repo::GitRepo, one::AbstractString, two::AbstractString) -> GitHash
ابحث عن قاعدة الدمج (سلف مشترك) بين الالتزامات one
و two
. قد تكون one
و two
كلاهما في شكل سلسلة. أعد GitHash
لقاعدة الدمج.
LibGit2.merge!
— Methodmerge!(repo::GitRepo; kwargs...) -> Bool
قم بإجراء دمج git على المستودع repo
، حيث يتم دمج الالتزامات ذات التاريخ المتباين في الفرع الحالي. ارجع true
إذا نجح الدمج، وfalse
إذا لم ينجح.
تكون وسائط الكلمات الرئيسية هي:
committish::AbstractString=""
: دمج الالتزام (الالتزامات) المسماة فيcommittish
.branch::AbstractString=""
: دمج الفرعbranch
وجميع التزاماتها منذ أن تباينت عن الفرع الحالي.fastforward::Bool=false
: إذا كانتfastforward
تساويtrue
، قم بالدمج فقط إذا كان الدمج هو دمج سريع (رأس الفرع الحالي هو سلف للالتزامات التي سيتم دمجها)، وإلا ارفض الدمج وارجعfalse
. هذا يعادل خيار CLI git--ff-only
.merge_opts::MergeOptions=MergeOptions()
: تحددmerge_opts
خيارات الدمج، مثل استراتيجية الدمج في حالة حدوث تعارضات.checkout_opts::CheckoutOptions=CheckoutOptions()
: تحددcheckout_opts
خيارات لخطوة التحقق.
يعادل git merge [--ff-only] [<committish> | <branch>]
.
!!! ملاحظة إذا قمت بتحديد branch
، يجب القيام بذلك بصيغة المرجع، حيث سيتم تحويل السلسلة إلى GitReference
. على سبيل المثال، إذا كنت ترغب في دمج الفرع branch_a
، يمكنك استدعاء merge!(repo, branch="refs/heads/branch_a")
.
LibGit2.merge!
— Methodmerge!(repo::GitRepo, anns::Vector{GitAnnotated}; kwargs...) -> Bool
دمج التغييرات من الالتزامات المعلّمة (المُلتقطة ككائنات GitAnnotated
) anns
في HEAD من المستودع repo
. المعاملات الرئيسية هي:
merge_opts::MergeOptions = MergeOptions()
: خيارات حول كيفية إجراء الدمج، بما في ذلك ما إذا كان يُسمح بالتقدم السريع. انظرMergeOptions
لمزيد من المعلومات.checkout_opts::CheckoutOptions = CheckoutOptions()
: خيارات حول كيفية إجراء عملية السحب. انظرCheckoutOptions
لمزيد من المعلومات.
يمكن أن تشير anns
إلى رؤوس فروع محلية أو بعيدة. ارجع true
إذا كان الدمج ناجحًا، وإلا ارجع false
(على سبيل المثال، إذا لم يكن الدمج ممكنًا لأن الفروع ليس لها سلف مشترك).
أمثلة
upst_ann = LibGit2.GitAnnotated(repo, "branch/a")
# دمج الفرع
LibGit2.merge!(repo, [upst_ann])
LibGit2.merge!
— Methodmerge!(repo::GitRepo, anns::Vector{GitAnnotated}, fastforward::Bool; kwargs...) -> Bool
ادمج التغييرات من الالتزامات المعلّمة (المسجلة ككائنات GitAnnotated
) anns
في HEAD من المستودع repo
. إذا كان fastforward
هو true
، فإن الدمج السريع فقط مسموح به. في هذه الحالة، إذا حدثت تعارضات، سيفشل الدمج. خلاف ذلك، إذا كان fastforward
هو false
، قد ينتج عن الدمج ملف تعارض يحتاج المستخدم إلى حله.
تكون وسائط الكلمات الرئيسية هي:
merge_opts::MergeOptions = MergeOptions()
: خيارات لكيفية إجراء الدمج، بما في ذلك ما إذا كان الدمج السريع مسموحًا به. راجعMergeOptions
لمزيد من المعلومات.checkout_opts::CheckoutOptions = CheckoutOptions()
: خيارات لكيفية إجراء عملية السحب. راجعCheckoutOptions
لمزيد من المعلومات.
يمكن أن تشير anns
إلى رؤوس فروع محلية أو بعيدة. ارجع true
إذا كان الدمج ناجحًا، وإلا ارجع false
(على سبيل المثال، إذا لم يكن الدمج ممكنًا لأن الفروع ليس لها سلف مشترك).
أمثلة
upst_ann_1 = LibGit2.GitAnnotated(repo, "branch/a")
# دمج الفرع، دمج سريع
LibGit2.merge!(repo, [upst_ann_1], true)
# تعارضات في الدمج!
upst_ann_2 = LibGit2.GitAnnotated(repo, "branch/b")
# دمج الفرع، حاول الدمج السريع
LibGit2.merge!(repo, [upst_ann_2], true) # ستعيد false
LibGit2.merge!(repo, [upst_ann_2], false) # ستعيد true
LibGit2.ffmerge!
— Functionffmerge!(repo::GitRepo, ann::GitAnnotated)
دمج سريع التقدم التغييرات في HEAD الحالي. هذا ممكن فقط إذا كانت الالتزام المشار إليه بواسطة ann
هو من نسل HEAD الحالي (على سبيل المثال، إذا كنت تسحب تغييرات من فرع بعيد والذي هو ببساطة متقدم عن طرف الفرع المحلي).
LibGit2.fullname
— FunctionLibGit2.fullname(ref::GitReference)
إرجاع اسم المرجع المشار إليه بواسطة المرجع الرمزي ref
. إذا لم يكن ref
مرجعًا رمزيًا، إرجع سلسلة فارغة.
LibGit2.features
— Functionfeatures()
إرجاع قائمة بميزات git التي يدعمها الإصدار الحالي من libgit2، مثل الخيوط أو استخدام HTTPS أو SSH.
LibGit2.filename
— Functionfilename(te::GitTreeEntry)
إرجاع اسم الملف للكائن الموجود على القرص الذي يشير إليه te
.
LibGit2.filemode
— Functionfilemode(te::GitTreeEntry) -> Cint
إرجاع وضع ملف UNIX للكائن الموجود على القرص الذي يشير إليه te
كعدد صحيح.
LibGit2.gitdir
— FunctionLibGit2.gitdir(repo::GitRepo)
إرجاع موقع ملفات "git" الخاصة بـ repo
:
- بالنسبة للمستودعات العادية، هذا هو موقع مجلد
.git
. - بالنسبة للمستودعات العارية، هذا هو موقع المستودع نفسه.
LibGit2.git_url
— FunctionLibGit2.git_url(; kwargs...) -> String
قم بإنشاء سلسلة بناءً على مكونات URL المقدمة. عندما لا يتم توفير الكلمة الرئيسية scheme
، سيستخدم URL الناتج بدلاً من ذلك الصيغة الشبيهة بـ scp.
الكلمات الرئيسية
scheme::AbstractString=""
: بروتوكول URL الذي يحدد البروتوكول المراد استخدامه. لاستخدام HTTP، استخدم "http"، ولـ SSH استخدم "ssh"، إلخ. عندما لا يتم توفيرscheme
، سيكون تنسيق الإخراج "ssh" ولكن باستخدام الصيغة الشبيهة بـ scp.username::AbstractString=""
: اسم المستخدم الذي سيتم استخدامه في الإخراج إذا تم توفيره.password::AbstractString=""
: كلمة المرور التي سيتم استخدامها في الإخراج إذا تم توفيرها.host::AbstractString=""
: اسم المضيف الذي سيتم استخدامه في الإخراج. يجب تحديد اسم المضيف.port::Union{AbstractString,Integer}=""
: رقم المنفذ الذي سيتم استخدامه في الإخراج إذا تم توفيره. لا يمكن تحديده عند استخدام الصيغة الشبيهة بـ scp.path::AbstractString=""
: المسار الذي سيتم استخدامه في الإخراج إذا تم توفيره.
!!! تحذير تجنب استخدام كلمات المرور في عناوين URL. على عكس كائنات الاعتماد، لا تستطيع جوليا تأمين الصفر أو تدمير البيانات الحساسة بعد الاستخدام، وقد تبقى كلمة المرور في الذاكرة؛ مما قد يؤدي إلى تعرضها من خلال ذاكرة غير مهيأة.
أمثلة
julia> LibGit2.git_url(username="git", host="github.com", path="JuliaLang/julia.git")
"git@github.com:JuliaLang/julia.git"
julia> LibGit2.git_url(scheme="https", host="github.com", path="/JuliaLang/julia.git")
"https://github.com/JuliaLang/julia.git"
julia> LibGit2.git_url(scheme="ssh", username="git", host="github.com", port=2222, path="JuliaLang/julia.git")
"ssh://git@github.com:2222/JuliaLang/julia.git"
LibGit2.@githash_str
— Macro@githash_str -> AbstractGitHash
قم بإنشاء كائن تجزئة git من السلسلة المعطاة، مع إرجاع GitShortHash
إذا كانت السلسلة أقصر من 40 رقمًا سداسيًا، وإلا إرجاع GitHash
.
أمثلة
julia> LibGit2.githash"d114feb74ce633"
GitShortHash("d114feb74ce633")
julia> LibGit2.githash"d114feb74ce63307afe878a5228ad014e0289a85"
GitHash("d114feb74ce63307afe878a5228ad014e0289a85")
LibGit2.head
— FunctionLibGit2.head(repo::GitRepo) -> GitReference
إرجاع GitReference
إلى HEAD الحالي لـ repo
.
head(pkg::AbstractString) -> String
إرجاع HEAD الحالي GitHash
لمستودع pkg
كسلسلة.
LibGit2.head!
— FunctionLibGit2.head!(repo::GitRepo, ref::GitReference) -> GitReference
قم بتعيين HEAD لـ repo
إلى الكائن المشار إليه بواسطة ref
.
LibGit2.head_oid
— FunctionLibGit2.head_oid(repo::GitRepo) -> GitHash
ابحث عن معرف الكائن للرأس الحالي لمستودع git repo
.
LibGit2.headname
— FunctionLibGit2.headname(repo::GitRepo)
ابحث عن اسم HEAD الحالي لمستودع git repo
. إذا كان repo
مفصولًا حاليًا، ارجع اسم HEAD الذي تم فصله عنه.
LibGit2.init
— FunctionLibGit2.init(path::AbstractString, bare::Bool=false) -> GitRepo
افتح مستودع جيت جديد في path
. إذا كان bare
هو false
، سيتم إنشاء شجرة العمل في path/.git
. إذا كان bare
هو true
، فلن يتم إنشاء دليل عمل.
LibGit2.is_ancestor_of
— Functionis_ancestor_of(a::AbstractString, b::AbstractString, repo::GitRepo) -> Bool
ارجع true
إذا كان a
، وهو GitHash
في شكل سلسلة، سلفًا لـ b
، وهو GitHash
في شكل سلسلة.
أمثلة
julia> repo = GitRepo(repo_path);
julia> LibGit2.add!(repo, test_file1);
julia> commit_oid1 = LibGit2.commit(repo, "commit1");
julia> LibGit2.add!(repo, test_file2);
julia> commit_oid2 = LibGit2.commit(repo, "commit2");
julia> LibGit2.is_ancestor_of(string(commit_oid1), string(commit_oid2), repo)
true
LibGit2.isbinary
— Functionisbinary(blob::GitBlob) -> Bool
استخدم خوارزمية لتخمين ما إذا كان الملف ثنائيًا: البحث عن بايتات NULL والبحث عن نسبة معقولة من الأحرف القابلة للطباعة إلى الأحرف غير القابلة للطباعة بين أول 8000 بايت.
LibGit2.iscommit
— Functioniscommit(id::AbstractString, repo::GitRepo) -> Bool
تحقق مما إذا كان الالتزام id
(الذي هو GitHash
في شكل سلسلة) موجودًا في المستودع.
أمثلة
julia> repo = GitRepo(repo_path);
julia> LibGit2.add!(repo, test_file);
julia> commit_oid = LibGit2.commit(repo, "add test_file");
julia> LibGit2.iscommit(string(commit_oid), repo)
true
LibGit2.isdiff
— FunctionLibGit2.isdiff(repo::GitRepo, treeish::AbstractString, pathspecs::AbstractString=""; cached::Bool=false)
يتحقق مما إذا كانت هناك أي اختلافات بين الشجرة المحددة بواسطة treeish
والملفات المتعقبة في شجرة العمل (إذا كان cached=false
) أو الفهرس (إذا كان cached=true
). pathspecs
هي المواصفات للخيارات الخاصة بالفرق.
أمثلة
repo = LibGit2.GitRepo(repo_path)
LibGit2.isdiff(repo, "HEAD") # يجب أن تكون false
open(joinpath(repo_path, new_file), "a") do f
println(f, "ها هو ملفي الجديد الرائع")
end
LibGit2.isdiff(repo, "HEAD") # الآن true
معادل لـ git diff-index <treeish> [-- <pathspecs>]
. ```
LibGit2.isdirty
— FunctionLibGit2.isdirty(repo::GitRepo, pathspecs::AbstractString=""; cached::Bool=false) -> Bool
تحقق مما إذا كانت هناك أي تغييرات في الملفات المتعقبة في شجرة العمل (إذا كان cached=false
) أو الفهرس (إذا كان cached=true
). pathspecs
هي المواصفات للخيارات الخاصة بالفرق.
أمثلة
repo = LibGit2.GitRepo(repo_path)
LibGit2.isdirty(repo) # يجب أن تكون false
open(joinpath(repo_path, new_file), "a") do f
println(f, "ها هو ملفي الجديد الرائع")
end
LibGit2.isdirty(repo) # الآن true
LibGit2.isdirty(repo, new_file) # الآن true
معادل لـ git diff-index HEAD [-- <pathspecs>]
.
LibGit2.isorphan
— FunctionLibGit2.isorphan(repo::GitRepo)
تحقق مما إذا كانت الفرع الحالي هو فرع "يتيم"، أي أنه ليس له أي التزامات. سيكون الالتزام الأول في هذا الفرع بلا آباء.
LibGit2.isset
— Functionisset(val::Integer, flag::Integer)
اختبر ما إذا كانت بتات val
التي يتم فهرستها بواسطة flag
مضبوطة (1
) أو غير مضبوطة (0
).
LibGit2.iszero
— Functioniszero(id::GitHash) -> Bool
حدد ما إذا كانت جميع الأرقام السداسية عشرية للـ GitHash
المعطى تساوي صفر.
LibGit2.lookup_branch
— Functionlookup_branch(repo::GitRepo, branch_name::AbstractString, remote::Bool=false) -> Union{GitReference, Nothing}
حدد ما إذا كان الفرع المحدد بواسطة branch_name
موجودًا في المستودع repo
. إذا كان remote
هو true
، يُفترض أن repo
هو مستودع جيت بعيد. خلاف ذلك، فهو جزء من نظام الملفات المحلي.
إرجاع إما GitReference
للفرع المطلوب إذا كان موجودًا، أو nothing
إذا لم يكن كذلك.
LibGit2.map
— FunctionLibGit2.map(f::Function, walker::GitRevWalker; oid::GitHash=GitHash(), range::AbstractString="", by::Cint=Consts.SORT_NONE, rev::Bool=false)
باستخدام GitRevWalker
walker
لـ "المشي" عبر كل التزامات في تاريخ المستودع، قم بتطبيق f
على كل التزام في المسار. المعاملات الرئيسية هي: * oid
: GitHash
للتزام البدء من المشي. الافتراضي هو استخدام push_head!
وبالتالي التزام HEAD وجميع أسلافه. * range
: نطاق من GitHash
s بتنسيق oid1..oid2
. سيتم تطبيق f
على جميع الالتزامات بين الاثنين. * by
: طريقة الفرز. الافتراضي هو عدم الفرز. الخيارات الأخرى هي الفرز حسب الهيكل (LibGit2.Consts.SORT_TOPOLOGICAL
)، للفرز للأمام في الوقت (LibGit2.Consts.SORT_TIME
، الأقدم أولاً) أو للفرز للخلف في الوقت (LibGit2.Consts.SORT_REVERSE
، الأحدث أولاً). * rev
: ما إذا كان يجب عكس ترتيب الفرز (على سبيل المثال، إذا تم استخدام الفرز الهيكلي).
أمثلة
oids = LibGit2.with(LibGit2.GitRevWalker(repo)) do walker
LibGit2.map((oid, repo)->string(oid), walker, by=LibGit2.Consts.SORT_TIME)
end
هنا، يقوم LibGit2.map
بزيارة كل التزام باستخدام GitRevWalker
ويجد GitHash
الخاص به.
LibGit2.mirror_callback
— Functionدالة رد الاتصال المرآة
تقوم الدالة بتعيين +refs/*:refs/*
refspecs وعلم mirror
للمرجع البعيد.
LibGit2.mirror_cb
— Functionمؤشر دالة C لـ mirror_callback
LibGit2.message
— Functionmessage(c::GitCommit, raw::Bool=false)
إرجاع رسالة الالتزام التي تصف التغييرات التي تم إجراؤها في الالتزام c
. إذا كان raw
هو false
، إرجع رسالة "منظفة" قليلاً (والتي تمت إزالة أي أسطر جديدة في البداية منها). إذا كان raw
هو true
، فإن الرسالة لا يتم إزالة أي من هذه الأسطر الجديدة.
LibGit2.merge_analysis
— Functionmerge_analysis(repo::GitRepo, anns::Vector{GitAnnotated}) -> analysis, preference
قم بتشغيل التحليل على الفروع المشار إليها بواسطة نصوص الفروع المعلّقة anns
وحدد تحت أي ظروف يمكن دمجها. على سبيل المثال، إذا كانت anns[1]
ببساطة سلفًا لـ ann[2]
، فإن merge_analysis
سيبلغ أن دمجًا سريعًا ممكن.
أعد مخرجان، analysis
و preference
. يحتوي analysis
على عدة قيم ممكنة:
MERGE_ANALYSIS_NONE
: لا يمكن دمج عناصرanns
.MERGE_ANALYSIS_NORMAL
: دمج عادي، عندما يكون HEAD والالتزامات التي يرغب المستخدم في دمجها قد تباعدت جميعًا عن سلف مشترك. في هذه الحالة، يجب حل التغييرات وقد تحدث تعارضات.MERGE_ANALYSIS_UP_TO_DATE
: يمكن الوصول إلى جميع الالتزامات المدخلة التي يرغب المستخدم في دمجها من HEAD، لذا لا حاجة لإجراء دمج.MERGE_ANALYSIS_FASTFORWARD
: الالتزام المدخل هو سليل لـ HEAD وبالتالي لا حاجة لإجراء دمج - بدلاً من ذلك، يمكن للمستخدم ببساطة التحقق من الالتزام (الالتزامات) المدخلة.MERGE_ANALYSIS_UNBORN
: يشير HEAD من المستودع إلى التزام غير موجود. لا يمكن الدمج، ولكن قد يكون من الممكن التحقق من الالتزامات المدخلة.
كما أن preference
يحتوي على عدة قيم ممكنة:
MERGE_PREFERENCE_NONE
: ليس لدى المستخدم تفضيل.MERGE_PREFERENCE_NO_FASTFORWARD
: لا تسمح بأي عمليات دمج سريعة.MERGE_PREFERENCE_FASTFORWARD_ONLY
: تسمح فقط بعمليات الدمج السريعة ولا نوع آخر (قد يؤدي إلى تعارضات). يمكن التحكم فيpreference
من خلال إعدادات git الخاصة بالمستودع أو العالمية.
LibGit2.name
— FunctionLibGit2.name(ref::GitReference)
إرجاع الاسم الكامل لـ ref
.
name(rmt::GitRemote)
احصل على اسم مستودع بعيد، على سبيل المثال "origin"
. إذا كان المستودع البعيد مجهول الهوية (انظر GitRemoteAnon
) سيكون الاسم سلسلة فارغة ""
.
أمثلة
julia> repo_url = "https://github.com/JuliaLang/Example.jl";
julia> repo = LibGit2.clone(cache_repo, "test_directory");
julia> remote = LibGit2.GitRemote(repo, "origin", repo_url);
julia> name(remote)
"origin"
LibGit2.name(tag::GitTag)
اسم tag
(على سبيل المثال، "v0.5"
).
LibGit2.need_update
— Functionneed_update(repo::GitRepo)
معادل لـ git update-index
. يُرجع true
إذا كان repo
يحتاج إلى تحديث.
LibGit2.objtype
— Functionobjtype(obj_type::Consts.OBJECT)
إرجاع النوع المقابل لقيمة التعداد.
LibGit2.path
— FunctionLibGit2.path(repo::GitRepo)
إرجاع مسار الملف الأساسي لمستودع repo
.
- بالنسبة للمستودعات العادية، سيكون هذا عادةً الدليل الأب لمجلد ".git" (ملاحظة: قد يكون هذا مختلفًا عن دليل العمل، انظر
workdir
لمزيد من التفاصيل). - بالنسبة للمستودعات العارية، يكون هذا هو موقع ملفات "git".
LibGit2.peel
— Functionpeel([T,] ref::GitReference)
قم بتقشير ref
بشكل متكرر حتى يتم الحصول على كائن من النوع T
. إذا لم يتم توفير T
، فسيتم تقشير ref
حتى يتم الحصول على كائن غير GitTag
.
!!! ملاحظة يمكن تقشير العلامات المعلنة فقط إلى كائنات GitTag
. العلامات الخفيفة (الافتراضية) هي مراجع تحت refs/tags/
التي تشير مباشرة إلى كائنات GitCommit
.
peel([T,] obj::GitObject)
قم بتقشير obj
بشكل متكرر حتى يتم الحصول على كائن من النوع T
. إذا لم يتم توفير T
، فسيتم تقشير obj
حتى يتغير النوع.
- سيتم تقشير
GitTag
إلى الكائن الذي يشير إليه. - سيتم تقشير
GitCommit
إلىGitTree
.
LibGit2.posixpath
— FunctionLibGit2.posixpath(path)
قم بتوحيد سلسلة المسار path
لاستخدام الفواصل المنطقية POSIX.
LibGit2.push
— Functionpush(rmt::GitRemote, refspecs; force::Bool=false, options::PushOptions=PushOptions())
ادفع إلى مستودع git البعيد المحدد rmt
، باستخدام refspecs
لتحديد أي فرع (فروع) بعيدة يجب الدفع إليها. المعاملات الرئيسية هي:
force
: إذا كانتtrue
، سيتم الدفع بالقوة، متجاهلاً النزاعات.options
: تحدد الخيارات للدفع، مثل أي رؤوس وكيل يجب استخدامها. انظرPushOptions
لمزيد من المعلومات.
!!! ملاحظة يمكنك إضافة معلومات حول refspecs الدفع بطريقتين أخريين: عن طريق تعيين خيار في GitConfig
الخاص بالمستودع (مع push.default
كمفتاح) أو عن طريق استدعاء add_push!
. خلاف ذلك، ستحتاج إلى تحديد refspec دفع بشكل صريح في الاستدعاء إلى push
ليكون له أي تأثير، مثل: LibGit2.push(repo, refspecs=["refs/heads/master"])
.
push(repo::GitRepo; kwargs...)
يدفع التحديثات إلى مصدر repo
.
تكون وسائط الكلمات الرئيسية هي:
remote::AbstractString="origin"
: اسم المصدر العلوي الذي سيتم الدفع إليه.remoteurl::AbstractString=""
: عنوان URL لـremote
.refspecs=AbstractString[]
: يحدد خصائص الدفع.force::Bool=false
: يحدد ما إذا كان الدفع سيكون دفعًا قسريًا، مما يؤدي إلى الكتابة فوق الفرع البعيد.credentials=nothing
: يوفر بيانات الاعتماد و/أو الإعدادات عند المصادقة ضدremote
خاص.callbacks=Callbacks()
: ردود الفعل والحمولات المقدمة من المستخدم.
معادل لـ git push [<remoteurl>|<repo>] [<refspecs>]
.
LibGit2.push!
— MethodLibGit2.push!(w::GitRevWalker, cid::GitHash)
ابدأ GitRevWalker
walker
عند الالتزام cid
. يمكن استخدام هذه الدالة لتطبيق دالة على جميع الالتزامات منذ سنة معينة، عن طريق تمرير أول التزام في تلك السنة كـ cid
ثم تمرير w
الناتج إلى LibGit2.map
.
LibGit2.push_head!
— FunctionLibGit2.push_head!(w::GitRevWalker)
ادفع التزام HEAD وأسلافه إلى GitRevWalker
w
. يضمن ذلك أنه سيتم مواجهة HEAD وجميع التزامات أسلافه أثناء السير.
LibGit2.push_refspecs
— Functionpush_refspecs(rmt::GitRemote) -> Vector{String}
احصل على push refspecs لـ rmt
المحدد. تحتوي هذه refspecs على معلومات حول أي فرع (فروع) يجب دفعها.
أمثلة
julia> remote = LibGit2.get(LibGit2.GitRemote, repo, "upstream");
julia> LibGit2.add_push!(repo, remote, "refs/heads/master");
julia> close(remote);
julia> remote = LibGit2.get(LibGit2.GitRemote, repo, "upstream");
julia> LibGit2.push_refspecs(remote)
String["refs/heads/master"]
LibGit2.raw
— Functionraw(id::GitHash) -> Vector{UInt8}
احصل على البايتات الخام لـ GitHash
كمتجه بطول 20.
LibGit2.read_tree!
— FunctionLibGit2.read_tree!(idx::GitIndex, tree::GitTree)
LibGit2.read_tree!(idx::GitIndex, treehash::AbstractGitHash)
اقرأ الشجرة tree
(أو الشجرة المشار إليها بواسطة treehash
في المستودع المملوك لـ idx
) إلى الفهرس idx
. سيتم استبدال محتويات الفهرس الحالية.
LibGit2.rebase!
— FunctionLibGit2.rebase!(repo::GitRepo, upstream::AbstractString="", newbase::AbstractString="")
حاول إجراء دمج تلقائي لإعادة التأسيس للفرع الحالي، من upstream
إذا تم توفيره، أو خلاف ذلك من فرع التتبع العلوي. newbase
هو الفرع الذي سيتم إعادة التأسيس عليه. بشكل افتراضي، يكون هذا هو upstream
.
إذا ظهرت أي تعارضات لا يمكن حلها تلقائيًا، ستتوقف عملية إعادة التأسيس، مما يترك المستودع وشجرة العمل في حالتها الأصلية، وستقوم الدالة بإلقاء GitError
. هذا يعادل تقريبًا العبارة التالية في سطر الأوامر:
git rebase --merge [<upstream>]
if [ -d ".git/rebase-merge" ]; then
git rebase --abort
fi
LibGit2.ref_list
— FunctionLibGit2.ref_list(repo::GitRepo) -> Vector{String}
احصل على قائمة بجميع أسماء المراجع في مستودع repo
.
LibGit2.reftype
— FunctionLibGit2.reftype(ref::GitReference) -> Cint
إرجاع Cint
يتوافق مع نوع ref
:
0
إذا كانت الإشارة غير صالحة1
إذا كانت الإشارة هي معرف كائن2
إذا كانت الإشارة رمزية
LibGit2.remotes
— FunctionLibGit2.remotes(repo::GitRepo)
إرجاع متجه بأسماء المراسلين لـ repo
.
LibGit2.remove!
— Functionremove!(repo::GitRepo, files::AbstractString...)
remove!(idx::GitIndex, files::AbstractString...)
قم بإزالة جميع الملفات التي تم تحديد مساراتها بواسطة files
في الفهرس idx
(أو فهرس repo
).
LibGit2.reset
— Functionreset(val::Integer, flag::Integer)
إعادة تعيين بتات val
المحددة بواسطة flag
، وإعادتها إلى 0
.
LibGit2.reset!
— Functionreset!(payload, [config]) -> CredentialPayload
إعادة تعيين حالة payload
إلى القيم الأولية حتى يمكن استخدامها مرة أخرى ضمن رد الاتصال الخاص بالاعتماد. إذا تم توفير config
، فسيتم أيضًا تحديث التكوين.
يحدث بعض الإدخالات، التي تحددها pathspecs
، في الفهرس من شجرة الالتزام المستهدفة.
يحدد الرأس الحالي إلى معرف الالتزام المحدد ويعيد تعيين الفهرس وشجرة العمل لتطابقه بشكل اختياري.
git reset [<committish>] [–] <pathspecs>...
reset!(repo::GitRepo, id::GitHash, mode::Cint=Consts.RESET_MIXED)
إعادة تعيين المستودع repo
إلى حالته عند id
، باستخدام أحد الأوضاع الثلاثة المحددة بواسطة mode
:
Consts.RESET_SOFT
- نقل HEAD إلىid
.Consts.RESET_MIXED
- الافتراضي، نقل HEAD إلىid
وإعادة تعيين الفهرس إلىid
.Consts.RESET_HARD
- نقل HEAD إلىid
، إعادة تعيين الفهرس إلىid
، والتخلص من جميع التغييرات في العمل.
أمثلة
# جلب التغييرات
LibGit2.fetch(repo)
isfile(joinpath(repo_path, our_file)) # سيكون خطأ
# دمج سريع للتغييرات
LibGit2.merge!(repo, fastforward=true)
# لأنه لم يكن هناك أي ملف محلي، ولكن هناك
# ملف عن بُعد، نحتاج إلى إعادة تعيين الفرع
head_oid = LibGit2.head_oid(repo)
new_head = LibGit2.reset!(repo, head_oid, LibGit2.Consts.RESET_HARD)
في هذا المثال، المستودع الذي يتم الجلب منه يمتلك ملفًا يسمى our_file
في فهرسه، ولهذا السبب يجب علينا إعادة التعيين.
معادل لـ git reset [--soft | --mixed | --hard] <id>
.
أمثلة
repo = LibGit2.GitRepo(repo_path)
head_oid = LibGit2.head_oid(repo)
open(joinpath(repo_path, "file1"), "w") do f
write(f, "111
")
end
LibGit2.add!(repo, "file1")
mode = LibGit2.Consts.RESET_HARD
# سيتخلص من التغييرات في file1
# ويقوم بإلغاء تسجيله
new_head = LibGit2.reset!(repo, head_oid, mode)
LibGit2.restore
— Functionrestore(s::State, repo::GitRepo)
إرجاع مستودع repo
إلى حالة سابقة s
، على سبيل المثال HEAD لفرع قبل محاولة الدمج. يمكن توليد s
باستخدام دالة snapshot
.
LibGit2.revcount
— FunctionLibGit2.revcount(repo::GitRepo, commit1::AbstractString, commit2::AbstractString)
قائمة عدد التعديلات بين commit1
و commit2
(معرفات الالتزام في شكل سلسلة). نظرًا لأن commit1
و commit2
قد يكونان على فروع مختلفة، فإن revcount
يقوم بإجراء قائمة "يسار-يمين" للتعديلات (والعد)، ويعيد مجموعة من Int
s - عدد الالتزامات اليسارية واليمنية، على التوالي. يشير الالتزام اليساري (أو اليمني) إلى أي جانب من الفرق المتماثل في شجرة يمكن الوصول إلى الالتزام منه.
معادل لـ git rev-list --left-right --count <commit1> <commit2>
.
أمثلة
repo = LibGit2.GitRepo(repo_path)
repo_file = open(joinpath(repo_path, test_file), "a")
println(repo_file, "hello world")
flush(repo_file)
LibGit2.add!(repo, test_file)
commit_oid1 = LibGit2.commit(repo, "commit 1")
println(repo_file, "hello world again")
flush(repo_file)
LibGit2.add!(repo, test_file)
commit_oid2 = LibGit2.commit(repo, "commit 2")
LibGit2.revcount(repo, string(commit_oid1), string(commit_oid2))
سيعيد هذا (-1, 0)
.
LibGit2.set_remote_url
— Functionset_remote_url(repo::GitRepo, remote_name, url)
set_remote_url(repo::String, remote_name, url)
قم بتعيين كل من url
للتخزين والدفع لـ remote_name
لـ GitRepo
أو مستودع git الموجود في path
. عادةً ما تستخدم مستودعات git "origin"
كاسم بعيد.
أمثلة
repo_path = joinpath(tempdir(), "Example")
repo = LibGit2.init(repo_path)
LibGit2.set_remote_url(repo, "upstream", "https://github.com/JuliaLang/Example.jl")
LibGit2.set_remote_url(repo_path, "upstream2", "https://github.com/JuliaLang/Example2.jl")
LibGit2.shortname
— FunctionLibGit2.shortname(ref::GitReference)
إرجاع نسخة مختصرة من اسم ref
تكون "قابلة للقراءة البشرية".
julia> repo = GitRepo(path_to_repo);
julia> branch_ref = LibGit2.head(repo);
julia> LibGit2.name(branch_ref)
"refs/heads/master"
julia> LibGit2.shortname(branch_ref)
"master"
LibGit2.snapshot
— Functionsnapshot(repo::GitRepo) -> State
خذ لقطة من الحالة الحالية للمستودع repo
، مع تخزين الـ HEAD الحالي، والفهرس، وأي عمل غير مُلتزم. يمكن استخدام المخرجات State
لاحقًا أثناء استدعاء restore
لإرجاع المستودع إلى الحالة الملتقطة.
LibGit2.split_cfg_entry
— FunctionLibGit2.split_cfg_entry(ce::LibGit2.ConfigEntry) -> Tuple{String,String,String,String}
قم بتقسيم ConfigEntry
إلى الأجزاء التالية: القسم، القسم الفرعي، الاسم، والقيمة.
أمثلة
بالنظر إلى ملف تكوين git الذي يحتوي على:
[credential "https://example.com"]
username = me
سيبدو ConfigEntry
كما يلي:
julia> entry
ConfigEntry("credential.https://example.com.username", "me")
julia> LibGit2.split_cfg_entry(entry)
("credential", "https://example.com", "username", "me")
راجع وثائق بناء جملة git config لمزيد من التفاصيل.
LibGit2.status
— FunctionLibGit2.status(repo::GitRepo, path::String) -> Union{Cuint, Cvoid}
ابحث عن حالة الملف في path
في مستودع git repo
. على سبيل المثال، يمكن استخدام ذلك للتحقق مما إذا كان الملف في path
قد تم تعديله ويحتاج إلى أن يتم تجهيزه والتزامه.
LibGit2.stage
— Functionstage(ie::IndexEntry) -> Cint
احصل على رقم المرحلة لـ ie
. يمثل رقم المرحلة 0
الحالة الحالية لشجرة العمل، ولكن يمكن استخدام أرقام أخرى في حالة وجود تعارض في الدمج. في مثل هذه الحالة، تصف أرقام المرحلة المختلفة على IndexEntry
الجانب (أو الجوانب) التي تنتمي إليها الحالة الحالية للملف من التعارض. المرحلة 0
هي الحالة قبل محاولة الدمج، المرحلة 1
هي التغييرات التي تم إجراؤها محليًا، المراحل 2
وما فوقها مخصصة للتغييرات من فروع أخرى (على سبيل المثال، في حالة دمج "أوكتيبس" متعدد الفروع، قد يتم استخدام المراحل 2
و 3
و 4
).
LibGit2.tag_create
— FunctionLibGit2.tag_create(repo::GitRepo, tag::AbstractString, commit; kwargs...)
إنشاء علامة جيت جديدة tag
(مثل "v0.5"
) في المستودع repo
، عند الالتزام commit
.
وسائط الكلمات الرئيسية هي:
msg::AbstractString=""
: الرسالة للعلامة.force::Bool=false
: إذا كانتtrue
، سيتم الكتابة فوق المراجع الموجودة.sig::Signature=Signature(repo)
: توقيع المُعلِن.
LibGit2.tag_delete
— FunctionLibGit2.tag_delete(repo::GitRepo, tag::AbstractString)
قم بإزالة علامة git tag
من المستودع repo
.
LibGit2.tag_list
— FunctionLibGit2.tag_list(repo::GitRepo) -> Vector{String}
احصل على قائمة بجميع العلامات في مستودع git repo
.
LibGit2.target
— FunctionLibGit2.target(tag::GitTag)
هاش Git
لكائن الهدف من tag
.
LibGit2.toggle
— Functiontoggle(val::Integer, flag::Integer)
قم بتبديل بتات val
المحددة بواسطة flag
، بحيث إذا كان البت 0
سيصبح 1
بعد التبديل، والعكس صحيح.
LibGit2.transact
— Functiontransact(f::Function, repo::GitRepo)
قم بتطبيق الدالة f
على مستودع git repo
، مع أخذ snapshot
قبل تطبيق f
. إذا حدث خطأ داخل f
، سيتم إرجاع repo
إلى حالته السابقة باستخدام restore
. سيتم إعادة رمي الخطأ الذي حدث، لكن حالة repo
لن تتعرض للتلف.
LibGit2.treewalk
— Functiontreewalk(f, tree::GitTree, post::Bool=false)
تجول في الإدخالات في tree
وأشجارها الفرعية بترتيب ما بعد أو ما قبل. يعني الترتيب المسبق البدء من الجذر ثم التجول في الشجرة الفرعية اليسرى الأكثر (والاستمرار بشكل متكرر من خلال الأشجار الفرعية اليسرى الأكثر لتلك الشجرة الفرعية) والتحرك إلى اليمين عبر الأشجار الفرعية. يعني الترتيب اللاحق البدء من أسفل الشجرة الفرعية اليسرى الأكثر، والتجول لأعلى من خلالها، ثم التجول في الشجرة الفرعية اليمنى التالية (مرة أخرى بدءًا من الأسفل) وأخيرًا زيارة جذر الشجرة في النهاية.
يجب أن يكون للمعامل f
التوقيع التالي:
(String, GitTreeEntry) -> Cint
قيمة سالبة تُرجع من f
توقف التجول في الشجرة. قيمة إيجابية تعني أنه سيتم تخطي الإدخال إذا كان post
هو false
.
LibGit2.upstream
— Functionupstream(ref::GitReference) -> Union{GitReference, Nothing}
حدد ما إذا كانت الفرع الذي يحتوي على ref
لديه فرع متصل محدد.
إرجاع إما GitReference
إلى الفرع المتصل إذا كان موجودًا، أو nothing
إذا لم يكن للفرع المطلوب نظير متصل.
LibGit2.update!
— Functionupdate!(repo::GitRepo, files::AbstractString...)
update!(idx::GitIndex, files::AbstractString...)
قم بتحديث جميع الملفات بالمسارات المحددة بواسطة files
في الفهرس idx
(أو فهرس repo
). قم بمطابقة حالة كل ملف في الفهرس مع الحالة الحالية على القرص، وقم بإزالته إذا تم إزالته من القرص، أو تحديث مدخله في قاعدة بيانات الكائنات.
LibGit2.url
— Functionurl(rmt::GitRemote)
احصل على عنوان URL لجلب مستودع جيت البعيد.
أمثلة
julia> repo_url = "https://github.com/JuliaLang/Example.jl";
julia> repo = LibGit2.init(mktempdir());
julia> remote = LibGit2.GitRemote(repo, "origin", repo_url);
julia> LibGit2.url(remote)
"https://github.com/JuliaLang/Example.jl"
LibGit2.version
— Functionversion() -> VersionNumber
إرجاع إصدار libgit2 المستخدم، كـ VersionNumber
.
LibGit2.with
— Functionwith(f::Function, obj)
دالة مساعدة لإدارة الموارد. تطبق f
على obj
، مع التأكد من استدعاء close
على obj
بعد أن تعود f
بنجاح أو ترمي خطأ. تضمن أن الموارد المخصصة لـ git يتم إنهاؤها بمجرد عدم الحاجة إليها.
LibGit2.with_warn
— Functionwith_warn(f::Function, ::Type{T}, args...)
دالة مساعدة لإدارة الموارد. تطبق f
على args
، أولاً بإنشاء مثيل من النوع T
من args
. تتأكد من استدعاء close
على الكائن الناتج بعد أن تعود f
بنجاح أو ترمي خطأ. تضمن أن الموارد المخصصة لـ git يتم إنهاؤها بمجرد عدم الحاجة إليها. إذا تم رمي خطأ بواسطة f
، يتم عرض تحذير يحتوي على الخطأ.
LibGit2.workdir
— FunctionLibGit2.workdir(repo::GitRepo)
ارجع موقع دليل العمل لـ repo
. سيؤدي هذا إلى حدوث خطأ في المستودعات العارية.
!!! ملاحظة سيكون هذا عادةً هو الدليل الأب لـ gitdir(repo)
، ولكن يمكن أن يكون مختلفًا في بعض الحالات: على سبيل المثال، إذا تم تعيين إما متغير تكوين core.worktree
أو متغير البيئة GIT_WORK_TREE
.
LibGit2.GitObject
— Method(::Type{T})(te::GitTreeEntry) where T<:GitObject
احصل على كائن git الذي يشير إليه te
وأرجعه كنوعه الفعلي (النوع entrytype
سيظهر)، على سبيل المثال GitBlob
أو GitTag
.
أمثلة
tree = LibGit2.GitTree(repo, "HEAD^{tree}")
tree_entry = tree[1]
blob = LibGit2.GitBlob(tree_entry)
LibGit2.UserPasswordCredential
— Typeبيانات الاعتماد التي تدعم فقط معلمات user
و password
LibGit2.SSHCredential
— Typeنوع بيانات اعتماد SSH
LibGit2.isfilled
— Functionisfilled(cred::AbstractCredential) -> Bool
يتحقق من أن الاعتماد جاهز للاستخدام في المصادقة.
LibGit2.CachedCredentials
— Typeيخزن معلومات الاعتماد لإعادة الاستخدام
LibGit2.CredentialPayload
— TypeLibGit2.CredentialPayload
يحتفظ بالحالة بين عدة استدعاءات لدالة الاعتماد لنفس عنوان URL. من المتوقع أن يتم reset!
لنسخة CredentialPayload
كلما تم استخدامها مع عنوان URL مختلف.
LibGit2.approve
— Functionapprove(payload::CredentialPayload; shred::Bool=true) -> Nothing
قم بتخزين بيانات اعتماد payload
لإعادة استخدامها في مصادقة مستقبلية. يجب أن يتم استدعاؤه فقط عندما تكون المصادقة ناجحة.
تتحكم الكلمة الرئيسية shred
فيما إذا كان يجب تدمير المعلومات الحساسة في حقل بيانات اعتماد الحمولة. يجب تعيينها على false
فقط أثناء الاختبار.
LibGit2.reject
— Functionreject(payload::CredentialPayload; shred::Bool=true) -> Nothing
تجاهل بيانات الاعتماد payload
من إعادة استخدامها في المصادقة المستقبلية. يجب أن يتم استدعاؤه فقط عندما تكون المصادقة غير ناجحة.
تتحكم الكلمة الرئيسية shred
فيما إذا كان يجب تدمير المعلومات الحساسة في حقل بيانات الاعتماد. يجب تعيينها على false
فقط أثناء الاختبار.
LibGit2.Consts.GIT_CONFIG
— Typeمستوى الأولوية لملف التكوين.
تتوافق هذه المستويات من الأولوية مع منطق التصعيد الطبيعي (من الأعلى إلى الأدنى) عند البحث عن إدخالات التكوين في git.
CONFIG_LEVEL_DEFAULT
- افتح ملفات التكوين العالمية و XDG وملفات النظام إذا كانت متاحة.CONFIG_LEVEL_PROGRAMDATA
- على مستوى النظام في Windows، من أجل التوافق مع git المحمولCONFIG_LEVEL_SYSTEM
- ملف التكوين على مستوى النظام؛/etc/gitconfig
على أنظمة LinuxCONFIG_LEVEL_XDG
- ملف التكوين المتوافق مع XDG؛ عادةً~/.config/git/config
CONFIG_LEVEL_GLOBAL
- ملف التكوين الخاص بالمستخدم (يسمى أيضًا ملف التكوين العالمي)؛ عادةً~/.gitconfig
CONFIG_LEVEL_LOCAL
- ملف التكوين الخاص بالمستودع؛$WORK_DIR/.git/config
على المستودعات غير الفارغةCONFIG_LEVEL_APP
- ملف التكوين الخاص بالتطبيق؛ معرف بحرية من قبل التطبيقاتCONFIG_HIGHEST_LEVEL
- يمثل أعلى مستوى متاح لملف التكوين (أي أكثر ملف تكوين محدد متاح يتم تحميله فعليًا)