# third_party_git
**Repository Path**: lyn1996/third_party_git
## Basic Information
- **Project Name**: third_party_git
- **Description**: 适配openharmony的分布式版本控制系统Git的支持
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/openharmony-sig/third_party_git
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 5
- **Created**: 2024-10-30
- **Last Updated**: 2025-01-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# git
#### 介绍
openharmony系统的分布式版本控制系统Git的支持,下载地址。
[下载地址2](store://opensource/install?id=com.develop.opensource.git)
#### 代码下载
```
git clone https://gitee.com/openharmony-sig/third_party_git
```
#### 软件架构
```
├── deps ---- Git编译依赖的三方库
├── git-2.45.2.tar.gz ---- v2.45.2的Git源码
├── patch ---- Git鸿蒙化需要修改的patch
├── README.en.md ---- 编译安装方法
└── README.md ---- 编译安装方法
```
#### 编译环境配置
1. 在你的编译机器上首先配置编译工具链,在Openharmony发布的SDK中有一个ohos文件夹,该文件夹提供了可以在鸿蒙PC上可以使用的编译工具链
2. 准备编译工具make,下载地址。
3. 用以下脚本配置环境变量
```
export OHOS_SDK=/your_path/ohos-sdk
export AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos"
export LD=${OHOS_SDK}/native/llvm/bin/ld.lld
export STRIP=${OHOS_SDK}/native/llvm/bin/llvm-strip
export RANLIB=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
export OBJDUMP=${OHOS_SDK}/native/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/native/llvm/bin/llvm-objcopy
export NM=${OHOS_SDK}/native/llvm/bin/llvm-nm
export AR=${OHOS_SDK}/native/llvm/bin/llvm-ar
export CFLAGS="-fPIC -D__MUSL__=1"
export CXXFLAGS="-fPIC -D__MUSL__=1"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${OHOS_SDK}/native/llvm/lib
```
#### 安装教程
##### 三方依赖库编译
1. 三方库源码下载
可以使用浏览器分别下载以下源码包,下载地址。
```
https://github.com/libexpat/libexpat/releases/download/R_2_6_2/expat-2.6.2.tar.gz
https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz
https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.43/pcre2-10.43.tar.gz
https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
https://curl.se/download/curl-8.0.1.tar.gz
https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.tar.gz
```
2. 三方库的编译
```
tar zxvf expat-2.6.2.tar.gz
cd expat-2.6.2/
./configure --prefix=/your_path/git/deps --host=aarch64-linux --without-xmlwf --without-examples --without-tests --without-docbook --disable-shared
make -j8 && make install
```
```
tar zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
./Configure --prefix=/your_path/git/deps" --host=aarch64-linux --no-shared
make -j8 && make install
```
```
tar zxvf curl-8.0.1.tar.gz
cd curl-8.0.1/
./configure --prefix=/your_path/git/deps --host=aarch64-linux --with-openssl=/your_path/git/deps --with-ca-bundle=/etc/ssl/certs/cacert.pem --with-ca-path=/etc/ssl/certs --disable-shared CFLAGS="-Wno-int-conversion $CFLAGS"
make-j8 && make install
```
```
tar zxvf libiconv-1.17.tar.gz
cd libiconv-1.17
./configure --prefix=/your_path/git/deps --host=aarch64-linux --disable-shared
make-j8 && make install
```
```
tar zxvf pcre2-10.43.tar.gz
cd pcre2-10.43/
./configure --prefix=/your_path/git/deps --host=aarch64-linux --disable-shared
make -j8 && make install
```
```
tar zxvf gettext-0.22.tar.gz
cd gettext-0.22/
./configure --prefix=/your_path/git/deps --host=aarch64-linux --disable-shared CFLAGS="-Wno-int-conversion $CFLAGS"
make -j8 && make install
```
3. Git的编译
```
# cd /your_path/git
# tar zxvf git-2.45.2.tar.gz
# cd git-2.45.2
# patch -p1 < ../patch/git_oh_pkg.patch
# ./configure --prefix="${PWD}/install" --host=aarch64-linux --disable-pthreads \
ac_cv_iconv_omits_bom=yes \
ac_cv_fread_reads_directories=yes \
ac_cv_snprintf_returns_bogus=no \
ac_cv_lib_curl_curl_global_init=yes \
--with-libpcre2 \
--with-tcltk=no \
ac_cv_prog_CURL_CONFIG=${PWD}/../deps/bin/curl-config \
CPPFLAGS="-I${PWD}/../deps/include" \
LDFLAGS="-L${PWD}/../deps/lib"
# make NO_GETTEXT=YesPlease install -j8
```
以上指令执行完,在/your_path/git/git-2.45.2/install中生成所有git的编译产物
#### 使用说明
```
# cd /your_path/git/git-2.45.2/install/bin
# ./git --version
git version 2.45.2
```