소개
libgit2는 C로 구현된 Git 핵심 메서드를 제공하는 링크 가능한 라이브러리입니다. libgit2.org에서 개발 및 유지보수하며, C 애플리케이션에 Git 기능을 직접 통합하거나 다양한 언어 바인딩을 통해 사용할 수 있습니다. 이 라이브러리는 GitHub.com, Plastic SCM, Azure DevOps 등 프로덕션 환경에서 널리 사용됩니다.
상세정보
SHA 변환 및 포맷팅
라이브러리는 SHA 해시의 변환, 포맷팅 및 단축 기능을 제공합니다.
객체 데이터베이스 백엔드 시스템
추상화된 ODB(Object Database) 백엔드 시스템을 통해 Git 내부 객체 관리를 지원합니다.
커밋, 태그, 트리 및 blob 처리
Git 객체인 커밋, 태그, 트리 및 blob의 파싱, 편집 및 쓰기-back 기능을 제공합니다.
트리 순회 및 리비전 워킹
트리 구조 순회 및 리비전 워킹(revision walking) 기능을 통해 히스토리 탐색이 가능합니다.
인덱스 파일 관리
Git의 스테이징 영역인 인덱스 파일의 조작 및 관리를 지원합니다.
참조 관리
패키지된 참조를 포함한 참조 관리가 가능합니다.
설정 파일 관리
Git 설정 파일의 읽기 및 수정을 지원합니다.
고수준 저장소 관리
저장소 수준에서의 고수준 관리 기능을 제공합니다.
스레드 안전성
라이브러리는 스레드 안전하고 재진입 가능하도록 설계되었습니다.
다운로드·설치 방법
libgit2는 소스 코드로부터 CMake를 사용하여 빌드할 수 있습니다. Windows에서는 Visual Studio 사용이 권장됩니다.
빌드 전제 조건
- CMake (PATH에 설치 권장)
- Python (테스트 프레임워크용, PATH에 설치 권장)
- C 컴파일러 (Windows: Visual Studio 권장)
빌드 단계
- 소스 디렉토리 아래에 빌드 디렉터리를 생성하고 이동:
mkdir build && cd build - CMake 빌드 환경 생성:
cmake .. - 라이브러리 빌드:
cmake --build .
예제를 포함한 빌드를 원한다면 cmake -DBUILD_EXAMPLES=ON .. 명령을 사용합니다.
기본 사용법
libgit2를 사용하기 전에는 전역 상태 초기화가 필요합니다.
초기화 및 종료
라이브러리 함수 호출 전에 반드시 다음을 호출해야 합니다:
git_libgit2_init();
사용이 끝난 후에는 matching 수만큼 shutdown을 호출해야 합니다:
git_libgit2_shutdown();
작업자 스레드를 사용하는 경우, 스레드 종료 후 shutdown을 호출해야 하며, 스레드에서 init/shutdown을 쌍으로 관리할 수 있습니다.
이런 경우에 유용합니다
C 애플리케이션에 Git 기능을 직접 통합해야 하는 개발자에게 유용합니다. 예를 들어 커스텀 Git 클라이언트, 자동 배포 시스템, 저장소 분석 도구 등을 구축할 때 libgit2를 핵심 엔진으로 사용할 수 있습니다. 언어 바인딩을 통해 .NET, Python, Node.js 등 다양한 환경에서도 활용 가능합니다.
지원 환경·시스템 요구사항
libgit2는 크로스플랫폼 라이브러리로 Windows, Linux, macOS, iOS 등을 완전히 테스트하고 지원합니다. Windows에서는 시스템 라이브러리를 통해 스레딩, HTTPS, Unicode 등을 제공하며, Visual Studio, GCC, Clang 등 다양한 컴파일러에서 빌드가 가능합니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


