LibGit2
The LibGit2 모듈은 libgit2에 대한 바인딩을 제공하는 포터블 C 라이브러리로, Git 버전 관리 시스템의 핵심 기능을 구현합니다. 이 바인딩은 현재 Julia의 패키지 관리자를 지원하는 데 사용되고 있습니다. 이 모듈은 결국 별도의 패키지로 이동될 것으로 예상됩니다.
Functionality
이 문서의 일부는 libgit2 API에 대한 사전 지식이 있다고 가정합니다. 여기에서 언급된 일부 객체 및 메서드에 대한 자세한 정보는 상위 문서 libgit2 API reference를 참조하십시오.
LibGit2.Buffer — TypeLibGit2.Bufferlibgit2에서 데이터를 내보내기 위한 데이터 버퍼입니다. git_buf 구조체와 일치합니다.
LibGit2에서 데이터를 가져올 때 일반적인 사용 예는 다음과 같습니다:
buf_ref = Ref(Buffer())
@check ccall(..., (Ptr{Buffer},), buf_ref)
# buf_ref에 대한 작업
free(buf_ref)특히, Ref 객체에 대해 이후에 LibGit2.free를 호출해야 한다는 점에 유의하십시오.
LibGit2.CheckoutOptions — TypeLibGit2.CheckoutOptionsgit_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: 성능 콜백에 대한 페이로드입니다.
LibGit2.CloneOptions — TypeLibGit2.CloneOptionsgit_clone_options 구조체와 일치합니다.
필드는 다음을 나타냅니다:
version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전. 현재는 항상1입니다.checkout_opts: 클론의 일환으로 원격 체크아웃을 수행하기 위한 옵션입니다.fetch_opts: 클론의 일환으로 원격의 사전 체크아웃 페치를 수행하기 위한 옵션입니다.bare:0이면 전체 원격 저장소를 클론합니다. 0이 아닌 경우, 저장소에 소스 파일의 로컬 복사본이 없는 베어 클론을 수행하며,gitdir와workdir가 동일합니다.localclone: 로컬 객체 데이터베이스를 클론할지 또는 페치를 수행할지를 나타내는 플래그입니다. 기본값은 git이 결정하도록 하는 것입니다. 로컬 클론에 대해 git 인식 전송을 사용하지 않지만,file://로 시작하는 URL에 대해서는 사용합니다.checkout_branch: 체크아웃할 브랜치의 이름입니다. 빈 문자열인 경우, 원격의 기본 브랜치가 체크아웃됩니다.repository_cb: 클론이 생성될 새로운 저장소를 만들기 위해 사용될 선택적 콜백입니다.repository_cb_payload: 저장소 콜백에 대한 페이로드입니다.remote_cb: 클론을 만들기 전에GitRemote를 생성하는 데 사용되는 선택적 콜백입니다.remote_cb_payload: 원격 콜백에 대한 페이로드입니다.
LibGit2.DescribeOptions — TypeLibGit2.DescribeOptionsgit_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.DescribeFormatOptionsgit_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: 델타 및 양쪽 객체에 대한 플래그. 파일을 이진/텍스트로 처리할지, 델타의 양쪽에 존재하는지, 객체 ID가 올바른지 여부를 결정합니다.similarity: 파일이 이름이 변경되었거나 복사되었는지를 나타내는 데 사용됩니다.nfiles: 델타에 있는 파일 수(예: 델타가 서브모듈 커밋 ID에서 실행된 경우, 하나 이상의 파일이 포함될 수 있습니다).old_file: 변경 사항 이전의 파일에 대한 정보를 포함하는DiffFile.new_file: 변경 사항 이후의 파일에 대한 정보를 포함하는DiffFile.
LibGit2.DiffFile — TypeLibGit2.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)와 같습니다.
LibGit2.DiffOptionsStruct — TypeLibGit2.DiffOptionsStructgit_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_cb및progress_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"입니다.
LibGit2.FetchHead — TypeLibGit2.FetchHead가져오기 중 HEAD에 대한 정보를 포함하며, 가져온 브랜치의 이름과 URL, HEAD의 oid, 가져온 HEAD가 로컬에 병합되었는지 여부를 포함합니다.
필드는 다음을 나타냅니다:
name: 가져오기 헤드의 로컬 참조 데이터베이스에서의 이름, 예를 들어,"refs/heads/master".url: 가져오기 헤드의 URL.oid: 가져오기 헤드의 끝 부분의GitHash.ismerge: 원격의 변경 사항이 로컬 복사본에 병합되었는지 여부를 나타내는 부울 플래그입니다.true인 경우, 로컬 복사본은 원격 가져오기 헤드와 최신 상태입니다.
LibGit2.FetchOptions — TypeLibGit2.FetchOptionsgit_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())path에 있는 파일에 대한 GitBlame 객체를 생성하며, repo의 기록에서 얻은 변경 정보를 사용합니다. GitBlame 객체는 누가 파일의 어떤 부분을 언제, 어떻게 변경했는지를 기록합니다. options는 파일의 내용을 분리하는 방법과 조사할 커밋을 제어합니다 - 더 많은 정보는 BlameOptions를 참조하세요.
LibGit2.GitBlob — TypeGitBlob(repo::GitRepo, hash::AbstractGitHash)
GitBlob(repo::GitRepo, spec::AbstractString)hash/spec로 지정된 repo에서 GitBlob 객체를 반환합니다.
hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
LibGit2.GitCommit — TypeGitCommit(repo::GitRepo, hash::AbstractGitHash)
GitCommit(repo::GitRepo, spec::AbstractString)hash/spec로 지정된 repo에서 GitCommit 객체를 반환합니다.
hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하세요.
LibGit2.GitConfig — TypeGitConfig(path::AbstractString, level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP, force::Bool=false)path에 있는 파일에서 구성 정보를 로드하여 새로운 GitConfig를 생성합니다. level, repo 및 force 옵션에 대한 자세한 내용은 addfile를 참조하십시오.
GitConfig(repo::GitRepo)저장된 git 저장소 repo의 구성을 가져옵니다. repo에 특정 구성 파일이 설정되어 있지 않은 경우 기본 git 구성이 사용됩니다.
GitConfig(level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_DEFAULT)기본 git 구성을 가져오려면 전역 및 시스템 구성 파일을 우선 순위가 있는 구성으로 로드합니다. 이는 특정 git 리포지토리 외부에서 기본 구성 옵션에 접근하는 데 사용할 수 있습니다.
LibGit2.GitHash — TypeGitHashgit 객체 식별자로, sha-1 해시를 기반으로 합니다. 이는 저장소에서 GitObject를 식별하는 데 사용되는 20바이트 문자열(40개의 16진수 숫자)입니다.
LibGit2.GitObject — TypeGitObject(repo::GitRepo, hash::AbstractGitHash)
GitObject(repo::GitRepo, spec::AbstractString)지정된 객체(GitCommit, GitBlob, GitTree 또는 GitTag)를 hash/spec으로 지정된 repo에서 반환합니다.
hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
LibGit2.GitRemote — TypeGitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString) -> GitRemote원격 git 저장소를 이름과 URL을 사용하여 조회합니다. 기본 가져오기 refspec을 사용합니다.
예제
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원격 git 저장소를 저장소의 이름과 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) -> GitRemoteURL만 사용하여 원격 git 저장소를 조회합니다. 이름은 사용하지 않습니다.
예제
repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemoteAnon(repo, repo_url)LibGit2.GitRepo — TypeLibGit2.GitRepo(path::AbstractString)path에 있는 git 저장소를 엽니다.
LibGit2.GitRepoExt — FunctionLibGit2.GitRepoExt(path::AbstractString, flags::Cuint = Cuint(Consts.REPOSITORY_OPEN_DEFAULT))path에서 git 저장소를 열고 확장된 제어를 제공합니다 (예를 들어, 현재 사용자가 path를 읽기 위해 특별 접근 그룹의 구성원이어야 하는 경우).
LibGit2.GitRevWalker — TypeGitRevWalker(repo::GitRepo)GitRevWalker는 git 저장소 repo의 수정 (즉, 커밋)을 탐색합니다. 이는 저장소의 커밋 모음이며, 반복(iteration) 및 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)고유할 때 git 객체를 식별하는 데 사용할 수 있는 축약된 git 객체 식별자로, hash의 처음 len 개 16진수 숫자로 구성되며 (나머지 숫자는 무시됨).
LibGit2.GitSignature — TypeLibGit2.GitSignature이것은 git_signature 객체에 대한 포인터를 감싸는 Julia 래퍼입니다.
LibGit2.GitStatus — TypeLibGit2.GitStatus(repo::GitRepo; status_opts=StatusOptions())git 저장소 repo의 각 파일 상태에 대한 정보를 수집합니다(예: 파일이 수정되었는지, 스테이징되었는지 등). status_opts는 추적되지 않은 파일을 볼지 여부나 서브모듈을 포함할지 여부와 같은 다양한 옵션을 설정하는 데 사용할 수 있습니다. 자세한 내용은 StatusOptions를 참조하십시오.
LibGit2.GitTag — TypeGitTag(repo::GitRepo, hash::AbstractGitHash)
GitTag(repo::GitRepo, spec::AbstractString)hash/spec로 지정된 repo에서 GitTag 객체를 반환합니다.
hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
LibGit2.GitTree — TypeGitTree(repo::GitRepo, hash::AbstractGitHash)
GitTree(repo::GitRepo, spec::AbstractString)hash/spec로 지정된 repo에서 GitTree 객체를 반환합니다.
hash는 전체(GitHash) 또는 부분(GitShortHash) 해시입니다.spec은 텍스트 사양입니다: 전체 목록은 git 문서를 참조하십시오.
LibGit2.IndexEntry — TypeLibGit2.IndexEntry인덱스의 파일 항목에 대한 메모리 내 표현입니다. git_index_entry 구조체와 일치합니다.
LibGit2.IndexTime — TypeLibGit2.IndexTimegit_index_time 구조체와 일치합니다.
LibGit2.BlameOptions — TypeLibGit2.BlameOptionsgit_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, 즉 파일의 마지막 줄을 의미합니다.
LibGit2.MergeOptions — TypeLibGit2.MergeOptionsgit_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: 파일 병합에 대한 지침입니다.
LibGit2.ProxyOptions — TypeLibGit2.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)LibGit2.PushOptions — TypeLibGit2.PushOptionsgit_push_options 구조체와 일치합니다.
필드는 다음을 나타냅니다:
version: 나중에 변경될 경우를 대비하여 사용 중인 구조체의 버전입니다. 현재는 항상1입니다.parallelism: 패킷 파일을 생성해야 하는 경우, 이 변수는 패킷 빌더에 의해 생성될 작업자 스레드의 수를 설정합니다.0인 경우, 패킷 빌더는 사용할 스레드 수를 자동으로 설정합니다. 기본값은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.RebaseOptionsgit_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.StatusEntryHEAD에 존재하는 파일과 인덱스 간의 차이점과 인덱스와 작업 디렉토리 간의 차이점을 제공합니다. git_status_entry 구조체와 일치합니다.
필드는 다음을 나타냅니다:
LibGit2.StatusOptions — TypeLibGit2.StatusOptionsgit_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.StrArrayStructLibGit2의 문자열 배열 표현입니다. 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를 호출할 필요가 없다는 점에 유의하십시오.
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)현재 GitConfig cfg에 path에 위치한 기존 git 구성 파일을 추가합니다. 파일이 존재하지 않으면 생성됩니다.
level은 git 구성 우선 순위 수준을 설정하며, 이는
Consts.GIT_CONFIG에 의해 결정됩니다.
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)지정된 rmt에 대한 fetch refspec을 추가합니다. 이 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)지정된 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"]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)커밋 c의 작성자의 Signature를 반환합니다. 작성자는 관련 파일에 변경을 가한 사람입니다. 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 저장소에서 새로운 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)LibGit2.checkout! — Functioncheckout!(repo::GitRepo, commit::AbstractString=""; force::Bool=true)git checkout [-f] --detach <commit>와 동등합니다. repo에서 git 커밋 commit(문자열 형식의 GitHash)을 체크아웃합니다. 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 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")LibGit2.commit — Functioncommit(repo::GitRepo, msg::AbstractString; kwargs...) -> GitHashgit_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 트리로, 그 조상 및 다른 역사와의 관계를 보여줍니다.tree는repo에 속해야 합니다.parent_ids::Vector{GitHash}=GitHash[]는 새 커밋의 부모 커밋으로 사용할GitHash커밋 목록이며, 비어 있을 수 있습니다. 커밋은 예를 들어 병합 커밋인 경우 여러 부모를 가질 수 있습니다.
LibGit2.commit(rb::GitRebase, sig::GitSignature)현재 패치를 리베이스 rb에 커밋하며, sig를 커미터로 사용합니다. 커밋이 이미 적용된 경우에는 조용히 진행됩니다.
LibGit2.committer — Functioncommitter(c::GitCommit)커밋 c의 커미터의 Signature를 반환합니다. 커미터는 원래 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를 사용하여 저장소의 역사에서 모든 커밋을 "걷는" 동안, 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)
endLibGit2.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(...) -> CintLibGit2 자격 증명 콜백 함수로, 연결 프로토콜에 따라 다양한 자격 증명 획득 기능을 제공합니다. payload_ptr는 상태 및 설정을 추적할 LibGit2.CredentialPayload 객체를 포함해야 합니다.
allowed_types는 어떤 인증 방법을 시도해야 하는지를 지정하는 LibGit2.Consts.GIT_CREDTYPE 값의 비트 마스크를 포함합니다.
자격 증명 인증은 다음 순서로 수행됩니다(지원되는 경우):
- SSH 에이전트
- SSH 개인/공개 키 쌍
- 사용자 이름/비밀번호 일반 텍스트
사용자가 자격 증명 프롬프트가 표시되면 ^D를 입력하여 프롬프트를 중단할 수 있습니다(컨트롤 키와 d 키를 함께 누름).
참고: libgit2 인증 절차의 특성으로 인해 인증이 실패할 경우, 이 함수는 인증이 성공했는지 여부에 대한 아무런 표시 없이 다시 호출됩니다. 동일한 잘못된 자격 증명을 반복적으로 사용하여 무한 루프에 빠지지 않도록 하기 위해, 우리는 페이로드를 사용하여 상태를 추적할 것입니다.
추가 세부정보는 서버에 대한 인증에 대한 LibGit2 가이드를 참조하십시오.
LibGit2.credentials_cb — FunctionC 함수 포인터 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}repo라는 git 저장소에서 branch1과 branch2 사이에 변경된 파일을 보여줍니다.
키워드 인자는 다음과 같습니다:
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>와 동등합니다.
LibGit2.entryid — Functionentryid(te::GitTreeEntry)te가 참조하는 객체의 GitHash를 반환합니다.
LibGit2.entrytype — Functionentrytype(te::GitTreeEntry)te가 참조하는 객체의 유형을 반환합니다. 결과는 objtype가 반환하는 유형 중 하나가 될 것입니다. 예를 들어, GitTree 또는 GitBlob입니다.
LibGit2.fetch — Functionfetch(rmt::GitRemote, refspecs; options::FetchOptions=FetchOptions(), msg="")지정된 rmt 원격 git 저장소에서 가져오고, refspecs를 사용하여 가져올 원격 브랜치를 결정합니다. 키워드 인자는 다음과 같습니다:
options: 가져오기 옵션을 결정합니다. 예를 들어, 이후에 가지치기를 할지 여부입니다. 더 많은 정보는FetchOptions를 참조하세요.msg: reflogs에 삽입할 메시지입니다.
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>]와 동등합니다.
LibGit2.fetchheads — Functionfetchheads(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
falseLibGit2.fetch_refspecs — Functionfetch_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/*"]LibGit2.fetchhead_foreach_cb — FunctionC 함수 포인터 fetchhead_foreach_callback
LibGit2.merge_base — Functionmerge_base(repo::GitRepo, one::AbstractString, two::AbstractString) -> GitHashone과 two 커밋 간의 병합 기준(공통 조상)을 찾습니다. one과 two는 모두 문자열 형식일 수 있습니다. 병합 기준의 GitHash를 반환합니다.
LibGit2.merge! — Methodmerge!(repo::GitRepo; kwargs...) -> Bool저장소 repo에서 git 병합을 수행하여 분기된 이력을 가진 커밋을 현재 브랜치에 병합합니다. 병합이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
키워드 인자는 다음과 같습니다:
committish::AbstractString="":committish에 있는 명명된 커밋을 병합합니다.branch::AbstractString="": 브랜치branch와 현재 브랜치에서 분기된 이후의 모든 커밋을 병합합니다.fastforward::Bool=false:fastforward가true인 경우, 병합이 패스트 포워드인 경우에만 병합합니다(현재 브랜치 헤드가 병합할 커밋의 조상인 경우). 그렇지 않으면 병합을 거부하고false를 반환합니다. 이는 git CLI 옵션--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](@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])LibGit2.merge! — Methodmerge!(repo::GitRepo, anns::Vector{GitAnnotated}, fastforward::Bool; kwargs...) -> Bool주석이 달린 커밋([GitAnnotated](@ref) 객체로 캡처됨) anns의 변경 사항을 저장소 repo의 HEAD에 병합합니다. 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()현재 버전의 libgit2가 지원하는 git 기능 목록을 반환합니다. 예를 들어 스레딩, HTTPS 또는 SSH 사용 등이 있습니다.
LibGit2.filename — Functionfilename(te::GitTreeEntry)te가 참조하는 디스크상의 객체의 파일 이름을 반환합니다.
LibGit2.filemode — Functionfilemode(te::GitTreeEntry) -> Cintte가 참조하는 디스크상의 객체의 UNIX 파일 모드를 정수로 반환합니다.
LibGit2.gitdir — FunctionLibGit2.gitdir(repo::GitRepo)repo의 "git" 파일의 위치를 반환합니다:
- 일반 저장소의 경우, 이는
.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는 사용 후 민감한 데이터를 안전하게 제로화하거나 파괴할 수 없으며 비밀번호가 메모리에 남아 있을 수 있습니다. 이는 초기화되지 않은 메모리에 의해 노출될 수 있습니다.
예제
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 해시 객체를 생성하며, 문자열이 40개의 16진수 숫자보다 짧으면 GitShortHash를 반환하고, 그렇지 않으면 GitHash를 반환합니다.
예제
julia> LibGit2.githash"d114feb74ce633"
GitShortHash("d114feb74ce633")
julia> LibGit2.githash"d114feb74ce63307afe878a5228ad014e0289a85"
GitHash("d114feb74ce63307afe878a5228ad014e0289a85")LibGit2.head — FunctionLibGit2.head(repo::GitRepo) -> GitReference현재 repo의 HEAD에 대한 GitReference를 반환합니다.
head(pkg::AbstractString) -> String현재 pkg 레포의 HEAD GitHash를 문자열로 반환합니다.
LibGit2.head! — FunctionLibGit2.head!(repo::GitRepo, ref::GitReference) -> GitReferencerepo의 HEAD를 ref가 가리키는 객체로 설정합니다.
LibGit2.head_oid — FunctionLibGit2.head_oid(repo::GitRepo) -> GitHashgit 저장소 repo의 현재 HEAD의 객체 ID를 조회합니다.
LibGit2.headname — FunctionLibGit2.headname(repo::GitRepo)git 저장소 repo의 현재 HEAD 이름을 조회합니다. 만약 repo가 현재 분리(detached) 상태라면, 분리된 HEAD의 이름을 반환합니다.
LibGit2.init — FunctionLibGit2.init(path::AbstractString, bare::Bool=false) -> GitRepopath에 새 git 저장소를 엽니다. bare가 false인 경우 작업 트리가 path/.git에 생성됩니다. bare가 true인 경우 작업 디렉토리가 생성되지 않습니다.
LibGit2.is_ancestor_of — Functionis_ancestor_of(a::AbstractString, b::AbstractString, repo::GitRepo) -> Boola가 b의 조상인 경우 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)
trueLibGit2.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)
trueLibGit2.isdiff — FunctionLibGit2.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") # 이제 truegit diff-index <treeish> [-- <pathspecs>]와 동등합니다.
LibGit2.isdirty — FunctionLibGit2.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>]와 동등합니다.
LibGit2.isorphan — FunctionLibGit2.isorphan(repo::GitRepo)현재 브랜치가 "고아" 브랜치인지 확인합니다. 즉, 커밋이 없습니다. 이 브랜치에 대한 첫 번째 커밋은 부모가 없습니다.
LibGit2.isset — Functionisset(val::Integer, flag::Integer)val의 비트가 flag에 의해 인덱스된 값이 설정되어 있는지(1) 또는 설정되어 있지 않은지(0) 테스트합니다.
LibGit2.iszero — Functioniszero(id::GitHash) -> Bool주어진 GitHash의 모든 16진수 자리가 0인지 여부를 결정합니다.
LibGit2.lookup_branch — Functionlookup_branch(repo::GitRepo, branch_name::AbstractString, remote::Bool=false) -> Union{GitReference, Nothing}지정된 branch_name에 해당하는 브랜치가 repo 리포지토리에 존재하는지 확인합니다. remote가 true인 경우, repo는 원격 git 리포지토리로 간주됩니다. 그렇지 않으면 로컬 파일 시스템의 일부입니다.
요청된 브랜치가 존재하는 경우 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: 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.map은 GitRevWalker를 사용하여 각 커밋을 방문하고 해당 GitHash를 찾습니다.
LibGit2.mirror_callback — Function미러 콜백 함수
함수는 원격 참조에 대해 +refs/*:refs/* refspecs와 mirror 플래그를 설정합니다.
LibGit2.mirror_cb — FunctionC 함수 포인터를 위한 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]이 단순히 anns[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와 동등합니다. repo가 업데이트가 필요하면 true를 반환합니다.
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())지정된 rmt 원격 git 저장소에 푸시하며, refspecs를 사용하여 푸시할 원격 브랜치를 결정합니다. 키워드 인자는 다음과 같습니다:
force:true인 경우, 충돌을 무시하고 강제 푸시가 발생합니다.options: 푸시에 대한 옵션을 결정하며, 예를 들어 사용할 프록시 헤더를 설정합니다. 더 많은 정보는PushOptions를 참조하세요.
푸시 refspecs에 대한 정보를 두 가지 다른 방법으로 추가할 수 있습니다: 저장소의 GitConfig에서 옵션을 설정하거나(push.default를 키로 사용) add_push!를 호출하는 것입니다. 그렇지 않으면 push 호출에서 푸시 refspec을 명시적으로 지정해야 효과가 있습니다. 예를 들어: LibGit2.push(repo, refspecs=["refs/heads/master"]).
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>]와 동등합니다.
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}지정된 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"]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 (또는 idx가 소유한 리포지토리에서 treehash가 가리키는 트리)를 인덱스 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
fiLibGit2.ref_list — FunctionLibGit2.ref_list(repo::GitRepo) -> Vector{String}repo 저장소의 모든 참조 이름 목록을 가져옵니다.
LibGit2.reftype — FunctionLibGit2.reftype(ref::GitReference) -> Cintref의 유형에 해당하는 Cint를 반환합니다:
- 참조가 유효하지 않으면
0 - 참조가 객체 ID이면
1 - 참조가 상징적이면
2
LibGit2.remotes — FunctionLibGit2.remotes(repo::GitRepo)repo의 원격 이름의 벡터를 반환합니다.
LibGit2.remove! — Functionremove!(repo::GitRepo, files::AbstractString...)
remove!(idx::GitIndex, files::AbstractString...)repo의 인덱스(또는 repo의 인덱스)에서 files로 지정된 경로의 모든 파일을 제거합니다.
LibGit2.reset — Functionreset(val::Integer, flag::Integer)flag에 의해 인덱스된 val의 비트를 해제하고, 이를 0으로 반환합니다.
LibGit2.reset! — Functionreset!(payload, [config]) -> CredentialPayloadpayload 상태를 초기 값으로 되돌려 자격 증명 콜백 내에서 다시 사용할 수 있도록 합니다. config가 제공되면 구성도 업데이트됩니다.
대상 커밋 트리에서 pathspecs에 의해 결정된 일부 항목을 인덱스에서 업데이트합니다.
지정된 커밋 oid로 현재 헤드를 설정하고 선택적으로 인덱스와 작업 트리를 일치하도록 재설정합니다.
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)) # 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)LibGit2.restore — Functionrestore(s::State, repo::GitRepo)저장소 repo를 이전 State s로 복원합니다. 예를 들어, 병합 시도 이전의 브랜치 HEAD로 복원할 수 있습니다. s는 snapshot 함수를 사용하여 생성할 수 있습니다.
LibGit2.revcount — FunctionLibGit2.revcount(repo::GitRepo, commit1::AbstractString, commit2::AbstractString)commit1과 commit2 사이의 수정 수를 나열합니다 (문자열 형식의 committish OID). commit1과 commit2가 서로 다른 브랜치에 있을 수 있으므로, 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)을 반환합니다.
LibGit2.set_remote_url — Functionset_remote_url(repo::GitRepo, remote_name, url)
set_remote_url(repo::String, remote_name, url)remote_name에 대한 fetch 및 push url을 GitRepo 또는 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")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 = meConfigEntry는 다음과 같이 보일 것입니다:
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}repo에 있는 path의 파일 상태를 조회합니다. 예를 들어, 이 기능은 path의 파일이 수정되었는지 확인하고 스테이징 및 커밋이 필요한지 확인하는 데 사용할 수 있습니다.
LibGit2.stage — Functionstage(ie::IndexEntry) -> Cintie의 단계 번호를 가져옵니다. 단계 번호 0은 작업 트리의 현재 상태를 나타내지만, 병합 충돌의 경우 다른 번호를 사용할 수 있습니다. 이러한 경우, IndexEntry의 다양한 단계 번호는 파일의 현재 상태가 충돌의 어느 쪽에 속하는지를 설명합니다. 단계 0은 시도된 병합 이전의 상태이며, 단계 1은 로컬에서 변경된 사항을 나타내고, 단계 2 및 그 이상은 다른 브랜치의 변경 사항을 나타냅니다(예를 들어, 다중 브랜치 "문어" 병합의 경우 단계 2, 3, 및 4가 사용될 수 있습니다).
LibGit2.tag_create — FunctionLibGit2.tag_create(repo::GitRepo, tag::AbstractString, commit; kwargs...)저장소 repo에서 커밋 commit에 새로운 git 태그 tag (예: "v0.5")를 생성합니다.
키워드 인자는 다음과 같습니다:
msg::AbstractString="": 태그에 대한 메시지.force::Bool=false:true인 경우, 기존 참조가 덮어씌워집니다.sig::Signature=Signature(repo): 태그 작성자의 서명.
LibGit2.tag_delete — FunctionLibGit2.tag_delete(repo::GitRepo, tag::AbstractString)저장소 repo에서 git 태그 tag를 제거합니다.
LibGit2.tag_list — FunctionLibGit2.tag_list(repo::GitRepo) -> Vector{String}git 저장소 repo의 모든 태그 목록을 가져옵니다.
LibGit2.target — FunctionLibGit2.target(tag::GitTag)tag의 대상 객체의 GitHash.
LibGit2.toggle — Functiontoggle(val::Integer, flag::Integer)flag에 의해 인덱스된 val의 비트를 뒤집습니다. 즉, 비트가 0이면 토글 후 1이 되고, 그 반대도 마찬가지입니다.
LibGit2.transact — Functiontransact(f::Function, repo::GitRepo)함수 f를 git 저장소 repo에 적용하며, f를 적용하기 전에 snapshot를 찍습니다. f 내에서 오류가 발생하면, restore를 사용하여 repo를 스냅샷 상태로 되돌립니다. 발생한 오류는 다시 발생하지만, repo의 상태는 손상되지 않습니다.
LibGit2.treewalk — Functiontreewalk(f, tree::GitTree, post::Bool=false)tree와 그 하위 트리의 항목을 후위 또는 전위 순서로 탐색합니다. 전위 순서는 루트에서 시작하여 가장 왼쪽 하위 트리를 탐색한 다음(그리고 그 하위 트리의 가장 왼쪽 하위 트리를 재귀적으로 탐색한 다음) 하위 트리를 통해 오른쪽으로 이동하는 것을 의미합니다. 후위 순서는 가장 왼쪽 하위 트리의 바닥에서 시작하여 그 위로 올라가고, 다음 오른쪽 하위 트리를 탐색한 다음(다시 바닥에서 시작) 마지막으로 트리 루트를 방문하는 것을 의미합니다.
함수 매개변수 f는 다음과 같은 시그니처를 가져야 합니다:
(String, GitTreeEntry) -> Cintf에서 반환된 음수 값은 트리 탐색을 중지합니다. 양수 값은 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)원격 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"LibGit2.version — Functionversion() -> VersionNumber사용 중인 libgit2의 버전을 VersionNumber 형식으로 반환합니다.
LibGit2.with — Functionwith(f::Function, obj)리소스 관리 도우미 함수. f를 obj에 적용하며, f가 성공적으로 반환되거나 오류를 발생시킨 후 obj에서 close를 호출하는 것을 보장합니다. 할당된 git 리소스가 더 이상 필요하지 않을 때 즉시 정리되도록 보장합니다.
LibGit2.with_warn — Functionwith_warn(f::Function, ::Type{T}, args...)리소스 관리 도우미 함수. args로부터 T 유형의 인스턴스를 먼저 구성한 후 f를 args에 적용합니다. f가 성공적으로 반환되거나 오류를 발생시킨 후 결과 객체에서 close를 호출하도록 보장합니다. 할당된 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<:GitObjectte가 참조하는 git 객체를 가져와서 그것의 실제 타입(예: entrytype에서 보여줄 타입)으로 반환합니다. 예를 들어 GitBlob 또는 GitTag가 될 수 있습니다.
예시
tree = LibGit2.GitTree(repo, "HEAD^{tree}")
tree_entry = tree[1]
blob = LibGit2.GitBlob(tree_entry)LibGit2.UserPasswordCredential — Typeuser 및 password 매개변수만 지원하는 자격 증명
LibGit2.SSHCredential — TypeSSH 자격 증명 유형
LibGit2.isfilled — Functionisfilled(cred::AbstractCredential) -> Bool인증에 사용하기 위해 자격 증명이 준비되었는지 확인합니다.
LibGit2.CachedCredentials — Type자격 증명 정보를 재사용을 위해 캐시합니다.
LibGit2.CredentialPayload — TypeLibGit2.CredentialPayload같은 URL에 대한 자격 증명 콜백의 여러 호출 간 상태를 유지합니다. CredentialPayload 인스턴스는 다른 URL과 함께 사용될 때마다 reset! 되어야 합니다.
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- 휴대용 git과의 호환성을 위해 Windows에서 시스템 전체CONFIG_LEVEL_SYSTEM- 시스템 전체 구성 파일; Linux 시스템의 경우/etc/gitconfigCONFIG_LEVEL_XDG- XDG 호환 구성 파일; 일반적으로~/.config/git/configCONFIG_LEVEL_GLOBAL- 사용자별 구성 파일(전역 구성 파일이라고도 함); 일반적으로~/.gitconfigCONFIG_LEVEL_LOCAL- 리포지토리 특정 구성 파일; 비베어 리포지토리의 경우$WORK_DIR/.git/configCONFIG_LEVEL_APP- 애플리케이션 특정 구성 파일; 애플리케이션에 의해 자유롭게 정의됨CONFIG_HIGHEST_LEVEL- 사용 가능한 가장 높은 수준의 구성 파일을 나타냅니다(즉, 실제로 로드된 가장 구체적인 구성 파일)