LibGit2

The LibGit2 모듈은 libgit2에 대한 바인딩을 제공하는 포터블 C 라이브러리로, Git 버전 관리 시스템의 핵심 기능을 구현합니다. 이 바인딩은 현재 Julia의 패키지 관리자를 지원하는 데 사용되고 있습니다. 이 모듈은 결국 별도의 패키지로 이동될 것으로 예상됩니다.

Functionality

이 문서의 일부는 libgit2 API에 대한 사전 지식이 있다고 가정합니다. 여기에서 언급된 일부 객체 및 메서드에 대한 자세한 정보는 상위 문서 libgit2 API reference를 참조하십시오.

LibGit2.BufferType
LibGit2.Buffer

libgit2에서 데이터를 내보내기 위한 데이터 버퍼입니다. git_buf 구조체와 일치합니다.

LibGit2에서 데이터를 가져올 때 일반적인 사용 예는 다음과 같습니다:

buf_ref = Ref(Buffer())
@check ccall(..., (Ptr{Buffer},), buf_ref)
# buf_ref에 대한 작업
free(buf_ref)

특히, Ref 객체에 대해 이후에 LibGit2.free를 호출해야 한다는 점에 유의하십시오.

source
LibGit2.CheckoutOptionsType
LibGit2.CheckoutOptions

git_checkout_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상 1입니다.
  • checkout_strategy: 충돌을 처리하는 방법과 체크아웃/누락된 파일을 재생성할지 여부를 결정합니다.
  • disable_filters: 0이 아닌 경우, UNIX와 DOS 간의 파일 개행을 변환하는 CLRF와 같은 필터를 적용하지 않습니다.
  • dir_mode: 체크아웃에 관련된 모든 디렉토리에 대한 읽기/쓰기/접근 모드. 기본값은 0755입니다.
  • file_mode: 체크아웃에 관련된 모든 파일에 대한 읽기/쓰기/접근 모드. 기본값은 blob에 따라 0755 또는 0644입니다.
  • file_open_flags: 체크아웃 중에 파일을 열기 위해 사용되는 비트 플래그입니다.
  • notify_flags: 사용자에게 어떤 종류의 충돌에 대해 알릴지에 대한 플래그입니다.
  • notify_cb: 체크아웃 충돌이 발생할 경우 사용자에게 알리기 위한 선택적 콜백 함수입니다. 이 함수가 0이 아닌 값을 반환하면 체크아웃이 취소됩니다.
  • 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: 성능 콜백에 대한 페이로드입니다.
source
LibGit2.CloneOptionsType
LibGit2.CloneOptions

git_clone_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상 1입니다.
  • checkout_opts: 클론의 일환으로 원격 체크아웃을 수행하기 위한 옵션입니다.
  • fetch_opts: 클론의 일환으로 원격의 사전 체크아웃 페치를 수행하기 위한 옵션입니다.
  • bare: 0이면 전체 원격 저장소를 클론합니다. 0이 아닌 경우, 저장소에 소스 파일의 로컬 복사본이 없는 베어 클론을 수행하며, gitdirworkdir가 동일합니다.
  • localclone: 로컬 객체 데이터베이스를 클론할지 또는 페치를 수행할지를 나타내는 플래그입니다. 기본값은 git이 결정하도록 하는 것입니다. 로컬 클론에 대해 git 인식 전송을 사용하지 않지만, file://로 시작하는 URL에 대해서는 사용합니다.
  • checkout_branch: 체크아웃할 브랜치의 이름입니다. 빈 문자열인 경우, 원격의 기본 브랜치가 체크아웃됩니다.
  • repository_cb: 클론이 생성될 새로운 저장소를 만들기 위해 사용될 선택적 콜백입니다.
  • repository_cb_payload: 저장소 콜백에 대한 페이로드입니다.
  • remote_cb: 클론을 만들기 전에 GitRemote를 생성하는 데 사용되는 선택적 콜백입니다.
  • remote_cb_payload: 원격 콜백에 대한 페이로드입니다.
source
LibGit2.DescribeOptionsType
LibGit2.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를 표시합니다(기본 동작).
source
LibGit2.DescribeFormatOptionsType
LibGit2.DescribeFormatOptions

git_describe_format_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상 1입니다.
  • abbreviated_size: 사용할 약어 GitHash의 크기에 대한 하한, 기본값은 7입니다.
  • always_use_long_format: 짧은 형식을 사용할 수 있는 경우에도 문자열에 긴 형식을 사용하려면 1로 설정합니다.
  • dirty_suffix: 설정된 경우, workdir가 더럽혀져 있으면 설명 문자열의 끝에 추가됩니다.
source
LibGit2.DiffDeltaType
LibGit2.DiffDelta

하나의 항목에 대한 변경 사항 설명. git_diff_delta 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • status: 파일이 추가/수정/삭제되었는지를 나타내는 Consts.DELTA_STATUS 중 하나.
  • flags: 델타 및 양쪽 객체에 대한 플래그. 파일을 이진/텍스트로 처리할지, 델타의 양쪽에 존재하는지, 객체 ID가 올바른지 여부를 결정합니다.
  • similarity: 파일이 이름이 변경되었거나 복사되었는지를 나타내는 데 사용됩니다.
  • nfiles: 델타에 있는 파일 수(예: 델타가 서브모듈 커밋 ID에서 실행된 경우, 하나 이상의 파일이 포함될 수 있습니다).
  • old_file: 변경 사항 이전의 파일에 대한 정보를 포함하는 DiffFile.
  • new_file: 변경 사항 이후의 파일에 대한 정보를 포함하는 DiffFile.
source
LibGit2.DiffFileType
LibGit2.DiffFile

델타의 한 쪽에 대한 설명. git_diff_file 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • id: diff에서 항목의 GitHash. 이 diff의 이 쪽에서 항목이 비어 있는 경우(예: 파일 제거의 diff인 경우), 이는 GitHash(0)이 됩니다.
  • path: 리포지토리의 작업 디렉토리에 상대적인 항목에 대한 NULL로 종료된 경로.
  • size: 항목의 크기(바이트 단위).
  • flags: git_diff_flag_t 플래그의 조합. 이 정수의 i번째 비트는 i번째 플래그를 설정합니다.
  • mode: 항목에 대한 stat 모드.
  • id_abbrev: 0.25.0 이상 버전의 LibGit2에서만 존재합니다. string으로 변환할 때 id 필드의 길이. 일반적으로 OID_HEXSZ(40)와 같습니다.
source
LibGit2.DiffOptionsStructType
LibGit2.DiffOptionsStruct

git_diff_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상 1입니다.
  • flags: 어떤 파일이 diff에 나타날지를 제어하는 플래그. 기본값은 DIFF_NORMAL입니다.
  • ignore_submodules: 서브모듈의 파일을 볼 것인지 여부. 기본값은 SUBMODULE_IGNORE_UNSPECIFIED로, 이는 서브모듈의 설정이 diff에 나타날지 여부를 제어함을 의미합니다.
  • pathspec: diff에 포함할 파일의 경로. 기본값은 저장소의 모든 파일을 사용하는 것입니다.
  • notify_cb: 파일 델타가 추가될 때 diff의 변경 사항을 사용자에게 알리는 선택적 콜백입니다.
  • progress_cb: diff 진행 상황을 표시하는 선택적 콜백입니다. libgit2 버전이 최소 0.24.0 이상일 때만 관련이 있습니다.
  • payload: notify_cbprogress_cb에 전달할 페이로드입니다.
  • context_lines: 헌크의 가장자리를 정의하는 데 사용되는 변경되지 않은 라인의 수입니다. 이는 헌크 앞뒤에 제공되는 컨텍스트를 위해 표시될 라인의 수이기도 합니다. 기본값은 3입니다.
  • interhunk_lines: 두 개의 별도 헌크 사이에 허용되는 최대 변경되지 않은 라인의 수입니다. 기본값은 0입니다.
  • id_abbrev: 인쇄할 축약된 GitHash의 길이를 설정합니다. 기본값은 7입니다.
  • max_size: blob의 최대 파일 크기입니다. 이 크기를 초과하면 이진 blob으로 처리됩니다. 기본값은 512 MB입니다.
  • old_prefix: diff의 한쪽에 오래된 파일을 배치할 가상 파일 디렉토리입니다. 기본값은 "a"입니다.
  • new_prefix: diff의 한쪽에 새로운 파일을 배치할 가상 파일 디렉토리입니다. 기본값은 "b"입니다.
source
LibGit2.FetchHeadType
LibGit2.FetchHead

가져오기 중 HEAD에 대한 정보를 포함하며, 가져온 브랜치의 이름과 URL, HEAD의 oid, 가져온 HEAD가 로컬에 병합되었는지 여부를 포함합니다.

필드는 다음을 나타냅니다:

  • name: 가져오기 헤드의 로컬 참조 데이터베이스에서의 이름, 예를 들어, "refs/heads/master".
  • url: 가져오기 헤드의 URL.
  • oid: 가져오기 헤드의 끝 부분의 GitHash.
  • ismerge: 원격의 변경 사항이 로컬 복사본에 병합되었는지 여부를 나타내는 부울 플래그입니다. true인 경우, 로컬 복사본은 원격 가져오기 헤드와 최신 상태입니다.
source
LibGit2.FetchOptionsType
LibGit2.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 이상인 경우에만 존재합니다.
source
LibGit2.GitAnnotatedType
GitAnnotated(repo::GitRepo, commit_id::GitHash)
GitAnnotated(repo::GitRepo, ref::GitReference)
GitAnnotated(repo::GitRepo, fh::FetchHead)
GitAnnotated(repo::GitRepo, committish::AbstractString)

주석이 달린 git 커밋은 어떻게 조회되었는지와 그 이유에 대한 정보를 담고 있어, 리베이스나 병합 작업이 커밋의 맥락에 대한 더 많은 정보를 가질 수 있도록 합니다. 충돌 파일은 예를 들어 충돌하는 병합의 소스/대상 브랜치에 대한 정보를 포함합니다. 주석이 달린 커밋은 예를 들어 FetchHead가 전달될 때 원격 브랜치의 끝을 참조하거나 GitReference를 사용하여 설명된 브랜치 헤드를 참조할 수 있습니다.

source
LibGit2.GitBlameType
GitBlame(repo::GitRepo, path::AbstractString; options::BlameOptions=BlameOptions())

path에 있는 파일에 대한 GitBlame 객체를 생성하며, repo의 기록에서 얻은 변경 정보를 사용합니다. GitBlame 객체는 누가 파일의 어떤 부분을 언제, 어떻게 변경했는지를 기록합니다. options는 파일의 내용을 분리하는 방법과 조사할 커밋을 제어합니다 - 더 많은 정보는 BlameOptions를 참조하세요.

source
LibGit2.GitBlobType
GitBlob(repo::GitRepo, hash::AbstractGitHash)
GitBlob(repo::GitRepo, spec::AbstractString)

hash/spec로 지정된 repo에서 GitBlob 객체를 반환합니다.

  • hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.
  • spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
source
LibGit2.GitCommitType
GitCommit(repo::GitRepo, hash::AbstractGitHash)
GitCommit(repo::GitRepo, spec::AbstractString)

hash/spec로 지정된 repo에서 GitCommit 객체를 반환합니다.

  • hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.
  • spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하세요.
source
LibGit2.GitConfigType
GitConfig(path::AbstractString, level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP, force::Bool=false)

path에 있는 파일에서 구성 정보를 로드하여 새로운 GitConfig를 생성합니다. level, repoforce 옵션에 대한 자세한 내용은 addfile를 참조하십시오.

source
GitConfig(repo::GitRepo)

저장된 git 저장소 repo의 구성을 가져옵니다. repo에 특정 구성 파일이 설정되어 있지 않은 경우 기본 git 구성이 사용됩니다.

source
GitConfig(level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_DEFAULT)

기본 git 구성을 가져오려면 전역 및 시스템 구성 파일을 우선 순위가 있는 구성으로 로드합니다. 이는 특정 git 리포지토리 외부에서 기본 구성 옵션에 접근하는 데 사용할 수 있습니다.

source
LibGit2.GitHashType
GitHash

git 객체 식별자로, sha-1 해시를 기반으로 합니다. 이는 저장소에서 GitObject를 식별하는 데 사용되는 20바이트 문자열(40개의 16진수 숫자)입니다.

source
LibGit2.GitObjectType
GitObject(repo::GitRepo, hash::AbstractGitHash)
GitObject(repo::GitRepo, spec::AbstractString)

지정된 객체(GitCommit, GitBlob, GitTree 또는 GitTag)를 hash/spec으로 지정된 repo에서 반환합니다.

  • hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.
  • spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
source
LibGit2.GitRemoteType
GitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString) -> GitRemote

원격 git 저장소를 이름과 URL을 사용하여 조회합니다. 기본 가져오기 refspec을 사용합니다.

예제

repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemote(repo, "upstream", repo_url)
source
GitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString, fetch_spec::AbstractString) -> GitRemote

원격 git 저장소를 저장소의 이름과 URL, 그리고 원격에서 가져오는 방법에 대한 사양(예: 어떤 원격 브랜치를 가져올지)을 사용하여 조회합니다.

예제

repo = LibGit2.init(repo_path)
refspec = "+refs/heads/mybranch:refs/remotes/origin/mybranch"
remote = LibGit2.GitRemote(repo, "upstream", repo_url, refspec)
source
LibGit2.GitRemoteAnonFunction
GitRemoteAnon(repo::GitRepo, url::AbstractString) -> GitRemote

URL만 사용하여 원격 git 저장소를 조회합니다. 이름은 사용하지 않습니다.

예제

repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemoteAnon(repo, repo_url)
source
LibGit2.GitRepoType
LibGit2.GitRepo(path::AbstractString)

path에 있는 git 저장소를 엽니다.

source
LibGit2.GitRepoExtFunction
LibGit2.GitRepoExt(path::AbstractString, flags::Cuint = Cuint(Consts.REPOSITORY_OPEN_DEFAULT))

path에서 git 저장소를 열고 확장된 제어를 제공합니다 (예를 들어, 현재 사용자가 path를 읽기 위해 특별 접근 그룹의 구성원이어야 하는 경우).

source
LibGit2.GitRevWalkerType
GitRevWalker(repo::GitRepo)

GitRevWalker는 git 저장소 repo수정 (즉, 커밋)을 탐색합니다. 이는 저장소의 커밋 모음이며, 반복(iteration) 및 LibGit2.mapLibGit2.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는 커밋에 고유하므로, cnt1이 됩니다.

source
LibGit2.GitShortHashType
GitShortHash(hash::GitHash, len::Integer)

고유할 때 git 객체를 식별하는 데 사용할 수 있는 축약된 git 객체 식별자로, hash의 처음 len 개 16진수 숫자로 구성되며 (나머지 숫자는 무시됨).

source
LibGit2.GitStatusType
LibGit2.GitStatus(repo::GitRepo; status_opts=StatusOptions())

git 저장소 repo의 각 파일 상태에 대한 정보를 수집합니다(예: 파일이 수정되었는지, 스테이징되었는지 등). status_opts는 추적되지 않은 파일을 볼지 여부나 서브모듈을 포함할지 여부와 같은 다양한 옵션을 설정하는 데 사용할 수 있습니다. 자세한 내용은 StatusOptions를 참조하십시오.

source
LibGit2.GitTagType
GitTag(repo::GitRepo, hash::AbstractGitHash)
GitTag(repo::GitRepo, spec::AbstractString)

hash/spec로 지정된 repo에서 GitTag 객체를 반환합니다.

  • hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.
  • spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
source
LibGit2.GitTreeType
GitTree(repo::GitRepo, hash::AbstractGitHash)
GitTree(repo::GitRepo, spec::AbstractString)

hash/spec로 지정된 repo에서 GitTree 객체를 반환합니다.

  • hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.
  • spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
source
LibGit2.BlameOptionsType
LibGit2.BlameOptions

git_blame_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상 1입니다.
  • flags: Consts.BLAME_NORMAL 또는 Consts.BLAME_FIRST_PARENT 중 하나 (다른 blame 플래그는 아직 libgit2에 의해 구현되지 않았습니다).
  • min_match_characters: 변경 사항이 해당 커밋과 연관되기 위해 커밋에서 변경되어야 하는 최소 영숫자 문자 수. 기본값은 20입니다. Consts.BLAME_*_COPIES 플래그 중 하나가 사용될 경우에만 적용되며, libgit2는 아직 이를 구현하지 않았습니다.
  • newest_commit: 변경 사항을 살펴볼 최신 커밋의 GitHash.
  • oldest_commit: 변경 사항을 살펴볼 가장 오래된 커밋의 GitHash.
  • min_line: 블레임을 시작할 파일의 첫 번째 줄. 기본값은 1입니다.
  • max_line: 블레임을 적용할 파일의 마지막 줄. 기본값은 0, 즉 파일의 마지막 줄을 의미합니다.
source
LibGit2.MergeOptionsType
LibGit2.MergeOptions

git_merge_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상 1입니다.

  • flags: 병합 동작을 설명하는 플래그에 대한 enum. git_merge_flag_t에서 정의됩니다. 해당하는 Julia 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: 파일 병합에 대한 지침입니다.

source
LibGit2.ProxyOptionsType
LibGit2.ProxyOptions

프록시를 통해 연결하기 위한 옵션입니다.

git_proxy_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전입니다. 현재는 항상 1입니다.

  • proxytype: 사용할 프록시 유형에 대한 enum입니다. git_proxy_t에서 정의됩니다. 해당하는 Julia enum은 GIT_PROXY이며 값은 다음과 같습니다:

    • 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)
source
LibGit2.PushOptionsType
LibGit2.PushOptions

git_push_options 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전입니다. 현재는 항상 1입니다.
  • parallelism: 패킷 파일을 생성해야 하는 경우, 이 변수는 패킷 빌더에 의해 생성될 작업자 스레드의 수를 설정합니다. 0인 경우, 패킷 빌더는 사용할 스레드 수를 자동으로 설정합니다. 기본값은 1입니다.
  • callbacks: 푸시를 위해 사용할 콜백(예: 원격 인증용)입니다.
  • proxy_opts: LibGit2 버전이 0.25.0 이상인 경우에만 관련이 있습니다. 원격과 통신하기 위해 프록시를 사용하는 옵션을 설정합니다. 자세한 내용은 ProxyOptions를 참조하십시오.
  • custom_headers: LibGit2 버전이 0.24.0 이상인 경우에만 관련이 있습니다. 푸시 작업에 필요한 추가 헤더입니다.
source
LibGit2.RebaseOperationType
LibGit2.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가 사용되는 경우, 이 단계에서 실행할 명령입니다 (예: 각 커밋 후 테스트 스위트를 실행).

source
LibGit2.RebaseOptionsType
LibGit2.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를 참조하십시오.
source
LibGit2.SignatureStructType
LibGit2.SignatureStruct

작업 서명(예: 커밋 작성자, 태그 작성자 등). git_signature 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • name: 커밋 작성자 또는 커밋의 저자의 전체 이름.
  • email: 커밋 작성자/저자에게 연락할 수 있는 이메일.
  • when: 커밋이 저장소에 작성/커밋된 시간을 나타내는 TimeStruct.
source
LibGit2.StatusEntryType
LibGit2.StatusEntry

HEAD에 존재하는 파일과 인덱스 간의 차이점과 인덱스와 작업 디렉토리 간의 차이점을 제공합니다. git_status_entry 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • status: 파일의 상태 플래그를 포함하며, 현재 상태인지 또는 인덱스나 작업 트리에서 어떤 방식으로 변경되었는지를 나타냅니다.
  • head_to_index: HEAD에 존재하는 파일과 인덱스 간의 차이점을 캡슐화하는 DiffDelta에 대한 포인터입니다.
  • index_to_workdir: 인덱스에 존재하는 파일과 workdir 간의 차이점을 캡슐화하는 DiffDelta에 대한 포인터입니다.
source
LibGit2.StatusOptionsType
LibGit2.StatusOptions

git_status_foreach_ext()가 콜백을 발행하는 방식을 제어하는 옵션입니다. git_status_opt_t 구조체와 일치합니다.

필드는 다음을 나타냅니다:

  • version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전입니다. 현재는 항상 1입니다.
  • show: 어떤 파일을 검사할지와 그 순서를 나타내는 플래그입니다. 기본값은 Consts.STATUS_SHOW_INDEX_AND_WORKDIR입니다.
  • flags: 상태 호출에 사용되는 콜백을 제어하는 플래그입니다.
  • pathspec: 경로 일치를 위해 사용할 경로의 배열입니다. 경로 일치의 동작은 showflags의 값에 따라 달라집니다.
  • baseline: 작업 디렉토리와 인덱스와 비교하는 데 사용될 트리입니다; 기본값은 HEAD입니다.
source
LibGit2.StrArrayStructType
LibGit2.StrArrayStruct

LibGit2의 문자열 배열 표현입니다. git_strarray 구조체와 일치합니다.

LibGit2에서 데이터를 가져올 때 일반적인 사용 예는 다음과 같습니다:

sa_ref = Ref(StrArrayStruct())
@check ccall(..., (Ptr{StrArrayStruct},), sa_ref)
res = convert(Vector{String}, sa_ref[])
free(sa_ref)

특히, Ref 객체에 대해 LibGit2.free를 호출해야 한다는 점에 유의하십시오.

반대로, 문자열 벡터를 LibGit2에 전달할 때는 일반적으로 암시적 변환에 의존하는 것이 가장 간단합니다:

strs = String[...]
@check ccall(..., (Ptr{StrArrayStruct},), strs)

데이터가 Julia에 의해 할당되므로 free를 호출할 필요가 없다는 점에 유의하십시오.

source
LibGit2.addfileFunction
addfile(cfg::GitConfig, path::AbstractString,
        level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP,
        repo::Union{GitRepo, Nothing} = nothing,
        force::Bool=false)

현재 GitConfig cfgpath에 위치한 기존 git 구성 파일을 추가합니다. 파일이 존재하지 않으면 생성됩니다.

  • level은 git 구성 우선 순위 수준을 설정하며, 이는

Consts.GIT_CONFIG에 의해 결정됩니다.

  • repo는 조건부 포함 구문 분석을 허용하는 선택적 저장소입니다.
  • forcefalse이고 주어진 우선 순위 수준에 대한 구성이 이미 존재하는 경우,

addfile은 오류를 발생시킵니다. forcetrue인 경우, 기존 구성은 path에 있는 파일의 구성으로 대체됩니다.

source
LibGit2.add!Function
add!(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에 지정된 경로와 정확히 일치하는 파일만 인덱스에 추가합니다.
source
LibGit2.add_fetch!Function
add_fetch!(repo::GitRepo, rmt::GitRemote, fetch_spec::String)

지정된 rmt에 대한 fetch refspec을 추가합니다. 이 refspec은 어떤 브랜치를 가져올지에 대한 정보를 포함합니다.

예제

julia> LibGit2.add_fetch!(repo, remote, "upstream");

julia> LibGit2.fetch_refspecs(remote)
String["+refs/heads/*:refs/remotes/upstream/*"]
source
LibGit2.add_push!Function
add_push!(repo::GitRepo, rmt::GitRemote, push_spec::String)

지정된 rmt에 대한 push refspec을 추가합니다. 이 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"]
Note

푸시 refspec을 업데이트한 후 변경 사항이 적용되고 push 호출이 작동하려면 해당 GitRemoteclose하고 다시 열어야 할 수 있습니다.

source
LibGit2.addblob!Function
LibGit2.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)
source
LibGit2.authorFunction
author(c::GitCommit)

커밋 c의 작성자의 Signature를 반환합니다. 작성자는 관련 파일에 변경을 가한 사람입니다. committer도 참조하십시오.

source
LibGit2.authorsFunction
authors(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)
source
LibGit2.branchFunction
branch(repo::GitRepo)

git branch와 동일합니다. 현재 HEAD에서 새 브랜치를 생성합니다.

source
LibGit2.branch!Function
branch!(repo::GitRepo, branch_name::AbstractString, commit::AbstractString=""; kwargs...)

repo 저장소에서 새로운 git 브랜치를 체크아웃합니다. commit은 새로운 브랜치의 시작점이 될 문자열 형태의 GitHash입니다. commit이 빈 문자열인 경우 현재 HEAD가 사용됩니다.

키워드 인자는 다음과 같습니다:

  • track::AbstractString="": 이 새로운 브랜치가 추적해야 하는 원격 브랜치의 이름입니다. 비어 있으면(기본값) 원격 브랜치를 추적하지 않습니다.
  • force::Bool=false: true인 경우 브랜치 생성이 강제로 이루어집니다.
  • set_head::Bool=true: true인 경우 브랜치 생성이 완료된 후 브랜치 헤드가 repo의 HEAD로 설정됩니다.

git checkout [-b|-B] <branch_name> [<commit>] [--track <track>]와 동등합니다.

예제

repo = LibGit2.GitRepo(repo_path)
LibGit2.branch!(repo, "new_branch", set_head=false)
source
LibGit2.checkout!Function
checkout!(repo::GitRepo, commit::AbstractString=""; force::Bool=true)

git checkout [-f] --detach <commit>와 동등합니다. repo에서 git 커밋 commit(문자열 형식의 GitHash)을 체크아웃합니다. forcetrue인 경우 체크아웃을 강제로 수행하고 현재 변경 사항을 모두 무시합니다. 현재 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)
source
LibGit2.cloneFunction
clone(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")
source
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 CLI 인수 --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")
source
LibGit2.commitFunction
commit(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에게 보내고 committer가 이를 커밋한 경우입니다.
  • tree_id::GitHash = GitHash()는 커밋을 생성하는 데 사용할 git 트리로, 그 조상 및 다른 역사와의 관계를 보여줍니다. treerepo에 속해야 합니다.
  • parent_ids::Vector{GitHash}=GitHash[]는 새 커밋의 부모 커밋으로 사용할 GitHash 커밋 목록이며, 비어 있을 수 있습니다. 커밋은 예를 들어 병합 커밋인 경우 여러 부모를 가질 수 있습니다.
source
LibGit2.commit(rb::GitRebase, sig::GitSignature)

현재 패치를 리베이스 rb에 커밋하며, sig를 커미터로 사용합니다. 커밋이 이미 적용된 경우에는 조용히 진행됩니다.

source
LibGit2.committerFunction
committer(c::GitCommit)

커밋 c의 커미터의 Signature를 반환합니다. 커미터는 원래 author로 작성된 변경 사항을 커밋한 사람이며, author와 동일할 필요는 없습니다. 예를 들어, author가 패치를 이메일로 보내고 이를 커밋한 committer가 있을 수 있습니다.

source
LibGit2.countFunction
LibGit2.count(f::Function, walker::GitRevWalker; oid::GitHash=GitHash(), by::Cint=Consts.SORT_NONE, rev::Bool=false)

GitRevWalker walker를 사용하여 저장소의 역사에서 모든 커밋을 "걷는" 동안, f가 적용될 때 true를 반환하는 커밋의 수를 찾습니다. 키워드 인자는 다음과 같습니다: * 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는 커밋에 고유하므로, cnt1이 됩니다.

source
LibGit2.counthunksFunction
counthunks(blame::GitBlame)

파일과 함께 고유한 "헝크"의 수를 반환합니다. 헝크는 여러 줄을 포함할 수 있습니다. 헝크는 일반적으로 함께 추가/변경/제거된 파일의 일부로, 예를 들어 소스 파일에 추가된 함수나 나중에 해당 함수에서 최적화된 내부 루프와 같은 것입니다.

source
LibGit2.create_branchFunction
LibGit2.create_branch(repo::GitRepo, bname::AbstractString, commit_obj::GitCommit; force::Bool=false)

저장소 repo에 이름 bname을 가진 새 브랜치를 생성하고, 이는 커밋 commit_obj를 가리킵니다(이는 repo의 일부여야 합니다). forcetrue인 경우, 이미 존재하는 bname이라는 이름의 브랜치를 덮어씁니다. forcefalse이고 이미 bname이라는 이름의 브랜치가 존재하는 경우, 이 함수는 오류를 발생시킵니다.

source
LibGit2.credentials_callbackFunction
credential_callback(...) -> Cint

LibGit2 자격 증명 콜백 함수로, 연결 프로토콜에 따라 다양한 자격 증명 획득 기능을 제공합니다. payload_ptr는 상태 및 설정을 추적할 LibGit2.CredentialPayload 객체를 포함해야 합니다.

allowed_types는 어떤 인증 방법을 시도해야 하는지를 지정하는 LibGit2.Consts.GIT_CREDTYPE 값의 비트 마스크를 포함합니다.

자격 증명 인증은 다음 순서로 수행됩니다(지원되는 경우):

  • SSH 에이전트
  • SSH 개인/공개 키 쌍
  • 사용자 이름/비밀번호 일반 텍스트

사용자가 자격 증명 프롬프트가 표시되면 ^D를 입력하여 프롬프트를 중단할 수 있습니다(컨트롤 키와 d 키를 함께 누름).

참고: libgit2 인증 절차의 특성으로 인해 인증이 실패할 경우, 이 함수는 인증이 성공했는지 여부에 대한 아무런 표시 없이 다시 호출됩니다. 동일한 잘못된 자격 증명을 반복적으로 사용하여 무한 루프에 빠지지 않도록 하기 위해, 우리는 페이로드를 사용하여 상태를 추적할 것입니다.

추가 세부정보는 서버에 대한 인증에 대한 LibGit2 가이드를 참조하십시오.

source
LibGit2.delete_branchFunction
LibGit2.delete_branch(branch::GitReference)

branch가 가리키는 브랜치를 삭제합니다.

source
LibGit2.diff_filesFunction
diff_files(repo::GitRepo, branch1::AbstractString, branch2::AbstractString; kwarg...) -> Vector{AbstractString}

repo라는 git 저장소에서 branch1branch2 사이에 변경된 파일을 보여줍니다.

키워드 인자는 다음과 같습니다:

  • filter::Set{Consts.DELTA_STATUS}=Set([Consts.DELTA_ADDED, Consts.DELTA_MODIFIED, Consts.DELTA_DELETED]))이며, diff에 대한 옵션을 설정합니다. 기본값은 추가, 수정 또는 삭제된 파일을 보여주는 것입니다.

변경된 파일의 이름만 반환하며, 내용은 반환하지 않습니다.

예시

LibGit2.branch!(repo, "branch/a")
LibGit2.branch!(repo, "branch/b")
# repo에 파일 추가
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>와 동등합니다.

source
LibGit2.entrytypeFunction
entrytype(te::GitTreeEntry)

te가 참조하는 객체의 유형을 반환합니다. 결과는 objtype가 반환하는 유형 중 하나가 될 것입니다. 예를 들어, GitTree 또는 GitBlob입니다.

source
LibGit2.fetchFunction
fetch(rmt::GitRemote, refspecs; options::FetchOptions=FetchOptions(), msg="")

지정된 rmt 원격 git 저장소에서 가져오고, refspecs를 사용하여 가져올 원격 브랜치를 결정합니다. 키워드 인자는 다음과 같습니다:

  • options: 가져오기 옵션을 결정합니다. 예를 들어, 이후에 가지치기를 할지 여부입니다. 더 많은 정보는 FetchOptions를 참조하세요.
  • msg: reflogs에 삽입할 메시지입니다.
source
fetch(repo::GitRepo; kwargs...)

저장소 repo의 업스트림에서 업데이트를 가져옵니다.

키워드 인자는 다음과 같습니다:

  • remote::AbstractString="origin": 가져올 repo의 원격 이름입니다. 비어 있으면 URL을 사용하여 익명 원격을 구성합니다.
  • remoteurl::AbstractString="": remote의 URL입니다. 지정되지 않으면 주어진 remote 이름을 기반으로 가정됩니다.
  • refspecs=AbstractString[]: 가져오기 속성을 결정합니다.
  • credentials=nothing: 개인 remote에 대해 인증할 때 자격 증명 및/또는 설정을 제공합니다.
  • callbacks=Callbacks(): 사용자가 제공한 콜백 및 페이로드입니다.

git fetch [<remoteurl>|<repo>] [<refspecs>]와 동등합니다.

source
LibGit2.fetchheadsFunction
fetchheads(repo::GitRepo) -> Vector{FetchHead}

repo에 대한 모든 fetch head의 목록을 반환하며, 각 fetch head는 이름, URL 및 병합 상태를 포함하는 FetchHead로 표현됩니다.

예제

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
source
LibGit2.fetch_refspecsFunction
fetch_refspecs(rmt::GitRemote) -> Vector{String}

지정된 rmt에 대한 fetch refspecs를 가져옵니다. 이 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/*"]
source
LibGit2.merge_baseFunction
merge_base(repo::GitRepo, one::AbstractString, two::AbstractString) -> GitHash

onetwo 커밋 간의 병합 기준(공통 조상)을 찾습니다. onetwo는 모두 문자열 형식일 수 있습니다. 병합 기준의 GitHash를 반환합니다.

source
LibGit2.merge!Method
merge!(repo::GitRepo; kwargs...) -> Bool

저장소 repo에서 git 병합을 수행하여 분기된 이력을 가진 커밋을 현재 브랜치에 병합합니다. 병합이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

키워드 인자는 다음과 같습니다:

  • committish::AbstractString="": committish에 있는 명명된 커밋을 병합합니다.
  • branch::AbstractString="": 브랜치 branch와 현재 브랜치에서 분기된 이후의 모든 커밋을 병합합니다.
  • fastforward::Bool=false: fastforwardtrue인 경우, 병합이 패스트 포워드인 경우에만 병합합니다(현재 브랜치 헤드가 병합할 커밋의 조상인 경우). 그렇지 않으면 병합을 거부하고 false를 반환합니다. 이는 git CLI 옵션 --ff-only와 동일합니다.
  • merge_opts::MergeOptions=MergeOptions(): merge_opts는 충돌 발생 시 병합 전략과 같은 병합 옵션을 지정합니다.
  • checkout_opts::CheckoutOptions=CheckoutOptions(): checkout_opts는 체크아웃 단계에 대한 옵션을 지정합니다.

git merge [--ff-only] [<committish> | <branch>]와 동등합니다.

Note

branch를 지정하는 경우, 이는 참조 형식으로 해야 합니다. 문자열이 GitReference로 변환되기 때문입니다. 예를 들어, 브랜치 branch_a를 병합하려면 merge!(repo, branch="refs/heads/branch_a")를 호출해야 합니다.

source
LibGit2.merge!Method
merge!(repo::GitRepo, anns::Vector{GitAnnotated}; kwargs...) -> Bool

주석이 달린 커밋([GitAnnotated](@ref) 객체로 캡처됨)anns의 변경 사항을 저장소repo`의 HEAD에 병합합니다. 키워드 인수는 다음과 같습니다:

  • 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])
source
LibGit2.merge!Method
merge!(repo::GitRepo, anns::Vector{GitAnnotated}, fastforward::Bool; kwargs...) -> Bool

주석이 달린 커밋([GitAnnotated](@ref) 객체로 캡처됨) anns의 변경 사항을 저장소 repo의 HEAD에 병합합니다. fastforwardtrue인 경우, 오직 패스트 포워드 병합만 허용됩니다. 이 경우, 충돌이 발생하면 병합이 실패합니다. 그렇지 않으면, fastforwardfalse인 경우, 병합은 사용자가 해결해야 할 충돌 파일을 생성할 수 있습니다.

키워드 인수는 다음과 같습니다:

  • 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를 반환합니다
source
LibGit2.ffmerge!Function
ffmerge!(repo::GitRepo, ann::GitAnnotated)

현재 HEAD로 빠른 병합 변경 사항을 적용합니다. 이는 ann이 참조하는 커밋이 현재 HEAD에서 파생된 경우에만 가능합니다(예: 로컬 브랜치 끝보다 단순히 앞서 있는 원격 브랜치에서 변경 사항을 가져오는 경우).

source
LibGit2.fullnameFunction
LibGit2.fullname(ref::GitReference)

심볼릭 참조 ref가 가리키는 참조의 이름을 반환합니다. 만약 ref가 심볼릭 참조가 아니라면 빈 문자열을 반환합니다.

source
LibGit2.featuresFunction
features()

현재 버전의 libgit2가 지원하는 git 기능 목록을 반환합니다. 예를 들어 스레딩, HTTPS 또는 SSH 사용 등이 있습니다.

source
LibGit2.filenameFunction
filename(te::GitTreeEntry)

te가 참조하는 디스크상의 객체의 파일 이름을 반환합니다.

source
LibGit2.filemodeFunction
filemode(te::GitTreeEntry) -> Cint

te가 참조하는 디스크상의 객체의 UNIX 파일 모드를 정수로 반환합니다.

source
LibGit2.gitdirFunction
LibGit2.gitdir(repo::GitRepo)

repo의 "git" 파일의 위치를 반환합니다:

  • 일반 저장소의 경우, 이는 .git 폴더의 위치입니다.
  • 베어 저장소의 경우, 이는 저장소 자체의 위치입니다.

또한 workdir, path를 참조하세요.

source
LibGit2.git_urlFunction
LibGit2.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는 사용 후 민감한 데이터를 안전하게 제로화하거나 파괴할 수 없으며 비밀번호가 메모리에 남아 있을 수 있습니다. 이는 초기화되지 않은 메모리에 의해 노출될 수 있습니다.

예제

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"
source
LibGit2.@githash_strMacro
@githash_str -> AbstractGitHash

주어진 문자열로부터 git 해시 객체를 생성하며, 문자열이 40개의 16진수 숫자보다 짧으면 GitShortHash를 반환하고, 그렇지 않으면 GitHash를 반환합니다.

예제

julia> LibGit2.githash"d114feb74ce633"
GitShortHash("d114feb74ce633")

julia> LibGit2.githash"d114feb74ce63307afe878a5228ad014e0289a85"
GitHash("d114feb74ce63307afe878a5228ad014e0289a85")
source
LibGit2.headFunction
LibGit2.head(repo::GitRepo) -> GitReference

현재 repo의 HEAD에 대한 GitReference를 반환합니다.

source
head(pkg::AbstractString) -> String

현재 pkg 레포의 HEAD GitHash를 문자열로 반환합니다.

source
LibGit2.head!Function
LibGit2.head!(repo::GitRepo, ref::GitReference) -> GitReference

repo의 HEAD를 ref가 가리키는 객체로 설정합니다.

source
LibGit2.head_oidFunction
LibGit2.head_oid(repo::GitRepo) -> GitHash

git 저장소 repo의 현재 HEAD의 객체 ID를 조회합니다.

source
LibGit2.headnameFunction
LibGit2.headname(repo::GitRepo)

git 저장소 repo의 현재 HEAD 이름을 조회합니다. 만약 repo가 현재 분리(detached) 상태라면, 분리된 HEAD의 이름을 반환합니다.

source
LibGit2.initFunction
LibGit2.init(path::AbstractString, bare::Bool=false) -> GitRepo

path에 새 git 저장소를 엽니다. barefalse인 경우 작업 트리가 path/.git에 생성됩니다. baretrue인 경우 작업 디렉토리가 생성되지 않습니다.

source
LibGit2.is_ancestor_ofFunction
is_ancestor_of(a::AbstractString, b::AbstractString, repo::GitRepo) -> Bool

ab의 조상인 경우 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
source
LibGit2.isbinaryFunction
isbinary(blob::GitBlob) -> Bool

파일이 이진 파일인지 추측하기 위해 휴리스틱을 사용합니다: NULL 바이트를 검색하고 처음 8000 바이트에서 인쇄 가능한 문자와 인쇄 불가능한 문자의 합리적인 비율을 찾습니다.

source
LibGit2.iscommitFunction
iscommit(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
source
LibGit2.isdiffFunction
LibGit2.isdiff(repo::GitRepo, treeish::AbstractString, pathspecs::AbstractString=""; cached::Bool=false)

treeish로 지정된 트리와 작업 트리의 추적 파일(만약 cached=false인 경우) 또는 인덱스(만약 cached=true인 경우) 간의 차이가 있는지 확인합니다. pathspecs는 diff에 대한 옵션의 사양입니다.

예제

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>]와 동등합니다.

source
LibGit2.isdirtyFunction
LibGit2.isdirty(repo::GitRepo, pathspecs::AbstractString=""; cached::Bool=false) -> Bool

작업 트리에서 추적된 파일에 변경 사항이 있는지 확인합니다(만약 cached=false인 경우) 또는 인덱스에서(만약 cached=true인 경우). pathspecs는 diff에 대한 옵션의 사양입니다.

예제

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>]와 동등합니다.

source
LibGit2.isorphanFunction
LibGit2.isorphan(repo::GitRepo)

현재 브랜치가 "고아" 브랜치인지 확인합니다. 즉, 커밋이 없습니다. 이 브랜치에 대한 첫 번째 커밋은 부모가 없습니다.

source
LibGit2.issetFunction
isset(val::Integer, flag::Integer)

val의 비트가 flag에 의해 인덱스된 값이 설정되어 있는지(1) 또는 설정되어 있지 않은지(0) 테스트합니다.

source
LibGit2.iszeroFunction
iszero(id::GitHash) -> Bool

주어진 GitHash의 모든 16진수 자리가 0인지 여부를 결정합니다.

source
LibGit2.lookup_branchFunction
lookup_branch(repo::GitRepo, branch_name::AbstractString, remote::Bool=false) -> Union{GitReference, Nothing}

지정된 branch_name에 해당하는 브랜치가 repo 리포지토리에 존재하는지 확인합니다. remotetrue인 경우, repo는 원격 git 리포지토리로 간주됩니다. 그렇지 않으면 로컬 파일 시스템의 일부입니다.

요청된 브랜치가 존재하는 경우 GitReference를 반환하고, 존재하지 않는 경우 nothing을 반환합니다.

source
LibGit2.mapFunction
LibGit2.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: oid1..oid2 형식의 GitHash 범위. 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.mapGitRevWalker를 사용하여 각 커밋을 방문하고 해당 GitHash를 찾습니다.

source
LibGit2.mirror_callbackFunction

미러 콜백 함수

함수는 원격 참조에 대해 +refs/*:refs/* refspecs와 mirror 플래그를 설정합니다.

source
LibGit2.messageFunction
message(c::GitCommit, raw::Bool=false)

커밋 c에서 변경 사항을 설명하는 커밋 메시지를 반환합니다. rawfalse인 경우, 약간 "정리된" 메시지를 반환합니다(선행 개행이 제거됨). rawtrue인 경우, 메시지는 그러한 개행이 제거되지 않습니다.

source
LibGit2.merge_analysisFunction
merge_analysis(repo::GitRepo, anns::Vector{GitAnnotated}) -> analysis, preference

주석이 달린 브랜치 팁 anns가 가리키는 브랜치에서 분석을 실행하고, 어떤 상황에서 병합이 가능한지 결정합니다. 예를 들어, anns[1]이 단순히 anns[2]의 조상인 경우, merge_analysis는 패스트 포워드 병합이 가능하다고 보고할 것입니다.

두 개의 출력을 반환합니다: analysispreference. 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 구성에 따라 제어할 수 있습니다.
source
LibGit2.nameFunction
LibGit2.name(ref::GitReference)

ref의 전체 이름을 반환합니다.

source
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"
source
LibGit2.name(tag::GitTag)

tag의 이름 (예: "v0.5").

source
LibGit2.need_updateFunction
need_update(repo::GitRepo)

git update-index와 동등합니다. repo가 업데이트가 필요하면 true를 반환합니다.

source
LibGit2.objtypeFunction
objtype(obj_type::Consts.OBJECT)

열거형 값에 해당하는 유형을 반환합니다.

source
LibGit2.pathFunction
LibGit2.path(repo::GitRepo)

저장소 repo의 기본 파일 경로를 반환합니다.

  • 일반 저장소의 경우, 이는 일반적으로 ".git" 디렉토리의 상위 디렉토리가 됩니다 (참고: 이는 작업 디렉토리와 다를 수 있으며, 자세한 내용은 workdir을 참조하십시오).
  • 베어 저장소의 경우, 이는 "git" 파일의 위치입니다.

또한 gitdir, workdir를 참조하십시오.

source
LibGit2.peelFunction
peel([T,] ref::GitReference)

ref를 재귀적으로 벗겨서 타입 T의 객체를 얻습니다. T가 제공되지 않으면, refGitTag가 아닌 객체가 얻어질 때까지 벗겨집니다.

  • GitTag는 참조하는 객체로 벗겨집니다.
  • GitCommitGitTree로 벗겨집니다.
Note

주석이 달린 태그만 GitTag 객체로 벗겨질 수 있습니다. 경량 태그(기본값)는 refs/tags/ 아래의 참조로, 직접 GitCommit 객체를 가리킵니다.

source
peel([T,] obj::GitObject)

obj를 재귀적으로 벗겨서 T 유형의 객체를 얻습니다. T가 제공되지 않으면 obj는 유형이 변경될 때까지 벗겨집니다.

  • GitTag는 참조하는 객체로 벗겨집니다.
  • GitCommitGitTree로 벗겨집니다.
source
LibGit2.posixpathFunction
LibGit2.posixpath(path)

경로 문자열 path를 POSIX 구분자를 사용하도록 표준화합니다.

source
LibGit2.pushFunction
push(rmt::GitRemote, refspecs; force::Bool=false, options::PushOptions=PushOptions())

지정된 rmt 원격 git 저장소에 푸시하며, refspecs를 사용하여 푸시할 원격 브랜치를 결정합니다. 키워드 인자는 다음과 같습니다:

  • force: true인 경우, 충돌을 무시하고 강제 푸시가 발생합니다.
  • options: 푸시에 대한 옵션을 결정하며, 예를 들어 사용할 프록시 헤더를 설정합니다. 더 많은 정보는 PushOptions를 참조하세요.
Note

푸시 refspecs에 대한 정보를 두 가지 다른 방법으로 추가할 수 있습니다: 저장소의 GitConfig에서 옵션을 설정하거나(push.default를 키로 사용) add_push!를 호출하는 것입니다. 그렇지 않으면 push 호출에서 푸시 refspec을 명시적으로 지정해야 효과가 있습니다. 예를 들어: LibGit2.push(repo, refspecs=["refs/heads/master"]).

source
push(repo::GitRepo; kwargs...)

repo의 업스트림에 업데이트를 푸시합니다.

키워드 인자는 다음과 같습니다:

  • remote::AbstractString="origin": 푸시할 업스트림 원격의 이름입니다.
  • remoteurl::AbstractString="": remote의 URL입니다.
  • refspecs=AbstractString[]: 푸시의 속성을 결정합니다.
  • force::Bool=false: 푸시가 강제 푸시인지, 즉 원격 브랜치를 덮어쓸지를 결정합니다.
  • credentials=nothing: 개인 remote에 대해 인증할 때 자격 증명 및/또는 설정을 제공합니다.
  • callbacks=Callbacks(): 사용자가 제공한 콜백 및 페이로드입니다.

git push [<remoteurl>|<repo>] [<refspecs>]와 동등합니다.

source
LibGit2.push!Method
LibGit2.push!(w::GitRevWalker, cid::GitHash)

GitRevWalker walker를 커밋 cid에서 시작합니다. 이 함수는 특정 연도 이후의 모든 커밋에 함수를 적용하는 데 사용할 수 있으며, 해당 연도의 첫 번째 커밋을 cid로 전달한 다음 결과로 얻은 wLibGit2.map에 전달하면 됩니다.

source
LibGit2.push_head!Function
LibGit2.push_head!(w::GitRevWalker)

HEAD 커밋과 그 조상들을 GitRevWalker w에 푸시합니다. 이렇게 하면 HEAD와 모든 조상 커밋이 탐색 중에 만날 수 있도록 보장됩니다.

source
LibGit2.push_refspecsFunction
push_refspecs(rmt::GitRemote) -> Vector{String}

지정된 rmt에 대한 push refspecs를 가져옵니다. 이 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"]
source
LibGit2.rawFunction
raw(id::GitHash) -> Vector{UInt8}

GitHash의 원시 바이트를 길이 20의 벡터로 가져옵니다.

source
LibGit2.read_tree!Function
LibGit2.read_tree!(idx::GitIndex, tree::GitTree)
LibGit2.read_tree!(idx::GitIndex, treehash::AbstractGitHash)

트리 tree (또는 idx가 소유한 리포지토리에서 treehash가 가리키는 트리)를 인덱스 idx로 읽어옵니다. 현재 인덱스 내용은 대체됩니다.

source
LibGit2.rebase!Function
LibGit2.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
source
LibGit2.ref_listFunction
LibGit2.ref_list(repo::GitRepo) -> Vector{String}

repo 저장소의 모든 참조 이름 목록을 가져옵니다.

source
LibGit2.reftypeFunction
LibGit2.reftype(ref::GitReference) -> Cint

ref의 유형에 해당하는 Cint를 반환합니다:

  • 참조가 유효하지 않으면 0
  • 참조가 객체 ID이면 1
  • 참조가 상징적이면 2
source
LibGit2.remotesFunction
LibGit2.remotes(repo::GitRepo)

repo의 원격 이름의 벡터를 반환합니다.

source
LibGit2.remove!Function
remove!(repo::GitRepo, files::AbstractString...)
remove!(idx::GitIndex, files::AbstractString...)

repo의 인덱스(또는 repo의 인덱스)에서 files로 지정된 경로의 모든 파일을 제거합니다.

source
LibGit2.resetFunction
reset(val::Integer, flag::Integer)

flag에 의해 인덱스된 val의 비트를 해제하고, 이를 0으로 반환합니다.

source
LibGit2.reset!Function
reset!(payload, [config]) -> CredentialPayload

payload 상태를 초기 값으로 되돌려 자격 증명 콜백 내에서 다시 사용할 수 있도록 합니다. config가 제공되면 구성도 업데이트됩니다.

source

대상 커밋 트리에서 pathspecs에 의해 결정된 일부 항목을 인덱스에서 업데이트합니다.

source

지정된 커밋 oid로 현재 헤드를 설정하고 선택적으로 인덱스와 작업 트리를 일치하도록 재설정합니다.

source

git reset [<committish>] [–] <pathspecs>...

source
reset!(repo::GitRepo, id::GitHash, mode::Cint=Consts.RESET_MIXED)

저장소 repoid의 상태로 재설정하며, mode에 의해 설정된 세 가지 모드 중 하나를 사용합니다:

  1. Consts.RESET_SOFT - HEAD를 id로 이동합니다.
  2. Consts.RESET_MIXED - 기본값, HEAD를 id로 이동하고 인덱스를 id로 재설정합니다.
  3. Consts.RESET_HARD - HEAD를 id로 이동하고 인덱스를 id로 재설정하며 모든 작업 변경 사항을 버립니다.

예제

# 변경 사항 가져오기
LibGit2.fetch(repo)
isfile(joinpath(repo_path, our_file)) # false가 될 것입니다.

# 변경 사항을 패스트 포워드 병합
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)
source
LibGit2.restoreFunction
restore(s::State, repo::GitRepo)

저장소 repo를 이전 State s로 복원합니다. 예를 들어, 병합 시도 이전의 브랜치 HEAD로 복원할 수 있습니다. ssnapshot 함수를 사용하여 생성할 수 있습니다.

source
LibGit2.revcountFunction
LibGit2.revcount(repo::GitRepo, commit1::AbstractString, commit2::AbstractString)

commit1commit2 사이의 수정 수를 나열합니다 (문자열 형식의 committish OID). commit1commit2가 서로 다른 브랜치에 있을 수 있으므로, revcount는 "왼쪽-오른쪽" 수정 목록(및 수)을 수행하여 각각 왼쪽 및 오른쪽 커밋 수를 포함하는 Int의 튜플을 반환합니다. 왼쪽(또는 오른쪽) 커밋은 커밋이 트리의 대칭 차이의 어느 쪽에서 도달 가능한지를 나타냅니다.

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)을 반환합니다.

source
LibGit2.set_remote_urlFunction
set_remote_url(repo::GitRepo, remote_name, url)
set_remote_url(repo::String, remote_name, url)

remote_name에 대한 fetch 및 push urlGitRepo 또는 path에 위치한 git 저장소에 설정합니다. 일반적으로 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")
source
LibGit2.shortnameFunction
LibGit2.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"
source
LibGit2.snapshotFunction
snapshot(repo::GitRepo) -> State

현재 저장소 repo의 상태를 스냅샷으로 저장하여 현재 HEAD, 인덱스 및 커밋되지 않은 작업을 저장합니다. 출력 State는 나중에 restore 호출 시 스냅샷된 상태로 저장소를 되돌리는 데 사용할 수 있습니다.

source
LibGit2.split_cfg_entryFunction
LibGit2.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 구문 문서를 참조하세요.

source
LibGit2.statusFunction
LibGit2.status(repo::GitRepo, path::String) -> Union{Cuint, Cvoid}

repo에 있는 path의 파일 상태를 조회합니다. 예를 들어, 이 기능은 path의 파일이 수정되었는지 확인하고 스테이징 및 커밋이 필요한지 확인하는 데 사용할 수 있습니다.

source
LibGit2.stageFunction
stage(ie::IndexEntry) -> Cint

ie의 단계 번호를 가져옵니다. 단계 번호 0은 작업 트리의 현재 상태를 나타내지만, 병합 충돌의 경우 다른 번호를 사용할 수 있습니다. 이러한 경우, IndexEntry의 다양한 단계 번호는 파일의 현재 상태가 충돌의 어느 쪽에 속하는지를 설명합니다. 단계 0은 시도된 병합 이전의 상태이며, 단계 1은 로컬에서 변경된 사항을 나타내고, 단계 2 및 그 이상은 다른 브랜치의 변경 사항을 나타냅니다(예를 들어, 다중 브랜치 "문어" 병합의 경우 단계 2, 3, 및 4가 사용될 수 있습니다).

source
LibGit2.tag_createFunction
LibGit2.tag_create(repo::GitRepo, tag::AbstractString, commit; kwargs...)

저장소 repo에서 커밋 commit에 새로운 git 태그 tag (예: "v0.5")를 생성합니다.

키워드 인자는 다음과 같습니다:

  • msg::AbstractString="": 태그에 대한 메시지.
  • force::Bool=false: true인 경우, 기존 참조가 덮어씌워집니다.
  • sig::Signature=Signature(repo): 태그 작성자의 서명.
source
LibGit2.tag_deleteFunction
LibGit2.tag_delete(repo::GitRepo, tag::AbstractString)

저장소 repo에서 git 태그 tag를 제거합니다.

source
LibGit2.tag_listFunction
LibGit2.tag_list(repo::GitRepo) -> Vector{String}

git 저장소 repo의 모든 태그 목록을 가져옵니다.

source
LibGit2.toggleFunction
toggle(val::Integer, flag::Integer)

flag에 의해 인덱스된 val의 비트를 뒤집습니다. 즉, 비트가 0이면 토글 후 1이 되고, 그 반대도 마찬가지입니다.

source
LibGit2.transactFunction
transact(f::Function, repo::GitRepo)

함수 f를 git 저장소 repo에 적용하며, f를 적용하기 전에 snapshot를 찍습니다. f 내에서 오류가 발생하면, restore를 사용하여 repo를 스냅샷 상태로 되돌립니다. 발생한 오류는 다시 발생하지만, repo의 상태는 손상되지 않습니다.

source
LibGit2.treewalkFunction
treewalk(f, tree::GitTree, post::Bool=false)

tree와 그 하위 트리의 항목을 후위 또는 전위 순서로 탐색합니다. 전위 순서는 루트에서 시작하여 가장 왼쪽 하위 트리를 탐색한 다음(그리고 그 하위 트리의 가장 왼쪽 하위 트리를 재귀적으로 탐색한 다음) 하위 트리를 통해 오른쪽으로 이동하는 것을 의미합니다. 후위 순서는 가장 왼쪽 하위 트리의 바닥에서 시작하여 그 위로 올라가고, 다음 오른쪽 하위 트리를 탐색한 다음(다시 바닥에서 시작) 마지막으로 트리 루트를 방문하는 것을 의미합니다.

함수 매개변수 f는 다음과 같은 시그니처를 가져야 합니다:

(String, GitTreeEntry) -> Cint

f에서 반환된 음수 값은 트리 탐색을 중지합니다. 양수 값은 postfalse인 경우 항목이 건너뛰어진다는 것을 의미합니다.

source
LibGit2.upstreamFunction
upstream(ref::GitReference) -> Union{GitReference, Nothing}

ref를 포함하는 브랜치에 지정된 업스트림 브랜치가 있는지 확인합니다.

업스트림 브랜치가 존재하면 GitReference를 반환하고, 요청한 브랜치에 업스트림 대응 브랜치가 없으면 nothing을 반환합니다.

source
LibGit2.update!Function
update!(repo::GitRepo, files::AbstractString...)
update!(idx::GitIndex, files::AbstractString...)

files로 지정된 경로의 모든 파일을 인덱스 idx(또는 repo의 인덱스)에서 업데이트합니다. 인덱스의 각 파일 상태를 디스크의 현재 상태와 일치시켜, 디스크에서 제거된 경우 제거하고, 객체 데이터베이스에서 해당 항목을 업데이트합니다.

source
LibGit2.urlFunction
url(rmt::GitRemote)

원격 git 저장소의 fetch 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"
source
LibGit2.withFunction
with(f::Function, obj)

리소스 관리 도우미 함수. fobj에 적용하며, f가 성공적으로 반환되거나 오류를 발생시킨 후 obj에서 close를 호출하는 것을 보장합니다. 할당된 git 리소스가 더 이상 필요하지 않을 때 즉시 정리되도록 보장합니다.

source
LibGit2.with_warnFunction
with_warn(f::Function, ::Type{T}, args...)

리소스 관리 도우미 함수. args로부터 T 유형의 인스턴스를 먼저 구성한 후 fargs에 적용합니다. f가 성공적으로 반환되거나 오류를 발생시킨 후 결과 객체에서 close를 호출하도록 보장합니다. 할당된 git 리소스가 더 이상 필요하지 않을 때 즉시 정리되도록 보장합니다. f에서 오류가 발생하면 오류를 포함하는 경고가 표시됩니다.

source
LibGit2.workdirFunction
LibGit2.workdir(repo::GitRepo)

repo의 작업 디렉토리 위치를 반환합니다. 이는 베어 리포지토리에서는 오류를 발생시킵니다.

Note

일반적으로 이는 gitdir(repo)의 상위 디렉토리가 되지만, 경우에 따라 다를 수 있습니다: 예를 들어 core.worktree 구성 변수나 GIT_WORK_TREE 환경 변수가 설정된 경우입니다.

또한 gitdir, path를 참조하세요.

source
LibGit2.GitObjectMethod
(::Type{T})(te::GitTreeEntry) where T<:GitObject

te가 참조하는 git 객체를 가져와서 그것의 실제 타입(예: entrytype에서 보여줄 타입)으로 반환합니다. 예를 들어 GitBlob 또는 GitTag가 될 수 있습니다.

예시

tree = LibGit2.GitTree(repo, "HEAD^{tree}")
tree_entry = tree[1]
blob = LibGit2.GitBlob(tree_entry)
source
LibGit2.isfilledFunction
isfilled(cred::AbstractCredential) -> Bool

인증에 사용하기 위해 자격 증명이 준비되었는지 확인합니다.

source
LibGit2.CredentialPayloadType
LibGit2.CredentialPayload

같은 URL에 대한 자격 증명 콜백의 여러 호출 간 상태를 유지합니다. CredentialPayload 인스턴스는 다른 URL과 함께 사용될 때마다 reset! 되어야 합니다.

source
LibGit2.approveFunction
approve(payload::CredentialPayload; shred::Bool=true) -> Nothing

향후 인증에서 재사용하기 위해 payload 자격 증명을 저장합니다. 인증이 성공했을 때만 호출해야 합니다.

shred 키워드는 페이로드 자격 증명 필드의 민감한 정보를 파기할지 여부를 제어합니다. 테스트 중에는 false로 설정해야 합니다.

source
LibGit2.rejectFunction
reject(payload::CredentialPayload; shred::Bool=true) -> Nothing

향후 인증에서 재사용되지 않도록 payload 자격 증명을 폐기합니다. 인증이 실패했을 때만 호출해야 합니다.

shred 키워드는 페이로드 자격 증명 필드의 민감한 정보를 파괴할지 여부를 제어합니다. 테스트 중에는 false로 설정해야 합니다.

source
LibGit2.Consts.GIT_CONFIGType

구성 파일의 우선 순위 수준.

이러한 우선 순위 수준은 git에서 구성 항목을 검색할 때 자연스러운 상승 논리(높은 것에서 낮은 것)와 일치합니다.

  • CONFIG_LEVEL_DEFAULT - 사용 가능한 경우 전역, XDG 및 시스템 구성 파일을 엽니다.
  • CONFIG_LEVEL_PROGRAMDATA - 휴대용 git과의 호환성을 위해 Windows에서 시스템 전체
  • CONFIG_LEVEL_SYSTEM - 시스템 전체 구성 파일; Linux 시스템의 경우 /etc/gitconfig
  • CONFIG_LEVEL_XDG - XDG 호환 구성 파일; 일반적으로 ~/.config/git/config
  • CONFIG_LEVEL_GLOBAL - 사용자별 구성 파일(전역 구성 파일이라고도 함); 일반적으로 ~/.gitconfig
  • CONFIG_LEVEL_LOCAL - 리포지토리 특정 구성 파일; 비베어 리포지토리의 경우 $WORK_DIR/.git/config
  • CONFIG_LEVEL_APP - 애플리케이션 특정 구성 파일; 애플리케이션에 의해 자유롭게 정의됨
  • CONFIG_HIGHEST_LEVEL - 사용 가능한 가장 높은 수준의 구성 파일을 나타냅니다(즉, 실제로 로드된 가장 구체적인 구성 파일)
source