diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 0000000000..60318f794c --- /dev/null +++ b/.github/issue_template.md @@ -0,0 +1,13 @@ +## System information + - node version: + - npm or yarn version: + - OS/version/architecture: + - Applicable nodegit version: + +``` +node -v +npm -v # (or yarn -v) +node -e "console.log(process.platform)" +node -e "console.log(require('os').release())" +node -e "console.log(process.arch)" +``` diff --git a/.github/workflows/build-openssl-packages.yml b/.github/workflows/build-openssl-packages.yml new file mode 100644 index 0000000000..7b7a5dea3e --- /dev/null +++ b/.github/workflows/build-openssl-packages.yml @@ -0,0 +1,48 @@ +name: Build and Publish OpenSSL Packages + +on: + workflow_dispatch: + +jobs: + build-openssl: + name: Build OpenSSL package for (${{ matrix.os }} ${{ matrix.arch }}) + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: windows-latest + arch: arm64 + - os: windows-latest + arch: x64 + - os: macos-15 + arch: arm64 + - os: macos-15-intel + arch: x64 + fail-fast: false + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Install dependencies + run: npm install + + - name: Build OpenSSL packages + env: + npm_config_arch: ${{ matrix.arch }} + NODEGIT_OPENSSL_BUILD_PACKAGE: 1 + OPENSSL_MACOS_DEPLOYMENT_TARGET: "11.0" + run: node utils/acquireOpenSSL.mjs + + - name: Push OpenSSL package to S3 + env: + npm_config_arch: ${{ matrix.arch }} + node_pre_gyp_bucket: ${{ secrets.node_pre_gyp_bucket }} + AWS_ACCESS_KEY_ID: ${{ secrets.node_pre_gyp_accessKeyId }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.node_pre_gyp_secretAccessKey }} + run: node utils/uploadOpenSSL.mjs diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000000..3cd6aae10c --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,196 @@ +on: + push: + branches: + - master + - backport/* + tags: + - v*.*.* + pull_request: + +name: Testing + +jobs: + linux-tests: + name: "Linux Tests" + strategy: + matrix: + node: [20, 22, 24] + fail-fast: false + runs-on: ubuntu-22.04 + steps: + - name: Install Dependencies for Ubuntu + run: sudo apt-get update && sudo apt-get install -y software-properties-common git build-essential clang libssl-dev libkrb5-dev libc++-dev wget zlib1g-dev + + - uses: actions/checkout@v4 + + - name: Setup Environment + run: | + set -e + mkdir ~/.ssh_tests + chmod 700 ~/.ssh_tests + printf "%b" "Host *\n\tStrictHostKeyChecking no\n" > ~/.ssh_tests/config + cat test/id_rsa.pub > ~/.ssh_tests/id_rsa.pub + cat test/id_rsa.enc | base64 -d > ~/.ssh_tests/id_rsa + chmod 600 ~/.ssh_tests/id_rsa* + git config --global user.name "John Doe" + git config --global user.email johndoe@example.com + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + check-latest: true + + - name: Install + run: npm install + + - name: Test + run: | + set -e + eval `ssh-agent -s` + ssh-add ~/.ssh_tests/id_rsa + node utils/retry npm test + + - name: Deploy + if: startsWith(github.ref, 'refs/tags/v') + env: + node_pre_gyp_bucket: ${{ secrets.node_pre_gyp_bucket }} + AWS_ACCESS_KEY_ID: ${{ secrets.node_pre_gyp_accessKeyId }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.node_pre_gyp_secretAccessKey }} + run: | + npm install -g @mapbox/node-pre-gyp aws-sdk + node lifecycleScripts/clean + node-pre-gyp package + node-pre-gyp publish + + macos-tests: + name: "macOS Tests" + strategy: + matrix: + node: [20, 22, 24] + arch: [x64, arm64] + fail-fast: false + runs-on: ${{ matrix.arch == 'x64' && 'macos-15-intel' || 'macos-15' }} + steps: + - uses: actions/checkout@v4 + + - name: Setup Environment + run: | + mkdir ~/.ssh_tests + chmod 700 ~/.ssh_tests + printf "%b" "Host *\n\tStrictHostKeyChecking no\n" > ~/.ssh_tests/config + cat test/id_rsa.pub > ~/.ssh_tests/id_rsa.pub + cat test/id_rsa.enc | base64 -d > ~/.ssh_tests/id_rsa + chmod 600 ~/.ssh_tests/id_rsa* + git config --global user.name "John Doe" + git config --global user.email johndoe@example.com + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + check-latest: true + + - name: Install + run: npm install + + - name: Test + run: | + set -e + eval `ssh-agent -s` + ssh-add ~/.ssh_tests/id_rsa + node utils/retry npm test + + - name: Deploy + if: startsWith(github.ref, 'refs/tags/v') + env: + node_pre_gyp_bucket: ${{ secrets.node_pre_gyp_bucket }} + AWS_ACCESS_KEY_ID: ${{ secrets.node_pre_gyp_accessKeyId }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.node_pre_gyp_secretAccessKey }} + run: | + npm install -g @mapbox/node-pre-gyp aws-sdk + node lifecycleScripts/clean + node-pre-gyp package + node-pre-gyp publish + + windows-tests: + name: Windows Tests + strategy: + matrix: + node: [20, 22, 24] + arch: [x86, x64, arm64] + exclude: + - node: 24 + arch: x86 + fail-fast: false + runs-on: windows-2022 + steps: + - name: Setup Environment + run: | + git config --file C:\ProgramData\Git\config core.autocrlf input + git config --system core.autocrlf input + git config --global core.autocrlf input + git config --global user.name "John Doe" + git config --global user.email johndoe@example.com + + - uses: actions/checkout@v4 + + - name: Use Node.js + if: matrix.arch == 'x86' + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + check-latest: true + architecture: x86 + + - name: Use Node.js + uses: actions/setup-node@v4 + if: matrix.arch != 'x86' + with: + node-version: ${{ matrix.node }} + check-latest: true + + - name: Install + env: + npm_config_arch: ${{ matrix.arch == 'x86' && 'ia32' || matrix.arch }} + run: npm install + + - name: Test + # need arm64 runners or an emulator to run tests + if: matrix.arch != 'arm64' + env: + GIT_SSH: ${{ github.workspace }}\vendor\plink.exe + run: | + $encodedKey = Get-Content -Path test\private.ppk.enc + $finalPath = Join-Path -Path $HOME -ChildPath .ssh_tests\private.ppk + mkdir ~\.ssh_tests + Set-Content -Value $([System.Convert]::FromBase64String($encodedKey)) -Path $finalPath -AsByteStream + powershell -command "Start-Process .\vendor\pageant\pageant_${{ matrix.arch }}.exe $finalPath" + node utils/retry npm test + + # You're probably wondering why this isn't a single `run: |` step, it certainly is for *nix, + # but it's not, because the CI runner for windows doesn't wait for each step as listed here + # and it treats each additional step past the first as an orphaned process. + - name: Deploy (Dependencies) + if: startsWith(github.ref, 'refs/tags/v') + run: npm install -g @mapbox/node-pre-gyp aws-sdk + + - name: Deploy (Clean) + if: startsWith(github.ref, 'refs/tags/v') + run: node lifecycleScripts\clean + + - name: Deploy (Package) + if: startsWith(github.ref, 'refs/tags/v') + run: node-pre-gyp package --target_arch=${{ matrix.arch }} + + - name: Deploy (Publish) + if: startsWith(github.ref, 'refs/tags/v') + env: + node_pre_gyp_bucket: ${{ secrets.node_pre_gyp_bucket }} + AWS_ACCESS_KEY_ID: ${{ secrets.node_pre_gyp_accessKeyId }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.node_pre_gyp_secretAccessKey }} + run: node-pre-gyp publish --target_arch=${{ matrix.arch }} diff --git a/.gitignore b/.gitignore index 5529ab114f..7d1f15f049 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ /build/ /coverage/ -/dist/ /include/ /lib/enums.js /lib/nodegit.js @@ -18,10 +17,35 @@ /generate/missing-tests.json /binding.gyp +# Generated vendor files +/vendor/openssl/ +/vendor/libssh2/Makefile +/vendor/libssh2/config.status +/vendor/libssh2/docs/Makefile +/vendor/libssh2/example/.deps/ +/vendor/libssh2/example/Makefile +/vendor/libssh2/example/libssh2_config.h +/vendor/libssh2/example/stamp-h2 +/vendor/libssh2/libssh2.pc +/vendor/libssh2/libtool +/vendor/libssh2/src/.deps/ +/vendor/libssh2/src/Makefile +/vendor/libssh2/src/libssh2_config.h +/vendor/libssh2/src/stamp-h1 +/vendor/libssh2/tests/.deps/ +/vendor/libssh2/tests/Makefile +/vendor/libssh2/tests/ossfuzz/.deps +/vendor/libssh2/tests/ossfuzz/Makefile *.log .DS_STORE .idea +.clangd +.nyc_output/ .vscode jsconfig.json + +test/id_rsa +test/nodegit-test-rsa +test/private.ppk diff --git a/.gitmodules b/.gitmodules index 1e39a72bfe..11538c1e2b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,6 @@ [submodule "vendor/libgit2"] path = vendor/libgit2 -[submodule "vendor/libgit2"] url = https://github.com/nodegit/libgit2.git +[submodule "vendor/http_parser"] + path = vendor/http_parser + url = https://github.com/nodejs/http-parser diff --git a/.jshintrc b/.jshintrc index 0fd02f29b6..437878c8ce 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,8 +1,8 @@ { + "esversion": 9, "boss": true, "curly": true, "eqnull": true, - "esnext": true, "evil": true, "futurehostile": true, "globals": { @@ -16,7 +16,7 @@ "it": true }, "immed": false, - "maxlen": 80, + "maxlen": 120, "node": true, "predef": [ "Promise", diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e4b861349f..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,127 +0,0 @@ -branches: - only: - - master - - /^v\d+\.\d+\.\d+$/ - -compiler: clang - -os: - - linux - - osx - -sudo: false - -env: - matrix: - - export NODE_VERSION="0.12" TARGET_ARCH="x64" - - export NODE_VERSION="4.1" TARGET_ARCH="x64" - - export NODE_VERSION="5.8" TARGET_ARCH="x64" - - export NODE_VERSION="6" TARGET_ARCH="x64" - -matrix: - fast_finish: true - include: - - os: linux - env: export NODE_VERSION="0.12" TARGET_ARCH="ia32" - sudo: required - - os: linux - env: export NODE_VERSION="4.1" TARGET_ARCH="ia32" - sudo: required - - os: linux - env: export NODE_VERSION="5.8" TARGET_ARCH="ia32" - sudo: required - - os: linux - env: export NODE_VERSION="6.2" TARGET_ARCH="ia32" - sudo: required - -git: - depth: 1 - -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - build-essential - - libssl-dev - - gcc-4.9-multilib - - g++-4.9-multilib - - lcov - -before_install: - - export CC=clang - - export CXX=clang++ - - export npm_config_clang=1 - - - if [ $TARGET_ARCH == "ia32" ]; then - sudo ln -s /usr/include/asm-generic /usr/include/asm; - fi - - - if [ $TRAVIS_OS_NAME != "linux" ]; then - git clone https://github.com/creationix/nvm.git ./.nvm; - source ./.nvm/nvm.sh; - fi - - - nvm install $NODE_VERSION - - - if [ -z "$TRAVIS_TAG" ] && [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "0.12" ]; then - export GYP_DEFINES="coverage=1 use_obsolete_asm=true"; - export JOBS=4; - export CC=/usr/bin/gcc-4.9; - export CXX=/usr/bin/g++-4.9; - export npm_config_clang=0; - wget http://downloads.sourceforge.net/ltp/lcov-1.10.tar.gz; - tar xvfz lcov-1.10.tar.gz; - else - export GYP_DEFINES="use_obsolete_asm=true"; - export JOBS=4; - fi - -install: - - npm install - -# This is a random private key used purely for testing. -before_script: - - echo -e "Host *\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config - - echo -e "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkTcgXnHuqR0gbwegnr9Zxz4hTkjjV/SpgJNPJz7mo/HKNbx0rqjj1P0yGR053R9GSFFim2ut4NK9DPPUkQdyucw+DoLkYRHJmlJ4BNa9NTCD0sl+eSXO2969kZojCYSOgbmkCJx8mdgTwhzdgE/jhBrsY0hPE6pRTlU+H68/zeNdJUAIJf0LLXOm3hpTKLA19VICltl/j9VvBJpgRHdBylXEyL8HokYpjkQQk1ZXj3m7Nlo8yDdg4VcljOJWC+Xh8kxRMfK5x/VRVsYKCQXN5QlzKeqf7USRDUS/7mFoPUBW+d4kwKtGxRsWuIL2yeqzifZUTOgsh9+ZWAWxWffQZ your_email@example.com" > ~/.ssh/id_rsa.pub - - echo -e "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA5E3IF5x7qkdIG8HoJ6/Wcc+IU5I41f0qYCTTyc+5qPxyjW8d\nK6o49T9MhkdOd0fRkhRYptrreDSvQzz1JEHcrnMPg6C5GERyZpSeATWvTUwg9LJf\nnklztvevZGaIwmEjoG5pAicfJnYE8Ic3YBP44Qa7GNITxOqUU5VPh+vP83jXSVAC\nCX9Cy1zpt4aUyiwNfVSApbZf4/VbwSaYER3QcpVxMi/B6JGKY5EEJNWV495uzZaP\nMg3YOFXJYziVgvl4fJMUTHyucf1UVbGCgkFzeUJcynqn+1EkQ1Ev+5haD1AVvneJ\nMCrRsUbFriC9snqs4n2VEzoLIffmVgFsVn30GQIDAQABAoIBAQDPQm2sQbti0mN8\nD4Uawl8D40v30n8WhUa7EbPTOmlqKAQ2sfDhex9KRbTLEmEBmImA/Eee8o9iCTIy\n8Fv8Fm6pUHt9G6Pti/XvemwW3Q3QNpSUkHqN0FDkgecQVqVBEb6uHo3mDm4RFINX\neOmkp30BjIK9/blEw1D0sFALLOEUPaDdPMwiXtFgqfrFSgpDET3TvQIwZ2LxxTm0\ncNmP3sCSlZHJNkZI4hBEWaaXR+V5/+C1qblDCo5blAWTcX3UzqrwUUJgFi6VnBuh\n7S9Q6+CEIU+4JRyWQNmY8YgZFaAp6IOr/kyfPxTP1+UEVVgcLn3WDYwfG9og0tmz\nfzlruAgBAoGBAPfz73Pey86tNZEanhJhbX8gVjzy2hvyhT0paHg0q/H6c1VWOtUH\nOwZ3Ns2xAZqJhlDqCHnQYSCZDly042U/theP4N8zo1APb4Yg4qdmXF9QE1+2M03r\nkS6138gU/CSCLf8pCYa6pA/GmsaXxloeJGLvT4fzOZRsVav80/92XHRhAoGBAOu2\nmKh4Gr1EjgN9QNbk9cQTSFDtlBEqO/0pTepvL73UvNp/BAn4iYZFU4WnklFVBSWc\nL84Sc732xU12TAbTTUsa6E7W29pS8u7zVTxlIdQIIU5pzDyU1pNNk2kpxzte5p3Y\nPDtniPFsoYLWoH0LpsKL93t2pLAj+IOkE6f3XBq5AoGAIKaYo5N1FxQr952frx/x\nQUpK0N/R5Ng8v18SiLG26rhmM5iVSrQXC7TrHI7wfR8a9tC6qP/NqnM9NuwC/bQ0\nEEo7/GhaWxKNRwZRkmWiSFLNGk9t1hbtGU+N1lUdFtmloPIQdRNiw0kN3JTj474Q\nYI7O1EItFORnK6yxZfR6HEECgYEA1CT7MGUoa8APsMRCXyaiq15Pb8bjxK8mXquW\nHLEFXuzhLCW1FORDoj0y9s/iuKC0iS0ROX8R/J7k5NrbgikbH8WP36UxKkYNr1IC\nHOFImPTYRSKjVsL+fIUNb1DSp3S6SsYbL7v3XJJQqtlQiDq8U8x1aQFXJ9C4EoLR\nzhKrKsECgYBtU/TSF/TATZY5XtrN9O+HX1Fbz70Ci8XgvioheVI2fezOcXPRzDcC\nOYPaCMNKA5E8gHdg4s0TN7uDvKTJ+KhSg2V7gZ39A28dHrJaRX7Nz4k6t2uEBjX9\na1JidpAIbJ+3w7+hj6L299tVZvS+Y/6Dz/uuEQGXfJg/l/5CCvQPsA==\n-----END RSA PRIVATE KEY-----" > ~/.ssh/id_rsa - - chmod 600 ~/.ssh/id_rsa* - - eval `ssh-agent -s` - - ssh-add ~/.ssh/id_rsa - - git config --global user.name "John Doe" - - git config --global user.email johndoe@example.com - -script: - - if [ $TARGET_ARCH == "x64" ]; then - if [ -z "$TRAVIS_TAG" ] && [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "0.12" ]; then - npm test && npm run cov && npm run coveralls; - else - npm test; - fi - else - echo "Not running tests because the binary is not built for 64-bit systems"; - fi - -after_success: - - if [ -n "$TRAVIS_TAG" ]; then - npm install -g node-pre-gyp; - npm install -g aws-sdk; - node lifecycleScripts/clean; - node-pre-gyp package --target_arch=$TARGET_ARCH; - node-pre-gyp publish --target_arch=$TARGET_ARCH; - fi - - - if [ $TRAVIS_BRANCH == "master" ] && [ $TRAVIS_PULL_REQUEST == "false" ] && [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "4.1" ] && [ $TARGET_ARCH == "x64" ]; then - .travis/deploy-docs.sh; - fi - -notifications: - slack: - secure: KglNSqZiid9YudCwkPFDh+sZfW5BwFlM70y67E4peHwwlbbV1sSBPHcs74ZHP/lqgEZ4hMv4N2NI58oYFD5/1a+tKIQP1TkdIMuq4j2LXheuirA2HDcydOVrsC8kRx5XFGKdVRg/uyX2dlRHcOWFhxrS6yc6IxtxYWlRTD2SmEc= - - webhooks: - urls: - - https://webhooks.gitter.im/e/cbafdb27ad32ba746a73 - on_success: always # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: false # default: false diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e2e82f056..d7c020aac7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,2676 @@ # Change Log +## v0.28.0-alpha.36 [(2025-11-21)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.36) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.35...v0.28.0-alpha.36) + +#### Summary of Changes + - Use openssl unconditionally for linux electron builds + - Fix cross-compiling libssh2 + - Fix Windows SSH keys, tests, documentation + - Add CI tests and Prebuilts for MacOS arm64 + - Bump tar-fsa to fix security vulnerabilities + +#### Merged PRs into NodeGit +- [Bump tar-fs from 3.0.9 to 3.1.1](https://github.com/nodegit/nodegit/pull/2034) +- [Use custom electron for non-static builds on linux and fix cross-compilation](https://github.com/nodegit/nodegit/pull/2033) +- [add macos arm64 tests and prebuilts](https://github.com/nodegit/nodegit/pull/2030) + +## v0.28.0-alpha.35 [(2025-11-14)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.35) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.34...v0.28.0-alpha.35) + +#### Summary of Changes + - Bump libgit2 to 1.9.1 + - Bump OpenSSL to 3.0 + - Move OpenSSL Packaging to Github Actions + - Add arm64 build Support + +#### Merged PRs into NodeGit +- [Bump libgit2 to 1.9.1](https://github.com/nodegit/nodegit/pull/2025) +- [Bump OpenSSL to 3.0, Move OpenSSL package generation to Github Actions](https://github.com/nodegit/nodegit/pull/2026) +- [fix: correct macos arch labels](github.com/nodegit/nodegit/pull/2027) +- [Add Ability to compile for arm64](https://github.com/nodegit/nodegit/pull/2028) + +## v0.28.0-alpha.34 [(2025-07-23)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.34) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.33...v0.28.0-alpha.34) + +#### Summary of Changes + - Empty release to fix downstream issues + +#### Merged PRs into NodeGit +- None + +## v0.28.0-alpha.33 [(2025-06-03)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.33) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.32...v0.28.0-alpha.33) + +#### Summary of Changes + - fix non-standard import assertion + - update tar-fs + +#### Merged PRs into NodeGit +- [Fix Invalid Import Assertion, Bump tar-fs](https://github.com/nodegit/nodegit/pull/2022) + +## v0.28.0-alpha.32 [(2025-05-28)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.32) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.31...v0.28.0-alpha.32) + +#### Summary of Changes + - fix windows build on electron + +#### Merged PRs into NodeGit +- [fix electron dependencies again](https://github.com/nodegit/nodegit/pull/2020) + +## v0.28.0-alpha.31 [(2025-05-27)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.31) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.30...v0.28.0-alpha.31) + +#### Summary of Changes +- bump libgit2 from v1.7.2 to v1.8.4 +- update several npm dependencies for deprecations and vulnerabilities + +#### Merged PRs into NodeGit +- [Dependency/Process Updates](https://github.com/nodegit/nodegit/pull/2019) +- [Bump libgit2 to 1.8.4, CI Updates](https://github.com/nodegit/nodegit/pull/2018) + +## v0.28.0-alpha.30 [(2025-02-13)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.30) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.29...v0.28.0-alpha.30) + +#### Summary of Changes +- Fix windows build + +#### Merged PRs into NodeGit +- [define NOMINMAX on windows](https://github.com/nodegit/nodegit/pull/2016) + +## v0.28.0-alpha.29 [(2025-02-11)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.29) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.28...v0.28.0-alpha.29) + +#### Summary of Changes +- Build on Electron 34+ +- fix use-after-free in Repository::statistics() + +#### Merged PRs into NodeGit +- [Bump @axosoft/nan and add ability to compile for c++20](https://github.com/nodegit/nodegit/pull/2012) +- [Fix Github Action workflow](https://github.com/nodegit/nodegit/pull/2014) + + +## v0.28.0-alpha.28 [(2024-07-01)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.28) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.27...v0.28.0-alpha.28) + +#### Summary of changes +- Build on Electron 31+ + +#### Merged PRs into NodeGit +- [Bump nan again for electron 31](https://github.com/nodegit/nodegit/pull/2000) + +## v0.28.0-alpha.27 [(2024-06-06)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.27) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.26...v0.28.0-alpha.27) + +#### Summary of changes +- Build on Electron 29+ + +#### Merged PRs into NodeGit +- [Fix build failure on electron 29+](https://github.com/nodegit/nodegit/pull/1998) + +## v0.28.0-alpha.26 [(2024-04-19)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.26) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.25...v0.28.0-alpha.26) + +#### Summary of changes +- Fix use-after-free in getRemotes + +#### Merged PRs into NodeGit +- [Fix double-free introduced trying to fix other double-free](https://github.com/nodegit/nodegit/pull/1996) + +## v0.28.0-alpha.25 [(2024-04-15)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.25) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.24...v0.28.0-alpha.25) + +#### Summary of changes +- Fix use-after-free in getReferences + +#### Merged PRs into NodeGit +- [Don't free the given repo on error in getReferences and getRemotes](https://github.com/nodegit/nodegit/pull/1995) + +## v0.28.0-alpha.24 [(2024-02-20)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.24) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.23...v0.28.0-alpha.24) + +#### Summary of changes +- Use Collision Detection SHA1 implementation +- Fix win32 Electron build due to incorrect OpenSSL include path + +#### Merged PRs into NodeGit +- [Use builtin SHA1 for libgit compilation](https://github.com/nodegit/nodegit/pull/1992) +- [Ensure OpenSSL root included in win32 Electron builds](https://github.com/nodegit/nodegit/pull/1991) + +## v0.28.0-alpha.23 [(2024-02-14)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.23) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.22...v0.28.0-alpha.23) + +#### Summary of changes +- Bump libgit2 to 1.7.2 + +#### Merged PRs into NodeGit +- [Bump libgit2 to 1.7.2](https://github.com/nodegit/nodegit/pull/1990) + +## v0.28.0-alpha.22 [(2024-02-05)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.22) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.21...v0.28.0-alpha.22) + +#### Summary of changes +- Compatibility with Electron 28 +- NodeGit now requires Node 16+ + +#### Merged PRs into NodeGit +- [Fix electron 28 build failure](https://github.com/nodegit/nodegit/pull/1988) +- [Bump node-gyp to 10.0.1](https://github.com/nodegit/nodegit/pull/1989) + +## v0.28.0-alpha.21 [(2023-02-10)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.21) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.20...v0.28.0-alpha.21) + +#### Summary of changes +- Update OpenSSL to 1.1.1t +- Update got + other packages with security vulnerabilities +- Fix tag.createWithSignature function definition + +#### Merged PRs into NodeGit +- [Bump OpenSSL to 1.1.1t](https://github.com/nodegit/nodegit/pull/1971) +- [Update got + other locked package versions](https://github.com/nodegit/nodegit/pull/1969) +- [Fix tag createWithSignature function](https://github.com/nodegit/nodegit/pull/1945) + +## v0.28.0-alpha.20 [(2022-11-11)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.20) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.19...v0.28.0-alpha.20) + +#### Summary of changes +- Fix electron build issues + +#### Merged PRs into NodeGit +- [Fix electron build issues](https://github.com/nodegit/nodegit/pull/1955) + +## v0.28.0-alpha.19 [(2022-11-08)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.19) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.18...v0.28.0-alpha.19) + +#### Summary of changes +- OpenSSL bump +- OpenSSL binaries will be automatically downloaded when building for Electron on Windows and macOS +- Crash fix on Electron 18+ due to Nan bug +- Partial stash support + +#### Merged PRs into NodeGit +- [Allow overriding C++ standard](https://github.com/nodegit/nodegit/pull/1953) +- [Bump OpenSSL to 1.1.1s](https://github.com/nodegit/nodegit/pull/1952) +- [Fix intermittent crash on Electron 18+](https://github.com/nodegit/nodegit/pull/1951) +- [type is a call](https://github.com/nodegit/nodegit/pull/1942) +- [Fix leak in agent](https://github.com/nodegit/nodegit/pull/1947) +- [Default to using precompiled OpenSSL for Electron](https://github.com/nodegit/nodegit/pull/1949) +- [Partial stash support](https://github.com/nodegit/nodegit/pull/1948) +- [Switch CI to macOS-11](https://github.com/nodegit/nodegit/pull/1950) +- [Preemptively Patch OpenSSL 1.1.1q](https://github.com/nodegit/nodegit/pull/1928) +- [Add getAllFilepaths function in tree object](https://github.com/nodegit/nodegit/pull/1919) + +## v0.28.0-alpha.18 [(2022-05-27)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.18) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.17...v0.28.0-alpha.18) + +#### Summary of changes +- Allow fetching partial patches from diff +- Fix nanosecond comparison typo + +#### Merged PRs into NodeGit +- [Improve Diff.patches to allow an index array](https://github.com/nodegit/nodegit/pull/1916) +- [Bring in GIT_USE_NSEC fix](https://github.com/nodegit/nodegit/pull/1917) + +## v0.28.0-alpha.17 [(2022-05-24)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.17) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.16...v0.28.0-alpha.17) + +#### Summary of changes +- Enable nanosecond precision for file operations + +#### Merged PRs into NodeGit +- [Enable GIT_USE_NSEC](https://github.com/nodegit/nodegit/pull/1912) + +## v0.28.0-alpha.16 [(2022-05-09)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.16) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.15...v0.28.0-alpha.16) + +#### Summary of changes +- Allow disabling specific filters during checkout + +#### Merged PRs into NodeGit +- [Allow disabling specific filters during checkout](https://github.com/nodegit/nodegit/pull/1911) + +## v0.28.0-alpha.15 [(2022-05-05)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.15) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.14...v0.28.0-alpha.15) + +#### Summary of changes +- Expose `GIT_OPT_GET_OWNER_VALIDATION` and `GIT_OPT_SET_OWNER_VALIDATION` + +#### Merged PRs into NodeGit +- [Expose get/set owner validation opts](https://github.com/nodegit/nodegit/pull/1910) + +## v0.28.0-alpha.14 [(2022-05-02)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.14) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.13...v0.28.0-alpha.14) + +#### Summary of changes +- Allow statically linking OpenSSL on Linux +- Update libgit2 to 1.3.1 + +#### Merged PRs into NodeGit +- [Statically compile OpenSSL on linux for electron](https://github.com/nodegit/nodegit/pull/1905) +- [Upgrade libgit2 to 1.3.1](https://github.com/nodegit/nodegit/pull/1894) + +## v0.28.0-alpha.13 [(2022-03-22)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.13) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.12...v0.28.0-alpha.13) + +#### Summary of changes +- Partially fix issue with building for Electron + +#### Merged PRs into NodeGit +- [Fix electron build](https://github.com/nodegit/nodegit/pull/1901) + +## v0.28.0-alpha.12 [(2022-03-18)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.12) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.11...v0.28.0-alpha.12) + +#### Summary of changes +- Updated CI because of GitHub deprecations +- Added workaround for LFS performance regression + +#### Merged PRs into NodeGit +- [Update windows 2016 CI to 2019](https://github.com/nodegit/nodegit/pull/1897) +- [Skip "can clone with git" test, unauthenticated git protocol is no longer supported in Github](https://github.com/nodegit/nodegit/pull/1899) +- [UNSAFE Temporary workaround for LFS checkout performance regression](https://github.com/nodegit/nodegit/pull/1883) +- [Update Github Actions for node 16](https://github.com/nodegit/nodegit/pull/1896) + +## v0.28.0-alpha.11 [(2022-02-08)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.11) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.10...v0.28.0-alpha.11) + +#### Summary of changes +- Updated libssh2 to add RSA SHA2 256/512 SSH key support + +#### Merged PRs into NodeGit +- [RSA SHA2 256/512 key upgrade support RFC 8332 #536 (#626)](https://github.com/nodegit/nodegit/pull/1888) +- [Fix typos in examples](https://github.com/nodegit/nodegit/pull/1884) +- [Don't build shared OpenSSL libs](https://github.com/nodegit/nodegit/pull/1877) + +## v0.28.0-alpha.10 [(2021-11-11)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.10) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.9...v0.28.0-alpha.10) + +#### Summary of changes +- Reworked CI due to GitHub dropping Ubuntu 16.04 support +- When building for Electron on Windows/macOS and prebuilts are unavailable: NodeGit will attempt to build OpenSSL locally by default. This is due to Conan changing their API/provided OpenSSL binaries. There are options for pointing to an installed OpenSSL location or URL for downloading prebuilt binaries, see [Building from source](http://www.nodegit.org/guides/install/from-source/). +- Updated OpenSSL to 1.1.1l +- Updated libssh2 to 1.10.0 +- Added `Repo.prototype.statistics` method for calculating repository statistics +- More progress towards becoming context-aware + +#### Merged PRs into NodeGit +- [Allow download of prebuilt OpenSSL](https://github.com/nodegit/nodegit/pull/1875) +- [Update libssh2 to 1.10.0](https://github.com/nodegit/nodegit/pull/1874) +- [Statistics with same output as "git-sizer -j"](https://github.com/nodegit/nodegit/pull/1846) +- [Fix memory leak on context shutdown](https://github.com/nodegit/nodegit/pull/1856) +- [Build OpenSSL locally for Electron](https://github.com/nodegit/nodegit/pull/1870) +- [Fix a reference error when compiling with VC2019](https://github.com/nodegit/nodegit/pull/1859) +- [Use containers for Linux CI](https://github.com/nodegit/nodegit/pull/1860) + + +## v0.28.0-alpha.9 [(2021-06-04)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.9) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.8...v0.28.0-alpha.9) + +#### Summary of changes +- Fixes an issue where rebase.init and rebase.open were ignoring callbacks in some situations + +#### Merged PRs into NodeGit +- [Shallow clone rebase options before modifying #1845](https://github.com/nodegit/nodegit/pull/1845) + + +## v0.28.0-alpha.8 [(2021-05-10)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.8) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.7...v0.28.0-alpha.8) + +#### Summary of changes +- Fixes another issue where Kerberos proxy authentication causes network failures + +#### Merged PRs into NodeGit +- [Bump libgit2 to include libgit2#5852 #1844](https://github.com/nodegit/nodegit/pull/1844) + +#### Merged PRs into Libgit2 +- [Fix issues with Proxy Authentication after httpclient refactor #5852](https://github.com/libgit2/libgit2/pull/5852) + + +## v0.28.0-alpha.7 [(2021-04-30)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.7) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.6...v0.28.0-alpha.7) + +#### Summary of changes +- Fixes issue with where proxy authentication fails on linux/osx with assertion error. + +#### Merged PRs into NodeGit +- [Bump Libgit2 to fix proxy auth on linux / osx #1841](https://github.com/nodegit/nodegit/pull/1841) + +#### Merged PRs into Libgit2 +- [https://github.com/libgit2/libgit2/pull/5852](https://github.com/libgit2/libgit2/pull/5852) + + +## v0.28.0-alpha.6 [(2021-04-23)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.6) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.5...v0.28.0-alpha.6) + +#### Summary of changes +- Rewrote options normalization such that it is done in C++. Provided deprecated classes for backwards compatibility. These will be removed in a later version of Nodegit. +- Deprecated construction of these objects, in the future, please pass plain objects with just the fields you wish to override to NodeGit, and the library will take care of the rest. + - NodeGit.ApplyOptions + - NodeGit.BlameOptions + - NodeGit.BlobFilterOptions + - NodeGit.CheckoutOptions + - NodeGit.CherrypickOptions + - NodeGit.CloneOptions + - NodeGit.DescribeFormatOptions + - NodeGit.DiffFindOptions + - NodeGit.FetchOptions + - NodeGit.MergeFileInput + - NodeGit.MergeFileOptions + - NodeGit.MergeOptions + - NodeGit.ProxyOptions + - NodeGit.PushOptions + - NodeGit.RebaseOptions + - NodeGit.RemoteCreatOptions + - NodeGit.RepositoryInitOptions + - NodeGit.RevertOptions + - NodeGit.StashApplyOptions + - NodeGit.StatusOptions + - NodeGit.SubmoduleUpdateOptions +- Ensured the following functions have their optional arguments labeled/working as optional: + - NodeGit.Apply + - NodeGit.Checkout.index + - NodeGit.Cherrypick + - NodeGit.Cherrypick.commit + - NodeGit.Merge + - NodeGit.PatchBlobs + - NodeGit.Rebase.open + - NodeGit.Remote.prototype.connect + - NodeGit.Remote.prototype.download + - NodeGit.Remote.prototype.fetch + - NodeGit.Remote.prototype.prune + - NodeGit.Remote.prototype.push + - NodeGit.Remote.prototype.upload + - NodeGit.Stash.apply + - NodeGit.Stash.pop + - NodeGit.Worktree.isPrunable + - NodeGit.Worktree.prune +- Updated the following functions to be async: + - NodeGit.Apply + - NodeGit.Remote.prototype.prune + - NodeGit.Worktree.isPrunable + - NodeGit.Worktree.prune +- Addressed issue where GitWorktreePruneOptions and GitWorktreeAddOptions were impossible to instantiate, thus making working with worktress possible now. +- Addressed issue where GitIndexTime was not configurable +- Addressed issue where the following functions did not return errors from libgit2: + - NodeGit.Merge.analysis + - NodeGit.Note.commitRemove + +#### Merged PRs into NodeGit +- [Eliminate need for normalize options #1837](https://github.com/nodegit/nodegit/pull/1837) +- [Define optional arguments for Patch.fromBlobs() #1835](https://github.com/nodegit/nodegit/pull/1835) + + +## v0.28.0-alpha.5 [(2021-04-09)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.5) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.4...v0.28.0-alpha.5) + +#### Summary of changes +- Fixes crash in multithreaded checkout in fork of libgit2 + +#### Merged PRs into NodeGit +- [Update multithreaded checkout in libgit2 #1834](https://github.com/nodegit/nodegit/pull/1834) + +#### Merged PRs into Libgit2 +- [Default to GIT_BRANCH_DEFAULT if init.defaultBranch is empty string](https://github.com/libgit2/libgit2/pull/5832) +- [Remove duplicate line, in example code](https://github.com/libgit2/libgit2/pull/5821) + + +## v0.28.0-alpha.4 [(2021-04-07)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.4) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.3...v0.28.0-alpha.4) + +#### Summary of changes +- Introduces harder safeguards on persistent references to prevent garbage collection during async work + +#### Merged PRs into NodeGit +- [Workaround: Prevent objectwrap from being cleaned up during async work #1833](https://github.com/nodegit/nodegit/pull/1833) + + +## v0.28.0-alpha.3 [(2021-04-02)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.3) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.2...v0.28.0-alpha.3) + +#### Summary of changes +- Addresses failure to open repo with empty default branch name + +#### Merged PRs into NodeGit +- [Bring in changes from libgit2 #5832 #1832](https://github.com/nodegit/nodegit/pull/1832) + +#### Cherrypicked PRs into Libgit2 +- [Default to GIT_BRANCH_DEFAULT if init.defaultBranch is empty string #5832](https://github.com/libgit2/libgit2/pull/5832) + + +## v0.28.0-alpha.2 [(2021-03-31)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.28.0-alpha.1...v0.28.0-alpha.2) + +#### Summary of changes +- Addresses crash in mwindow from libgit2 +- Bumps libgit2 to bring in bug fixes + +#### Merged PRs into NodeGit +- [Bump Libgit2 to 1.1.0 (on current head of libgit2) #1831](https://github.com/nodegit/nodegit/pull/1831) + +#### Merged PRs into Libgit2 +- [tree: deprecate `git_treebuilder_write_with_buffer`](https://github.com/libgit2/libgit2/pull/5815) +- [winhttp: skip certificate check if unable to send request](https://github.com/libgit2/libgit2/pull/5814) +- [commit-graph: Introduce `git_commit_graph_needs_refresh()`](https://github.com/libgit2/libgit2/pull/5764) +- [commit-graph: Support lookups of entries in a commit-graph](https://github.com/libgit2/libgit2/pull/5763) +- [merge: Check insert_head_ids error in create_virtual_base](https://github.com/libgit2/libgit2/pull/5818) +- [Check git_signature_dup failure](https://github.com/libgit2/libgit2/pull/5817) +- [Fix some typos](https://github.com/libgit2/libgit2/pull/5797) +- [include: fix typos in comments](https://github.com/libgit2/libgit2/pull/5805) +- [Fix documentation formating on repository.h](https://github.com/libgit2/libgit2/pull/5806) +- [index: Check git_vector_dup error in write_entries](https://github.com/libgit2/libgit2/pull/5801) +- [refdb_fs: Check git_sortedcache wlock/rlock errors](https://github.com/libgit2/libgit2/pull/5800) +- [Add new bindings for the R language](https://github.com/libgit2/libgit2/pull/5795) +- [Update .gitignore](https://github.com/libgit2/libgit2/pull/5787) +- [patch: add owner accessor](https://github.com/libgit2/libgit2/pull/5731) +- [commit-graph: Introduce a parser for commit-graph files](https://github.com/libgit2/libgit2/pull/5762) +- [revspec: rename git_revparse_mode_t to git_revspec_t](https://github.com/libgit2/libgit2/pull/5786) +- [mwindow: Fix a bug in the LRU window finding code](https://github.com/libgit2/libgit2/pull/5783) +- [ci: don't use ninja on macOS](https://github.com/libgit2/libgit2/pull/5780) +- [midx: Fix a bug in `git_midx_needs_refresh()`](https://github.com/libgit2/libgit2/pull/5768) +- [clone: set refs/remotes/origin/HEAD when branch is specified](https://github.com/libgit2/libgit2/pull/5775) +- [Use `p_pwrite`/`p_pread` consistently throughout the codebase](https://github.com/libgit2/libgit2/pull/5769) +- [README: instructions for using libgit2 without compiling](https://github.com/libgit2/libgit2/pull/5772) +- [Cope with empty default branch](https://github.com/libgit2/libgit2/pull/5770) +- [github-actions: Also rename the main branch here](https://github.com/libgit2/libgit2/pull/5771) +- [blob: fix name of `GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD`](https://github.com/libgit2/libgit2/pull/5760) +- [Add documentation for git_blob_filter_options.version](https://github.com/libgit2/libgit2/pull/5759) +- [Build with NO_MMAP](https://github.com/libgit2/libgit2/pull/5583) +- [zlib: Add support for building with Chromium's zlib implementation](https://github.com/libgit2/libgit2/pull/5748) +- [Handle ipv6 addresses](https://github.com/libgit2/libgit2/pull/5741) +- [Add support for additional SSH hostkey types.](https://github.com/libgit2/libgit2/pull/5750) +- [Fix the `-DENABLE_WERROR=ON` build for gcc 10.2](https://github.com/libgit2/libgit2/pull/5749) +- [repository: use intptr_t's in the config map cache](https://github.com/libgit2/libgit2/pull/5746) +- [Add tests for `git__multiply_int64_overflow`](https://github.com/libgit2/libgit2/pull/5744) +- [Third attempt to fix the 32-bit version of `git__multiply_int64_overf…](https://github.com/libgit2/libgit2/pull/5743) +- [Avoid using `__builtin_mul_overflow` with the clang+32-bit combo](https://github.com/libgit2/libgit2/pull/5742) +- [ci: run codeql](https://github.com/libgit2/libgit2/pull/5709) +- [pack: continue zlib while we can make progress](https://github.com/libgit2/libgit2/pull/5740) +- [Re-enable the RC4 test](https://github.com/libgit2/libgit2/pull/4418) +- [Cache the parsed submodule config when diffing](https://github.com/libgit2/libgit2/pull/5727) +- [Make git__strntol64() ~70%* faster](https://github.com/libgit2/libgit2/pull/5735) +- [winhttp: support optional client cert](https://github.com/libgit2/libgit2/pull/5384) +- [git.git-authors: Replacing his/her with their](https://github.com/libgit2/libgit2/pull/5724) +- [Friendlier getting started in the lack of git_libgit2_init](https://github.com/libgit2/libgit2/pull/5578) +- [Thread-local storage: a generic internal library (with no allocations)](https://github.com/libgit2/libgit2/pull/5720) +- [Thread-free implementation](https://github.com/libgit2/libgit2/pull/5719) +- [Make the pack and mwindow implementations data-race-free](https://github.com/libgit2/libgit2/pull/5593) +- [Make the odb race-free](https://github.com/libgit2/libgit2/pull/5595) +- [Also add the raw hostkey to `git_cert_hostkey`](https://github.com/libgit2/libgit2/pull/5704) +- [Fix the `ENABLE_WERROR=ON` build in Groovy Gorilla (gcc 10.2)](https://github.com/libgit2/libgit2/pull/5715) +- [odb: Add git_odb_options](https://github.com/libgit2/libgit2/pull/5447) +- [Introduce GIT_ASSERT macros](https://github.com/libgit2/libgit2/pull/5327) +- [ci: only report main branch in README status](https://github.com/libgit2/libgit2/pull/5708) +- [ci: run coverity in the nightly builds](https://github.com/libgit2/libgit2/pull/5707) +- [ci: more GitHub Actions](https://github.com/libgit2/libgit2/pull/5706) +- [Add a ThreadSanitizer build](https://github.com/libgit2/libgit2/pull/5597) +- [msvc crtdbg -> win32 leakcheck](https://github.com/libgit2/libgit2/pull/5580) +- [Add missing worktree_dir check and test case](https://github.com/libgit2/libgit2/pull/5692) +- [Fix the `-DTHREADSAFE=OFF` build](https://github.com/libgit2/libgit2/pull/5690) +- [ci: propagate environment variables](https://github.com/libgit2/libgit2/pull/5703) +- [ci: supply a token for self-hosted runners](https://github.com/libgit2/libgit2/pull/5702) +- [ci: supply a token for self-hosted runners](https://github.com/libgit2/libgit2/pull/5701) +- [ci: GitHub Actions for arm64](https://github.com/libgit2/libgit2/pull/5700) +- [ci: stop using deprecated set-env in GitHub Actions](https://github.com/libgit2/libgit2/pull/5697) +- [Deprecate `is_valid_name` functions; replace with `name_is_valid` functions](https://github.com/libgit2/libgit2/pull/5659) +- [Include `${MBEDTLS_INCLUDE_DIR}` when compiling `crypt_mbedtls.c`](https://github.com/libgit2/libgit2/pull/5685) +- [threadstate: rename tlsdata when building w/o threads](https://github.com/libgit2/libgit2/pull/5668) +- [Refactor "global" state](https://github.com/libgit2/libgit2/pull/5546) +- [Make the Windows leak detection more robust](https://github.com/libgit2/libgit2/pull/5661) +- [Define `git___load` when building with `-DTHREADSAFE=OFF`](https://github.com/libgit2/libgit2/pull/5664) +- [ntlm: update ntlm dependency for htonll](https://github.com/libgit2/libgit2/pull/5658) +- [libgit2 v1.1.0](https://github.com/libgit2/libgit2/pull/5660) +- [Update PCRE to 8.44](https://github.com/libgit2/libgit2/pull/5649) +- [clone: update origin's HEAD](https://github.com/libgit2/libgit2/pull/5651) +- [Improve the support of atomics](https://github.com/libgit2/libgit2/pull/5594) +- [Fix error return for invalid extensions.](https://github.com/libgit2/libgit2/pull/5656) +- [Change bare free to allocator free (fixes #5653)](https://github.com/libgit2/libgit2/pull/5654) +- [midx: Introduce a parser for multi-pack-index files](https://github.com/libgit2/libgit2/pull/5401) +- [Fixed typo in comment](https://github.com/libgit2/libgit2/pull/5648) +- [Fix binary diff showing /dev/null](https://github.com/libgit2/libgit2/pull/5494) +- [httpclient: only free challenges for current_server type](https://github.com/libgit2/libgit2/pull/5576) +- [Respect `init.defaultBranch` setting](https://github.com/libgit2/libgit2/pull/5581) +- [patch_parse: handle absence of "index" header for new/deleted cases](https://github.com/libgit2/libgit2/pull/5620) +- [boolean config parsing fails in some cases with mapped values](https://github.com/libgit2/libgit2/pull/5626) +- [Fix config file parsing with multi line values containing quoted parts](https://github.com/libgit2/libgit2/pull/5629) +- [Fix release build warnings](https://github.com/libgit2/libgit2/pull/5636) +- [Fix deprecation links inside of documentation not working](https://github.com/libgit2/libgit2/pull/5631) +- [Fix typo: Make ifndef macroname the same as the define name](https://github.com/libgit2/libgit2/pull/5632) +- [diff stats: fix segfaults with new files](https://github.com/libgit2/libgit2/pull/5619) +- [WinHTTP: Try to use TLS1.3](https://github.com/libgit2/libgit2/pull/5633) +- [Fixed includes for FreeBSD](https://github.com/libgit2/libgit2/pull/5628) +- [Don't fail if a HTTP server announces he supports a protocol upgrade](https://github.com/libgit2/libgit2/pull/5624) +- [Return false instead of segfaulting when checking for default port](https://github.com/libgit2/libgit2/pull/5621) +- [deps: ntlmclient: fix htonll for Haiku](https://github.com/libgit2/libgit2/pull/5612) +- [azure: Remove job generating documentation](https://github.com/libgit2/libgit2/pull/5615) +- [Fix crash in git_describe_commit when opts are NULL.](https://github.com/libgit2/libgit2/pull/5617) +- [Fix `git_mwindow_scan_recently_used` spuriously returning true](https://github.com/libgit2/libgit2/pull/5600) +- [zstream: handle Z_BUF_ERROR appropriately in get_output_chunk](https://github.com/libgit2/libgit2/pull/5599) +- [docs: fix typo](https://github.com/libgit2/libgit2/pull/5610) + + +## v0.28.0-alpha.1 [(2021-03-12)](https://github.com/nodegit/nodegit/releases/tag/v0.28.0-alpha.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.27.0...v0.28.0-alpha.1) + +#### Summary of changes +- *Notice* We planned to fix / address Electron 11 compatibility, but ran into some roadblocks. Fix is coming soon, follow [#114](https://github.com/nodegit/nodegit/issues/1774) for details +- Drops support for Node 10.x.y, < 12.19.x, < 14.10.0 +- Brings in LibGit2 1.0.0 +- NodeGit.Config.prototype.setBool handles truthiness, and NodeGit.Config.prototype.getBool returns true or false +- Fix GC ownership memory issue +- Exposes sidebandProgress callback in GitRemoteCallbacks +- Fixes issue with winhttp and optional client certificates +- Addresses proxy issue with certification validation in Windows +- Fix crash in NodeGit.Repository.prototype.refreshReferences +- Deprecations + - NodeGit.Cred is deprecated in favor of NodeGit.Credential + +#### Merged PRs into NodeGit +- [Include libgit2 winhttp proxy fix #1824](https://github.com/nodegit/nodegit/pull/1824) +- [Return/accept boolean for Config#get/setBool #1827](https://github.com/nodegit/nodegit/pull/1827) +- [First stab at #1800 (async/await in examples) #1802](https://github.com/nodegit/nodegit/pull/1802) +- [returns_info: fix ownedByIndices #1823](https://github.com/nodegit/nodegit/pull/1823) +- [Remove block for sideband_progress in remote_callbacks #1801](https://github.com/nodegit/nodegit/pull/1801) +- [Use key to grab credential type #1828](https://github.com/nodegit/nodegit/pull/1828) +- [Don't strdup nullptr from git_tag_message #1822](https://github.com/nodegit/nodegit/pull/1822) +- [Refactor for context-awareness #1795](https://github.com/nodegit/nodegit/pull/1795) +- [Update longpath enums to match libgit2 #1797](https://github.com/nodegit/nodegit/pull/1797) +- [Bump libgit2 to fork of v1.0.0 #1788](https://github.com/nodegit/nodegit/pull/1788) + +#### Merged PRs into Libgit2 +- [winhttp: skip certificate check if unable to send request #5814](https://github.com/libgit2/libgit2/pull/5814) +- [sanitizer ci: skip negotiate tests](https://github.com/libgit2/libgit2/pull/5596) +- [Add CI support for Memory and UndefinedBehavior Sanitizers](https://github.com/libgit2/libgit2/pull/5569) +- [Access HEAD via the refdb backends](https://github.com/libgit2/libgit2/pull/5563) +- [config_entries: Avoid excessive map operations](https://github.com/libgit2/libgit2/pull/5582) +- [mwindow: set limit on number of open files](https://github.com/libgit2/libgit2/pull/5396) +- [refdb: a set of preliminary refactorings for the reftable backend](https://github.com/libgit2/libgit2/pull/5570) +- [CMake modernization pt2](https://github.com/libgit2/libgit2/pull/5547) +- [Make the tests run cleanly under UndefinedBehaviorSanitizer](https://github.com/libgit2/libgit2/pull/5568) +- [Make the tests pass cleanly with MemorySanitizer](https://github.com/libgit2/libgit2/pull/5567) +- [Enable building git2.rc resource script with GCC](https://github.com/libgit2/libgit2/pull/5561) +- [Make NTLMClient Memory and UndefinedBehavior Sanitizer-clean](https://github.com/libgit2/libgit2/pull/5571) +- [Random fixes for diff-printing](https://github.com/libgit2/libgit2/pull/5559) +- [index: Update the documentation for git_index_add_from_buffer()](https://github.com/libgit2/libgit2/pull/5419) +- [Introduce CI with GitHub Actions](https://github.com/libgit2/libgit2/pull/5550) +- [Random code cleanups and fixes](https://github.com/libgit2/libgit2/pull/5552) +- [examples: log: fix documentation generation](https://github.com/libgit2/libgit2/pull/5553) +- [Missing declarations](https://github.com/libgit2/libgit2/pull/5551) +- [clar: add tap output option](https://github.com/libgit2/libgit2/pull/5541) +- [diff::parse: don't include `diff.h`](https://github.com/libgit2/libgit2/pull/5545) +- [release script: fix typo](https://github.com/libgit2/libgit2/pull/5543) +- [tests: offer exact name matching with a `$` suffix](https://github.com/libgit2/libgit2/pull/5537) +- [httpclient: support googlesource](https://github.com/libgit2/libgit2/pull/5536) +- [git_packbuilder_write: Allow setting path to NULL to use the default path](https://github.com/libgit2/libgit2/pull/5532) +- [mempack: Use threads when building the pack](https://github.com/libgit2/libgit2/pull/5531) +- [clar: use internal functions instead of /bin/cp and /bin/rm](https://github.com/libgit2/libgit2/pull/5528) +- [strarray refactoring](https://github.com/libgit2/libgit2/pull/5535) +- [CMake cleanups](https://github.com/libgit2/libgit2/pull/5481) +- [git_pool_init: allow the function to fail](https://github.com/libgit2/libgit2/pull/5526) +- [diff::workdir: actually test the buffers](https://github.com/libgit2/libgit2/pull/5529) +- [Handle unreadable configuration files](https://github.com/libgit2/libgit2/pull/5527) +- [Make git_index_write() generate valid v4 index](https://github.com/libgit2/libgit2/pull/5533) +- [OpenSSL certificate memory leak](https://github.com/libgit2/libgit2/pull/5522) +- [tests: checkout: fix flaky test due to mtime race](https://github.com/libgit2/libgit2/pull/5515) +- [cmake: Sort source files for reproducible builds](https://github.com/libgit2/libgit2/pull/5523) +- [futils: fix order of declared parameters for `git_futils_fake_symlink`](https://github.com/libgit2/libgit2/pull/5517) +- [Check the version in package.json](https://github.com/libgit2/libgit2/pull/5516) +- [tests: merge: fix printf formatter on 32 bit arches](https://github.com/libgit2/libgit2/pull/5513) +- [Update package.json](https://github.com/libgit2/libgit2/pull/5511) +- [Introduce GIT_ASSERT macros](https://github.com/libgit2/libgit2/pull/5509) +- [README.md: Add instructions for building in MinGW environment](https://github.com/libgit2/libgit2/pull/5512) +- [Fix uninitialized stack memory and NULL ptr dereference in stash_to_index](https://github.com/libgit2/libgit2/pull/5510) +- [Honor GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH for all checkout types ](https://github.com/libgit2/libgit2/pull/5378) +- [docs: add documentation for our coding style](https://github.com/libgit2/libgit2/pull/5482) +- [MSVC: Enable Control Flow Guard (CFG)](https://github.com/libgit2/libgit2/pull/5500) +- [git__hexdump: better mimic `hexdump -C`](https://github.com/libgit2/libgit2/pull/5431) +- [Feature: Allow blame to ignore whitespace change](https://github.com/libgit2/libgit2/pull/5383) +- [deps: ntlmclient: use htobe64 on NetBSD too](https://github.com/libgit2/libgit2/pull/5487) +- [sysdir: remove unused git_sysdir_get_str](https://github.com/libgit2/libgit2/pull/5485) +- [Fix typo causing removal of symbol 'git_worktree_prune_init_options'](https://github.com/libgit2/libgit2/pull/5483) +- [pack: Improve error handling for get_delta_base()](https://github.com/libgit2/libgit2/pull/5425) +- [repo::open: ensure we can open the repository](https://github.com/libgit2/libgit2/pull/5480) +- [examples: additions and fixes](https://github.com/libgit2/libgit2/pull/5421) +- [merge: cache negative cache results for similarity metrics](https://github.com/libgit2/libgit2/pull/5477) +- [Handle repository format v1](https://github.com/libgit2/libgit2/pull/5388) +- [CMake: backend selection streamlining](https://github.com/libgit2/libgit2/pull/5440) +- [refdb_fs: remove unused header file](https://github.com/libgit2/libgit2/pull/5461) +- [patch: correctly handle mode changes for renames](https://github.com/libgit2/libgit2/pull/5466) +- [gitignore: clean up patterns from old times](https://github.com/libgit2/libgit2/pull/5474) +- [README.md: update build matrix to reflect our latest releases](https://github.com/libgit2/libgit2/pull/5478) +- [Release v1.0](https://github.com/libgit2/libgit2/pull/5471) +- [refdb_backend: improve callback documentation](https://github.com/libgit2/libgit2/pull/5464) +- [credentials: provide backcompat for opaque structs](https://github.com/libgit2/libgit2/pull/5465) +- [Fix segfault when calling git_blame_buffer()](https://github.com/libgit2/libgit2/pull/5445) +- [Fix spelling error](https://github.com/libgit2/libgit2/pull/5463) +- [refdb_fs: initialize backend version](https://github.com/libgit2/libgit2/pull/5456) +- [repository: improve commondir docs](https://github.com/libgit2/libgit2/pull/5444) +- [cmake: use install directories provided via GNUInstallDirs](https://github.com/libgit2/libgit2/pull/5455) +- [azure: fix errors due to curl and removal of old VM images](https://github.com/libgit2/libgit2/pull/5451) +- [win32: don't canonicalize relative paths](https://github.com/libgit2/libgit2/pull/5435) +- [CMake booleans](https://github.com/libgit2/libgit2/pull/5422) +- [Set proper pkg-config dependency for pcre2](https://github.com/libgit2/libgit2/pull/5439) +- [httpclient: use a 16kb read buffer for macOS](https://github.com/libgit2/libgit2/pull/5432) +- [ci: provide globalsign certs for bionic](https://github.com/libgit2/libgit2/pull/5437) +- [deps: ntlmclient: fix htonll on big endian FreeBSD](https://github.com/libgit2/libgit2/pull/5426) +- [azure-pipelines: download GlobalSign's certificate manually](https://github.com/libgit2/libgit2/pull/5433) +- [deps: ntlmclient: fix missing htonll symbols on FreeBSD and SunOS](https://github.com/libgit2/libgit2/pull/5417) +- [README: add language binding link to wasm-git](https://github.com/libgit2/libgit2/pull/5420) +- [Fix #5410: fix installing libgit2.pc in wrong location](https://github.com/libgit2/libgit2/pull/5412) +- [Fix typo on GIT_USE_NEC](https://github.com/libgit2/libgit2/pull/5413) +- [tests: diff: verify that we are able to diff with empty subtrees](https://github.com/libgit2/libgit2/pull/5374) +- [README: update our build matrix to reflect current releases](https://github.com/libgit2/libgit2/pull/5408) +- [azure: docker: set up HOME variable to fix Coverity builds](https://github.com/libgit2/libgit2/pull/5409) +- [sha1_lookup: inline its only function into "pack.c"](https://github.com/libgit2/libgit2/pull/5390) +- [Coverity fixes](https://github.com/libgit2/libgit2/pull/5391) +- [Release 0.99](https://github.com/libgit2/libgit2/pull/5291) +- [Release script](https://github.com/libgit2/libgit2/pull/5372) +- [azure: fix ARM32 builds by replacing gosu(1)](https://github.com/libgit2/libgit2/pull/5406) +- [openssl: fix Valgrind issues in nightly builds](https://github.com/libgit2/libgit2/pull/5398) +- [fuzzers: Fix the documentation](https://github.com/libgit2/libgit2/pull/5400) +- [azure: fix misleading messages printed to stderr being](https://github.com/libgit2/libgit2/pull/5392) +- [tests: iterator: fix iterator expecting too few items](https://github.com/libgit2/libgit2/pull/5393) +- [transports: http: fix custom headers not being applied](https://github.com/libgit2/libgit2/pull/5387) +- [azure: fix Coverity pipeline](https://github.com/libgit2/libgit2/pull/5382) +- [azure: tests: re-run flaky proxy tests](https://github.com/libgit2/libgit2/pull/5381) +- [fetchhead: strip credentials from remote URL](https://github.com/libgit2/libgit2/pull/5373) +- [azure-pipelines: properly expand negotiate passwords](https://github.com/libgit2/libgit2/pull/5375) +- [cred: change enum to git_credential_t and GIT_CREDENTIAL_*](https://github.com/libgit2/libgit2/pull/5336) +- [Update link to libgit2 Julia language binding](https://github.com/libgit2/libgit2/pull/5371) +- [Return int from non-free functions](https://github.com/libgit2/libgit2/pull/5365) +- [HTTP: Support Apache-based servers with Negotiate](https://github.com/libgit2/libgit2/pull/5286) +- [internal types: change enums from `type_t` to `_t`](https://github.com/libgit2/libgit2/pull/5364) +- [merge: Return non-const git_repository from accessor method](https://github.com/libgit2/libgit2/pull/5358) +- [Do not return free'd git_repository object on error](https://github.com/libgit2/libgit2/pull/5361) +- [refs: refuse to delete HEAD](https://github.com/libgit2/libgit2/pull/5360) +- [index: replace map macros with inline functions](https://github.com/libgit2/libgit2/pull/5351) +- [Make type mismatch errors consistent](https://github.com/libgit2/libgit2/pull/5359) +- [win32: fix relative symlinks pointing into dirs](https://github.com/libgit2/libgit2/pull/5355) +- [ntlm: prevent (spurious) compiler warnings](https://github.com/libgit2/libgit2/pull/5354) +- [Adds support for multiple SSH auth mechanisms being used sequentially](https://github.com/libgit2/libgit2/pull/5305) +- [netops: handle intact query parameters in service_suffix removal](https://github.com/libgit2/libgit2/pull/5339) +- [Refactor packfile code to use zstream abstraction](https://github.com/libgit2/libgit2/pull/5340) +- [Fix git_submodule_sync with relative url](https://github.com/libgit2/libgit2/pull/5322) +- [http: avoid generating double slashes in url](https://github.com/libgit2/libgit2/pull/5325) +- [Correct typo in name of referenced parameter](https://github.com/libgit2/libgit2/pull/5348) +- [patch_parse: fix undefined behaviour due to arithmetic on NULL pointers](https://github.com/libgit2/libgit2/pull/5338) +- [smart_pkt: fix overflow resulting in OOB read/write of one byte](https://github.com/libgit2/libgit2/pull/5337) +- [branch: clarify documentation around branches](https://github.com/libgit2/libgit2/pull/5300) +- [examples: checkout: implement guess heuristic for remote branches](https://github.com/libgit2/libgit2/pull/5283) +- [Minor doc improvements](https://github.com/libgit2/libgit2/pull/5320) +- [attr: Update definition of binary macro](https://github.com/libgit2/libgit2/pull/5333) +- [Security fixes for master](https://github.com/libgit2/libgit2/pull/5331) +- [release.md: note that we do two security releases](https://github.com/libgit2/libgit2/pull/5318) +- [MSVC: Fix warning C4133 on x64: "function": Incompatible types - from "unsigned long *" to "size_t *"](https://github.com/libgit2/libgit2/pull/5317) +- [ci: only push docs from the libgit2/libgit2 repo](https://github.com/libgit2/libgit2/pull/5316) +- [global: convert to fiber-local storage to fix exit races](https://github.com/libgit2/libgit2/pull/5314) +- [Fix copy&paste in git_cherrypick_commit docstring](https://github.com/libgit2/libgit2/pull/5315) +- [patch_parse: fix out-of-bounds reads caused by integer underflow](https://github.com/libgit2/libgit2/pull/5312) +- [tests: fix compiler warning if tracing is disabled](https://github.com/libgit2/libgit2/pull/5311) +- [tests: config: only test parsing huge file with GITTEST_INVASIVE_SPEED](https://github.com/libgit2/libgit2/pull/5313) +- [diff: complete support for git patchid](https://github.com/libgit2/libgit2/pull/5306) +- [Memory optimizations for config entries](https://github.com/libgit2/libgit2/pull/5243) +- [ssh: include sha256 host key hash when supported](https://github.com/libgit2/libgit2/pull/5307) +- [Various examples shape-ups](https://github.com/libgit2/libgit2/pull/5272) +- [Improve trace support in tests](https://github.com/libgit2/libgit2/pull/5309) +- [Move `git_off_t` to `git_object_size_t`](https://github.com/libgit2/libgit2/pull/5123) +- [Add compat typdef for git_attr_t](https://github.com/libgit2/libgit2/pull/5310) +- [CI Build Updates](https://github.com/libgit2/libgit2/pull/5308) +- [patch_parse: use paths from "---"/"+++" lines for binary patches](https://github.com/libgit2/libgit2/pull/5303) +- [Follow 308 redirect in WinHTTP transport](https://github.com/libgit2/libgit2/pull/5285) +- [fileops: correct error return on p_lstat failures when mkdir](https://github.com/libgit2/libgit2/pull/5302) +- [config_mem: implement support for snapshots](https://github.com/libgit2/libgit2/pull/5299) +- [patch_parse: fix segfault when header path contains whitespace only](https://github.com/libgit2/libgit2/pull/5298) +- [config_file: fix race when creating an iterator](https://github.com/libgit2/libgit2/pull/5282) +- [Fix crash if snapshotting a config_snapshot](https://github.com/libgit2/libgit2/pull/5293) +- [fix a bug introduced in 8a23597b](https://github.com/libgit2/libgit2/pull/5295) +- [reflogs: fix behaviour around reflogs with newlines](https://github.com/libgit2/libgit2/pull/5275) +- [commit: verify objects exist in git_commit_with_signature](https://github.com/libgit2/libgit2/pull/5289) +- [patch_parse: fixes for fuzzing errors](https://github.com/libgit2/libgit2/pull/5276) +- [apply: add GIT_APPLY_CHECK](https://github.com/libgit2/libgit2/pull/5227) +- [refs: unlock unmodified refs on transaction commit](https://github.com/libgit2/libgit2/pull/5264) +- [fuzzers: add a new fuzzer for patch parsing](https://github.com/libgit2/libgit2/pull/5269) +- [patch_parse: handle patches without extended headers](https://github.com/libgit2/libgit2/pull/5273) +- [Provide a wrapper for simple submodule clone steps](https://github.com/libgit2/libgit2/pull/4637) +- [macOS GSS Support](https://github.com/libgit2/libgit2/pull/5238) +- [cmake: correct the link stanza for CoreFoundation](https://github.com/libgit2/libgit2/pull/5265) +- [Fix file locking on POSIX OS](https://github.com/libgit2/libgit2/pull/5257) +- [cmake: update minimum CMake version to v3.5.1](https://github.com/libgit2/libgit2/pull/5260) +- [patch_parse: handle patches with new empty files](https://github.com/libgit2/libgit2/pull/5248) +- [DRY commit parsing](https://github.com/libgit2/libgit2/pull/4445) +- [azure: avoid building and testing in Docker as root](https://github.com/libgit2/libgit2/pull/5239) +- [regexp: implement a new regular expression API](https://github.com/libgit2/libgit2/pull/5226) +- [git_refdb API fixes](https://github.com/libgit2/libgit2/pull/5106) +- [Don't use enum for flags](https://github.com/libgit2/libgit2/pull/5242) +- [valgrind: suppress memory leaks in libssh2_session_handshake](https://github.com/libgit2/libgit2/pull/5240) +- [buffer: fix writes into out-of-memory buffers](https://github.com/libgit2/libgit2/pull/5232) +- [cred: add missing private header in GSSAPI block](https://github.com/libgit2/libgit2/pull/5237) +- [CMake pkg-config modulification](https://github.com/libgit2/libgit2/pull/5206) +- [Update chat resources in README.md](https://github.com/libgit2/libgit2/pull/5229) +- [Circular header splitting](https://github.com/libgit2/libgit2/pull/5223) + +## v0.27.0 [(2020-07-28)](https://github.com/nodegit/nodegit/releases/tag/v0.27.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.5...v0.27.0) + +#### Summary of changes +- Expose git_remote_rename +- Bump OpenSSL from 1.1.0i -> 1.1.1c in Windows/Mac OS Electron builds +- Replace unmaintained request library with got +- Remove promisify-node and use vanilla promises for all NodeGit promises +- Prebuilds for Node 14, deprecate Node 8 +- Persist RemoteCallbacks and ProxyOptions on the remote if using Remote.prototype.connect. This fixes a segfault when using any routines on a connected remote. + +####Merged PRs into NodeGit +- [Upgrade build environments #1785](https://github.com/nodegit/nodegit/pull/1785) +- [Remote needs to persist the callback/proxyOpts/headers #1784](https://github.com/nodegit/nodegit/pull/1784) +- [Remove promisify-node and remove old callback api remnants](https://github.com/nodegit/nodegit/pull/1772) +- [Replace deprecated package request with got](https://github.com/nodegit/nodegit/pull/1771) +- [Bump OpenSSL prebuilt to 1.1.1c](https://github.com/nodegit/nodegit/pull/1770) +- [Expose git_remote_rename](https://github.com/nodegit/nodegit/pull/1767) +- [Dedupe Remote.prototype.fetch](https://github.com/nodegit/nodegit/pull/1766) + +## v0.27.0-alpha.1 [(2020-03-26)](https://github.com/nodegit/nodegit/releases/tag/v0.27.0-alpha.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.5...v0.27.0-alpha.1) + +#### Summary of changes +- Expose git_remote_rename +- Bump OpenSSL from 1.1.0i -> 1.1.1c in Windows/Mac OS Electron builds +- Replace unmaintained request library with got +- Remove promisify-node and use vanilla promises for all NodeGit promises + +#### Merged PRs into NodeGit +- [Remove promisify-node and remove old callback api remnants](https://github.com/nodegit/nodegit/pull/1772) +- [Replace deprecated package request with got](https://github.com/nodegit/nodegit/pull/1771) +- [Bump OpenSSL prebuilt to 1.1.1c](https://github.com/nodegit/nodegit/pull/1770) +- [Expose git_remote_rename](https://github.com/nodegit/nodegit/pull/1767) +- [Dedupe Remote.prototype.fetch](https://github.com/nodegit/nodegit/pull/1766) + + +## v0.26.5 [(2020-02-27)](https://github.com/nodegit/nodegit/releases/tag/v0.26.5) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.4...v0.26.5) + +#### Summary of changes +- Bring in improvement to client certificate handling on Windows from [winhttp: support optional client cert #5384](https://github.com/libgit2/libgit2/pull/5384) +- `Commit.prototype.parent()` now correctly assigns the repo property on the retrieved commit. This should solve certain bugs when working with a commit retrieved from `parent`. + +#### Merged PRs into NodeGit +- [Bring in Libgit2 #5384 to NodeGit](https://github.com/nodegit/nodegit/pull/1758) +- [Fix behavior of Commit#parent](https://github.com/nodegit/nodegit/pull/1509) +- [Remove DiffList](https://github.com/nodegit/nodegit/pull/1733) +- [Remove unnecessary assignment of Commit#repo](https://github.com/nodegit/nodegit/pull/1508) + +#### Merged PRs into LibGit2 +- [winhttp: support optional client cert #5384](https://github.com/libgit2/libgit2/pull/5384) +- [Support `core.longpaths` on Windows #5347](https://github.com/libgit2/libgit2/pull/5347) +- [Parallelize checkout_create_the_new for perf #4205](https://github.com/libgit2/libgit2/pull/4205) + + +## v0.26.4 [(2020-01-14)](https://github.com/nodegit/nodegit/releases/tag/v0.26.4) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.3...v0.26.4) + +#### Summary of changes +- Bumped LibGit2 + - Now can be configured to support longpaths on Windows. Does not respect the config value, but is configured through `NodeGit.Libgit2.opts`. See [#1748](https://github.com/nodegit/nodegit/pull/1748) for details. + - Support for complex SSH auth creds handshakes +- Pulled in patch for Libssh2 that covers an integer overflow, see [Libssh2#402](https://github.com/libssh2/libssh2/pull/402) + +#### Merged PRs into NodeGit +- [Fix some issues from the libgit2 bump](https://github.com/nodegit/nodegit/pull/1751) +- [Add option to support longpaths on Windows](https://github.com/nodegit/nodegit/pull/1748) +- [Bring in libssh2#402](https://github.com/nodegit/nodegit/pull/1749) +- [Wait for copy and remove promises to finish](https://github.com/nodegit/nodegit/pull/1730) + +#### Merged PRs into LibGit2 +- [Support `core.longpaths` on Windows #5347](https://github.com/libgit2/libgit2/pull/5347) +- [Parallelize checkout_create_the_new for perf #4205](https://github.com/libgit2/libgit2/pull/4205) +- [win32: fix relative symlinks pointing into dirs](https://github.com/libgit2/libgit2/pull/5355) +- [ntlm: prevent (spurious) compiler warnings](https://github.com/libgit2/libgit2/pull/5354) +- [Adds support for multiple SSH auth mechanisms being used sequentially](https://github.com/libgit2/libgit2/pull/5305) +- [netops: handle intact query parameters in service_suffix removal](https://github.com/libgit2/libgit2/pull/5339) +- [Refactor packfile code to use zstream abstraction](https://github.com/libgit2/libgit2/pull/5340) +- [Fix git_submodule_sync with relative url](https://github.com/libgit2/libgit2/pull/5322) +- [http: avoid generating double slashes in url](https://github.com/libgit2/libgit2/pull/5325) +- [Correct typo in name of referenced parameter](https://github.com/libgit2/libgit2/pull/5348) +- [patch_parse: fix undefined behaviour due to arithmetic on NULL pointers](https://github.com/libgit2/libgit2/pull/5338) +- [smart_pkt: fix overflow resulting in OOB read/write of one byte](https://github.com/libgit2/libgit2/pull/5337) +- [branch: clarify documentation around branches](https://github.com/libgit2/libgit2/pull/5300) +- [examples: checkout: implement guess heuristic for remote branches](https://github.com/libgit2/libgit2/pull/5283) +- [Minor doc improvements](https://github.com/libgit2/libgit2/pull/5320) +- [attr: Update definition of binary macro](https://github.com/libgit2/libgit2/pull/5333) +- [Security fixes for master](https://github.com/libgit2/libgit2/pull/5331) +- [release.md: note that we do two security releases](https://github.com/libgit2/libgit2/pull/5318) +- [MSVC: Fix warning C4133 on x64: "function": Incompatible types - from "unsigned long *" to "size_t *"](https://github.com/libgit2/libgit2/pull/5317) +- [ci: only push docs from the libgit2/libgit2 repo](https://github.com/libgit2/libgit2/pull/5316) +- [global: convert to fiber-local storage to fix exit races](https://github.com/libgit2/libgit2/pull/5314) +- [Fix copy&paste in git_cherrypick_commit docstring](https://github.com/libgit2/libgit2/pull/5315) +- [patch_parse: fix out-of-bounds reads caused by integer underflow](https://github.com/libgit2/libgit2/pull/5312) +- [tests: fix compiler warning if tracing is disabled](https://github.com/libgit2/libgit2/pull/5311) +- [tests: config: only test parsing huge file with GITTEST_INVASIVE_SPEED](https://github.com/libgit2/libgit2/pull/5313) +- [diff: complete support for git patchid](https://github.com/libgit2/libgit2/pull/5306) +- [Memory optimizations for config entries](https://github.com/libgit2/libgit2/pull/5243) +- [ssh: include sha256 host key hash when supported](https://github.com/libgit2/libgit2/pull/5307) +- [Various examples shape-ups](https://github.com/libgit2/libgit2/pull/5272) +- [Improve trace support in tests](https://github.com/libgit2/libgit2/pull/5309) +- [Move `git_off_t` to `git_object_size_t`](https://github.com/libgit2/libgit2/pull/5123) +- [Add compat typdef for git_attr_t](https://github.com/libgit2/libgit2/pull/5310) +- [CI Build Updates](https://github.com/libgit2/libgit2/pull/5308) +- [patch_parse: use paths from "---"/"+++" lines for binary patches](https://github.com/libgit2/libgit2/pull/5303) +- [Follow 308 redirect in WinHTTP transport](https://github.com/libgit2/libgit2/pull/5285) +- [fileops: correct error return on p_lstat failures when mkdir](https://github.com/libgit2/libgit2/pull/5302) +- [config_mem: implement support for snapshots](https://github.com/libgit2/libgit2/pull/5299) +- [patch_parse: fix segfault when header path contains whitespace only](https://github.com/libgit2/libgit2/pull/5298) +- [config_file: fix race when creating an iterator](https://github.com/libgit2/libgit2/pull/5282) +- [Fix crash if snapshotting a config_snapshot](https://github.com/libgit2/libgit2/pull/5293) +- [fix a bug introduced in 8a23597b](https://github.com/libgit2/libgit2/pull/5295) +- [reflogs: fix behaviour around reflogs with newlines](https://github.com/libgit2/libgit2/pull/5275) +- [commit: verify objects exist in git_commit_with_signature](https://github.com/libgit2/libgit2/pull/5289) +- [patch_parse: fixes for fuzzing errors](https://github.com/libgit2/libgit2/pull/5276) +- [apply: add GIT_APPLY_CHECK](https://github.com/libgit2/libgit2/pull/5227) +- [refs: unlock unmodified refs on transaction commit](https://github.com/libgit2/libgit2/pull/5264) +- [fuzzers: add a new fuzzer for patch parsing](https://github.com/libgit2/libgit2/pull/5269) +- [patch_parse: handle patches without extended headers](https://github.com/libgit2/libgit2/pull/5273) +- [Provide a wrapper for simple submodule clone steps](https://github.com/libgit2/libgit2/pull/4637) +- [macOS GSS Support](https://github.com/libgit2/libgit2/pull/5238) +- [cmake: correct the link stanza for CoreFoundation](https://github.com/libgit2/libgit2/pull/5265) +- [Fix file locking on POSIX OS](https://github.com/libgit2/libgit2/pull/5257) +- [cmake: update minimum CMake version to v3.5.1](https://github.com/libgit2/libgit2/pull/5260) +- [patch_parse: handle patches with new empty files](https://github.com/libgit2/libgit2/pull/5248) +- [DRY commit parsing](https://github.com/libgit2/libgit2/pull/4445) +- [azure: avoid building and testing in Docker as root](https://github.com/libgit2/libgit2/pull/5239) +- [regexp: implement a new regular expression API](https://github.com/libgit2/libgit2/pull/5226) +- [git_refdb API fixes](https://github.com/libgit2/libgit2/pull/5106) +- [Don't use enum for flags](https://github.com/libgit2/libgit2/pull/5242) +- [valgrind: suppress memory leaks in libssh2_session_handshake](https://github.com/libgit2/libgit2/pull/5240) +- [buffer: fix writes into out-of-memory buffers](https://github.com/libgit2/libgit2/pull/5232) +- [cred: add missing private header in GSSAPI block](https://github.com/libgit2/libgit2/pull/5237) +- [CMake pkg-config modulification](https://github.com/libgit2/libgit2/pull/5206) +- [Update chat resources in README.md](https://github.com/libgit2/libgit2/pull/5229) +- [Circular header splitting](https://github.com/libgit2/libgit2/pull/5223) + + +## v0.26.3 [(2019-12-10)](https://github.com/nodegit/nodegit/releases/tag/v0.26.3) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.2...v0.26.3) + +#### Summary of changes +- Include LibGit2 security patch: https://github.com/libgit2/libgit2/releases/tag/v0.28.4 + +#### Merged PRs into NodeGit +- [Bring in security patches from libgit2 #1743](https://github.com/nodegit/nodegit/pull/1743) + + +## v0.26.2 [(2019-09-26)](https://github.com/nodegit/nodegit/releases/tag/v0.26.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.1...v0.26.2) + +#### Summary of changes +- Added options to fetch additional data (gpg signature) from LibGit2 in revWalk.prototype.commitWalk and return plain objects + - _revWalk.prototype.commitWalk(numCommits: number, { returnPlainObjects: boolean })_ + +#### Merged PRs into NodeGit +- [Optionally retrieve more data on commit walk #1728](https://github.com/nodegit/nodegit/pull/1728) + + +## v0.26.1 [(2019-09-16)](https://github.com/nodegit/nodegit/releases/tag/v0.26.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.26.0...v0.26.1) + +#### Summary of changes +- Bumped LibGit2 + - Additional git ignore fixes + - Allow credentials callback to return any credential type from list of supported types + - Memory leak and allocation fixes +- updateTips has optional parameters and should convert plain objects into options structs correctly now +- Added Nodegit.Blob.prototype.filter, this should be used instead of NodeGit.Blob.filteredContent as it is not deprecated. + +#### Merged PRs into NodeGit +- [Bump libgit2 to latest fork of master #1723](https://github.com/nodegit/nodegit/pull/1723) +- [updateTips: optional param and normalizeOptions #1722](https://github.com/nodegit/nodegit/pull/1722) + +#### Merged PRs into LibGit2 +- [Parallelize checkout_create_the_new for perf #4205](https://github.com/libgit2/libgit2/pull/4205) +- [azure: build Docker images as part of the pipeline](https://github.com/libgit2/libgit2/pull/5198) +- [smart: use push_glob instead of manual filtering](https://github.com/libgit2/libgit2/pull/5195) +- [ntlm: fix failure to find openssl headers](https://github.com/libgit2/libgit2/pull/5216) +- [cmake: remove extraneous logging](https://github.com/libgit2/libgit2/pull/5222) +- [open:fix memory leak when passing NULL to git_repository_open_ext](https://github.com/libgit2/libgit2/pull/5224) +- [apply: Fix a patch corruption related to EOFNL handling](https://github.com/libgit2/libgit2/pull/5209) +- [ignore: correct handling of nested rules overriding wild card unignore](https://github.com/libgit2/libgit2/pull/5210) +- [Memory allocation fixes for diff generator](https://github.com/libgit2/libgit2/pull/5214) +- [Use an HTTP scheme that supports the given credentials](https://github.com/libgit2/libgit2/pull/5212) +- [apply: git_apply_to_tree fails to apply patches that add new files](https://github.com/libgit2/libgit2/pull/5208) +- [Optionally read `.gitattributes` from HEAD](https://github.com/libgit2/libgit2/pull/5189) +- [config: implement "onbranch" conditional](https://github.com/libgit2/libgit2/pull/5196) +- [Fix include casing for case-sensitive filesystems.](https://github.com/libgit2/libgit2/pull/5213) +- [util: use 64 bit timer on Windows](https://github.com/libgit2/libgit2/pull/5054) +- [Memory allocation audit](https://github.com/libgit2/libgit2/pull/5200) +- [clone: don't decode URL percent encodings](https://github.com/libgit2/libgit2/pull/5187) +- [Security updates from 0.28.3](https://github.com/libgit2/libgit2/pull/5202) + + +## v0.26.0 [(2019-09-09)](https://github.com/nodegit/nodegit/releases/tag/v0.26.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.1...v0.26.0) + +#### Summary of changes +- Bumped libssh2 to 1.9 for security patch +- Remote.prototype.upload and Remote.prototype.updateTips should be async now + +#### Merged PRs into NodeGit +- [GitRemote upload and updateTips are async #1720](https://github.com/nodegit/nodegit/pull/1720) +- [Update libssh2 to 1.9 #1719](https://github.com/nodegit/nodegit/pull/1719) + + +## v0.25.1 [(2019-08-13)](https://github.com/nodegit/nodegit/releases/tag/v0.25.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0...v0.25.1) + +#### Summary of changes +Security patch for LibGit2: +- A carefully constructed commit object with a very large number + of parents may lead to potential out-of-bounds writes or + potential denial of service. + +- The ProgramData configuration file is always read for compatibility + with Git for Windows and Portable Git installations. The ProgramData + location is not necessarily writable only by administrators, so we + now ensure that the configuration file is owned by the administrator + or the current user. + +Additionally: +- Stash should run much faster now. + +#### Merged PRs into LibGit2 +- [Parallelize checkout_create_the_new for perf #4205](https://github.com/libgit2/libgit2/pull/4205) +- [stash: avoid recomputing tree when committing worktree](https://github.com/libgit2/libgit2/pull/5113) +- [Variadic macros](https://github.com/libgit2/libgit2/pull/5121) +- [Add sign capability to git_rebase_commit](https://github.com/libgit2/libgit2/pull/4913) +- [remote: remove unused block of code](https://github.com/libgit2/libgit2/pull/5197) +- [Adjust printf specifiers in examples code](https://github.com/libgit2/libgit2/pull/5146) +- [config: check if we are running in a sandboxed environment](https://github.com/libgit2/libgit2/pull/5191) +- [Fix example checkout to forbid rather than require --](https://github.com/libgit2/libgit2/pull/5184) +- [editorconfig: update to match our coding style](https://github.com/libgit2/libgit2/pull/5183) +- [Compare buffers in diff example](https://github.com/libgit2/libgit2/pull/5125) +- [Include ahead_behind in the test suite](https://github.com/libgit2/libgit2/pull/5135) +- [config: separate file and snapshot backends](https://github.com/libgit2/libgit2/pull/5186) +- [object: deprecate git_object__size for removal](https://github.com/libgit2/libgit2/pull/5192) + + +## v0.25.0 [(2019-08-09)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.24.3...v0.25.0) + +#### Summary of changes +##### BREAKING +- `getRemotes` no longer returns remote names, it now returns remote objects directly. Use `getRemoteNames` to get a list of remote names. +- Converted Buf.prototype.set and Buf.prototype.grow from async to sync +- `Repository.prototype.continueRebase` will now throw on any error except for EAPPLIED on the first call to `Rebase.prototype.next` +- Drops support for Ubuntu 14 after EOL +- Removed access to the `diff_so_far` param in `git_diff_notify_cb` and `git_diff_progress_cb` +- Changed `FilterSource.prototype.repo` to async to prevent segfaults on filters that run during `Submodule.status` +- Changed `NodeGit.Signature.default` to async, because it actually ends up reading the config. +- Fixed bug where templates were not reporting errors for synchronous methods. It's a bit of a wide net, but in general, + it is now possible certain sync methods in NodeGit will begin failing that did not fail before. This is the correct + behavior. + +##### Deprecations +- Support signing commits in `Repository.prototype.mergeBranches`. The last parameter `processMergeMessageCallback` is now deprecated, but will continue to work. Use the options object instead, which will contain the `processMergeMessageCallback`, as well as the `signingCb`. + +##### New +- Support for Node 12 +- Add signing support for commits and annotated tags + - Enforced consistent use of signing callbacks within the application. Any object that implements the signingCallback + pattern for signing commits or tags should use the exact same callback type and with the same meaning. + `type SigningCallback = (content: string) => {| code: number, field?: string, signedData?: string |};` + If the code is `NodeGit.Error.CODE.OK` or 0, the operation will succeed and _at least_ signedData is expected to be filled out. + If the code is a negative number, except for `NodeGit.Error.CODE.PASSTHROUGH`, the signing operation will fail. + If the code is `NodeGit.Error.CODE.PASSTHROUGH`, the operation will continue without signing the object. +- Exposed `AnnotatedCommit` methods: + - `AnnotatedCommit.prototype.ref` +- Exposed `Apply` methods: + - `Apply.apply` applies a diff to the repository + - `Apply.toTree` applies a diff to a tree +- Exposed `Config` methods: + - `Config.prototype.deleteEntry` + - `Config.prototype.deleteMultivar` + - `Config.prototype.getBool` + - `Config.prototype.getInt32` + - `Config.prototype.getInt64` + - `Config.prototype.setMultivar` + - `Config.prototype.snapshot` +- Exposed `ConfigIterator` with methods: + - `ConfigIterator.create` + - `ConfigIterator.createGlob` + - `ConfigIterator.createMultivar` + - `ConfigIterator.prototype.next` +- Exposed `IndexNameEntry`: + - `IndexNameEntry.add` + - `IndexNameEntry.clear` + - `IndexNameEntry.entryCount` + - `IndexNameEntry.getByIndex` + - `IndexNameEntry.prototype.ancestor` + - `IndexNameEntry.prototype.ours` + - `IndexNameEntry.prototype.theirs` +- Exposed `IndexReucEntry`: + - `IndexReucEntry.add` + - `IndexReucEntry.clear` + - `IndexReucEntry.entryCount` + - `IndexReucEntry.find` + - `IndexReucEntry.getByIndex` + - `IndexReucEntry.getByPath` + - `IndexReucEntry.remove` + - `IndexReucEntry.prototype.mode` + - `IndexReucEntry.prototype.oid` + - `IndexReucEntry.prototype.path` +- Exposed `Mailmap`: + - `Mailmap.prototype.addEntry` + - `Mailmap.fromBuffer` + - `Mailmap.fromRepository` + - `Mailmap.create` + - `Mailmap.prototype.resolve` + - `Mailmap.prototype.resolveSignature` +- Exposed `Merge` methods: + - `Merge.analysis` + - `Merge.analysisForRef` +- Exposed `Path.isGitfile` +- Added `RebaseOptions` to `Repository.prototype.rebaseContinue` +- Added `NodeGit.Reference.updateTerminal` +- Exposed `Remote` methods: + - `Remote.createWithOpts` +- Exposed `Tag.createFromBuffer` +- Expose `Tree.prototype.createUpdated(repo, numUpdates, updates)` + +##### Fixed +- Updates lodash dependency to address security notice +- Fixed a prototype problem with cherrypick, merge, and other collections that have a function at their root. call, apply, and bind should now be on NodeGit.Cherrypick. +- Bumped libssh2 to resolve security notice. +- Improve speed and correctness of fileHistoryWalk. The API should not have changed; however, when the end of the walk has been reached, `reachedEndOfHistory` will be specified on the resulting array. +- Fixes openssl prebuilt downloads for electron builds +- Fixes commits retrieved from `Commit.prototype.parent` +- Bump Node-Gyp to 4.0.0 to fix tar security vulnerability +- Optimized a set of routines in NodeGit. These methods as written in Javascript require hundreds or thousands of requests to async workers to retrieve data. We've batched these requests and performed them on a single async worker. There are now native implementations of the following: + - `Repository.prototype.getReferences`: Retrieves all references on async worker. + - `Repository.prototype.getRemotes`: Retrieves all remotes on async worker. + - `Repository.prototype.getSubmodules`: Retrieves all submodules on async worker. + - `Repository.prototype.refreshReferences`: Open sourced function from GitKraken. Grabs a lot of information about references on an async worker. + - `Revwalk.prototype.commitWalk`: Retrieves up to N commits from a revwalk on an async worker. +- When installing on a machine that has yarn and does not have npm, the preinstall script should succeed now +- `ceiling_dirs` is now an optional parameter to `Repository.discover` +- Added support for building on IBM i (PASE) machines +- Fixed leak where struct/option types were leaking libgit2 pointers +- Switched `NodeGit.Oid.fromString`'s internal implementation from `git_oid_fromstr` to `git_oid_fromstrp` +- Fixed builds for Electron 4 +- Updated `Signature.prototype.toString` to optionally include timestamps + +##### LibGit2 Bump +- Fixes gitignore issue with pattern negation +- `Remote.list` now gets the correct list of remotes if remotes are changed by external process +- Always use builtin regex for linux for portability +- Use Iconv on OSX for better internationalization support. +- Removed LibCurl from LibGit2: + - Now with built-in NTLM proxy support + - Now with built-in Negotiate/Kerberos proxy support + - Working with proxy URLs may be different as curl could auto detect scheme for proxies +- Various git config fixes +- Various git ignore fixes +- Various libgit2 performance improvements +- Windows/Linux now use PCRE for regex, OSX uses regcomp_l, this should address collation issues in diffing + +#### Merged PRs into NodeGit +- [Add deprecation warnings for enums that need them. #1711](https://github.com/nodegit/nodegit/pull/1711) +- [https://github.com/nodegit/nodegit/pull/1706](https://github.com/nodegit/nodegit/pull/1706) +- [Reintroduce Odb.prototype.addDiskAlternate #1695](https://github.com/nodegit/nodegit/pull/1695) +- [Fix behaviour of Repository#getReferences #1708](https://github.com/nodegit/nodegit/pull/1708) +- [Bump libgit2 #1705](https://github.com/nodegit/nodegit/pull/1705) +- [Fix Tree#createUpdated #1704](https://github.com/nodegit/nodegit/pull/1704) +- [Fix failing tests on CI #1703](https://github.com/nodegit/nodegit/pull/1703) +- [Audit lodash and fix package-lock.json #1702](https://github.com/nodegit/nodegit/pull/1702) +- [Implement support for Node 12 #1696](https://github.com/nodegit/nodegit/pull/1696) +- [Remove NSEC #1699](https://github.com/nodegit/nodegit/pull/1699) +- [Use builtin regex library for linux for better portability #1693](https://github.com/nodegit/nodegit/pull/1693) +- [Remove pcre-config from binding.gyp #1694](https://github.com/nodegit/nodegit/pull/1694) +- [refresh_references.cc: skip refs that can't be directly resolved #1689](https://github.com/nodegit/nodegit/pull/1689) +- [Bump libgit2 to fork of latest master #1690](https://github.com/nodegit/nodegit/pull/1690) +- [Bump libssh2 to 1.8.2 and fix some npm audit warnings #1678](https://github.com/nodegit/nodegit/pull/1678) +- [Root functions should keep their function prototypes correctly #1681](https://github.com/nodegit/nodegit/pull/1681) +- [refresh_references.cc: bust LibGit2 remote list cache by reading config #1685](https://github.com/nodegit/nodegit/pull/1685) +- [Implement faster file history walk #1676](https://github.com/nodegit/nodegit/pull/1676) +- [EOL for Node 6 and Ubuntu 14.04 #1649](https://github.com/nodegit/nodegit/pull/1649) +- [Ensures that commits from parent(*) has a repository #1658](https://github.com/nodegit/nodegit/pull/1658) +- [Update openssl conan distributions #1663](https://github.com/nodegit/nodegit/pull/1663) +- [Support signing in Repository#mergeBranches #1664](https://github.com/nodegit/nodegit/pull/1664) +- [Dependency upgrade node-gyp upgraded to 4.0.0 #1672](https://github.com/nodegit/nodegit/pull/1672) +- [Add additional getters to streamline information gathering (breaking change) #1671](https://github.com/nodegit/nodegit/pull/1671) +- [Clean up some dangerous memory accesses in callbacks #1642](https://github.com/nodegit/nodegit/pull/1642) +- [Output the item that was deprecated when giving deprecation notice #1643](https://github.com/nodegit/nodegit/pull/1643) +- [Don't fail yarn installs when we can't find npm #1644](https://github.com/nodegit/nodegit/pull/1644) +- [`ceiling_dirs` parameter in `Repository.discover` is optional #1245](https://github.com/nodegit/nodegit/pull/1245) +- [Add missing `shouldAlloc` declarations for git_merge_analysis* functions #1641](https://github.com/nodegit/nodegit/pull/1641) +- [Fix regex state causing subsequent runs of Tag.extractSignature to fail #1630](https://github.com/nodegit/nodegit/pull/1630) +- [Update LibGit2 docs to v0.28.0 #1631](https://github.com/nodegit/nodegit/pull/1631) +- [Add support for building on IBM i (PASE) #1634](https://github.com/nodegit/nodegit/pull/1634) +- [Expose more config methods #1635](https://github.com/nodegit/nodegit/pull/1635) +- [Catch errors and pass them to libgit2 as error codes in rebase signingcb #1636](https://github.com/nodegit/nodegit/pull/1636) +- [Simplify check for IBM i operating system #1637](https://github.com/nodegit/nodegit/pull/1637) +- [Bump LibGit2 to fork of v0.28.1 #1638](https://github.com/nodegit/nodegit/pull/1638) +- [We should clear the persistent cell in structs when they are destroyed #1629](https://github.com/nodegit/nodegit/pull/1629) +- [Fix "errorno" typo #1628](https://github.com/nodegit/nodegit/pull/1628) +- [Bump Libgit2 fork to v0.28.0 #1627](https://github.com/nodegit/nodegit/pull/1627) +- [Fix macOS and Windows Electron 4 builds #1626](https://github.com/nodegit/nodegit/pull/1626) +- [Fix non-existent / dangling refs cause Repository.prototype.createCommitWithSignature to fail #1624](https://github.com/nodegit/nodegit/pull/1624) +- [Handle new gyp information for electron builds #1623](https://github.com/nodegit/nodegit/pull/1623) +- [Use same API for signingCb in all places that can be crypto signed #1621](https://github.com/nodegit/nodegit/pull/1621) +- [Breaking: Repository.prototype.continueRebase enhancements #1619](https://github.com/nodegit/nodegit/pull/1619) +- [adds support for gpg commit signing (fixes #1018) #1448](https://github.com/nodegit/nodegit/pull/1448) +- [Add `updateRef` parameter to Repository#createCommitWithSignature #1610](https://github.com/nodegit/nodegit/pull/1610) +- [Documentation fixes. #1611](https://github.com/nodegit/nodegit/pull/1611) +- [Add Commit#amendWithSignature #1616](https://github.com/nodegit/nodegit/pull/1616) +- [Bump libgit2 to a preview of v0.28 #1615](https://github.com/nodegit/nodegit/pull/1615) +- [Fix issues with Commit#amendWithSignature #1617](https://github.com/nodegit/nodegit/pull/1617) +- [Marked Repository.createBlobFromBuffer as async #1614](https://github.com/nodegit/nodegit/pull/1614) +- [Add functionality for creating Tags with signatures and extracting signatures from Tags #1618](https://github.com/nodegit/nodegit/pull/1618) + +#### Merged PRs into LibGit2 +- [Add sign capability to git_rebase_commit #4913](https://github.com/libgit2/libgit2/pull/4913) +- [Parallelize checkout_create_the_new for perf #4205](https://github.com/libgit2/libgit2/pull/4205) +- [config_file: refresh when creating an iterator](https://github.com/libgit2/libgit2/pull/5181) +- [azure: drop powershell](https://github.com/libgit2/libgit2/pull/5141) +- [fuzzer: use futils instead of fileops](https://github.com/libgit2/libgit2/pull/5180) +- [w32: fix unlinking of directory symlinks](https://github.com/libgit2/libgit2/pull/5151) +- [patch_parse: fix segfault due to line containing static contents](https://github.com/libgit2/libgit2/pull/5179) +- [ignore: fix determining whether a shorter pattern negates another](https://github.com/libgit2/libgit2/pull/5173) +- [patch_parse: handle missing newline indicator in old file](https://github.com/libgit2/libgit2/pull/5159) +- [patch_parse: do not depend on parsed buffer's lifetime](https://github.com/libgit2/libgit2/pull/5158) +- [sha1: fix compilation of WinHTTP backend](https://github.com/libgit2/libgit2/pull/5174) +- [repository: do not initialize HEAD if it's provided by templates](https://github.com/libgit2/libgit2/pull/5176) +- [configuration: cvar -> configmap](https://github.com/libgit2/libgit2/pull/5138) +- [Evict cache items more efficiently](https://github.com/libgit2/libgit2/pull/5172) +- [clar: fix suite count](https://github.com/libgit2/libgit2/pull/5175) +- [Ignore VS2017 specific files and folders](https://github.com/libgit2/libgit2/pull/5163) +- [gitattributes: ignore macros defined in subdirectories](https://github.com/libgit2/libgit2/pull/5156) +- [clar: correctly account for "data" suites when counting](https://github.com/libgit2/libgit2/pull/5168) +- [Allocate memory more efficiently when packing objects](https://github.com/libgit2/libgit2/pull/5170) +- [fileops: fix creation of directory in filesystem root](https://github.com/libgit2/libgit2/pull/5131) +- [win32: fix fuzzers and have CI build them](https://github.com/libgit2/libgit2/pull/5160) +- [Config parser separation](https://github.com/libgit2/libgit2/pull/5134) +- [config_file: implement stat cache to avoid repeated rehashing](https://github.com/libgit2/libgit2/pull/5132) +- [ci: build with ENABLE_WERROR on Windows](https://github.com/libgit2/libgit2/pull/5143) +- [Fix Regression: attr: Correctly load system attr file (on Windows)](https://github.com/libgit2/libgit2/pull/5152) +- [hash: fix missing error return on production builds](https://github.com/libgit2/libgit2/pull/5145) +- [Resolve static check warnings in example code](https://github.com/libgit2/libgit2/pull/5142) +- [Multiple hash algorithms](https://github.com/libgit2/libgit2/pull/4438) +- [More documentation](https://github.com/libgit2/libgit2/pull/5128) +- [Incomplete commondir support](https://github.com/libgit2/libgit2/pull/4967) +- [Remove warnings](https://github.com/libgit2/libgit2/pull/5078) +- [Re-run flaky tests](https://github.com/libgit2/libgit2/pull/5140) +- [errors: use lowercase](https://github.com/libgit2/libgit2/pull/5137) +- [largefile tests: only write 2GB on 32-bit platforms](https://github.com/libgit2/libgit2/pull/5136) +- [Fix broken link in README](https://github.com/libgit2/libgit2/pull/5129) +- [net: remove unused `git_headlist_cb`](https://github.com/libgit2/libgit2/pull/5122) +- [cmake: default NTLM client to off if no HTTPS support](https://github.com/libgit2/libgit2/pull/5124) +- [attr: rename constants and macros for consistency](https://github.com/libgit2/libgit2/pull/5119) +- [Change API instances of `fromnoun` to `from_noun` (with an underscore)](https://github.com/libgit2/libgit2/pull/5117) +- [object: rename git_object__size to git_object_size](https://github.com/libgit2/libgit2/pull/5118) +- [Replace fnmatch with wildmatch](https://github.com/libgit2/libgit2/pull/5110) +- [Documentation fixes](https://github.com/libgit2/libgit2/pull/5111) +- [Removal of `p_fallocate`](https://github.com/libgit2/libgit2/pull/5114) +- [Modularize our TLS & hash detection](https://github.com/libgit2/libgit2/pull/5055) +- [tests: merge::analysis: use test variants to avoid duplicated test suites](https://github.com/libgit2/libgit2/pull/5109) +- [Rename options initialization functions](https://github.com/libgit2/libgit2/pull/5101) +- [deps: ntlmclient: disable implicit fallthrough warnings](https://github.com/libgit2/libgit2/pull/5112) +- [gitignore with escapes](https://github.com/libgit2/libgit2/pull/5097) +- [Handle URLs with a colon after host but no port](https://github.com/libgit2/libgit2/pull/5108) +- [Merge analysis support for bare repos](https://github.com/libgit2/libgit2/pull/5022) +- [Add memleak check docs](https://github.com/libgit2/libgit2/pull/5104) +- [Data-driven tests](https://github.com/libgit2/libgit2/pull/5098) +- [sha1dc: update to fix endianess issues on AIX/HP-UX](https://github.com/libgit2/libgit2/pull/5107) +- [Add NTLM support for HTTP(s) servers and proxies](https://github.com/libgit2/libgit2/pull/5052) +- [Callback type names should be suffixed with `_cb`](https://github.com/libgit2/libgit2/pull/5102) +- [tests: checkout: fix symlink.git being created outside of sandbox](https://github.com/libgit2/libgit2/pull/5099) +- [ignore: handle escaped trailing whitespace](https://github.com/libgit2/libgit2/pull/5095) +- [Ignore: only treat one leading slash as a root identifier](https://github.com/libgit2/libgit2/pull/5074) +- [online tests: use gitlab for auth failures](https://github.com/libgit2/libgit2/pull/5094) +- [Ignore files: don't ignore whitespace](https://github.com/libgit2/libgit2/pull/5076) +- [cache: fix cache eviction using deallocated key](https://github.com/libgit2/libgit2/pull/5088) +- [SECURITY.md: split out security-relevant bits from readme](https://github.com/libgit2/libgit2/pull/5085) +- [Restore NetBSD support](https://github.com/libgit2/libgit2/pull/5086) +- [repository: fix garbage return value](https://github.com/libgit2/libgit2/pull/5084) +- [cmake: disable fallthrough warnings for PCRE](https://github.com/libgit2/libgit2/pull/5083) +- [Configuration parsing: validate section headers with quotes](https://github.com/libgit2/libgit2/pull/5073) +- [Loosen restriction on wildcard "*" refspecs](https://github.com/libgit2/libgit2/pull/5060) +- [Use PCRE for our fallback regex engine when regcomp_l is unavailable](https://github.com/libgit2/libgit2/pull/4935) +- [Remote URL last-chance resolution](https://github.com/libgit2/libgit2/pull/5062) +- [Skip UTF8 BOM in ignore files](https://github.com/libgit2/libgit2/pull/5075) +- [We've already added `ZLIB_LIBRARIES` to `LIBGIT2_LIBS` so don't also add the `z` library](https://github.com/libgit2/libgit2/pull/5080) +- [Define SYMBOLIC_LINK_FLAG_DIRECTORY if required](https://github.com/libgit2/libgit2/pull/5077) +- [Support symlinks for directories in win32](https://github.com/libgit2/libgit2/pull/5065) +- [rebase: orig_head and onto accessors](https://github.com/libgit2/libgit2/pull/5057) +- [cmake: correctly detect if system provides `regcomp`](https://github.com/libgit2/libgit2/pull/5063) +- [Correctly write to missing locked global config](https://github.com/libgit2/libgit2/pull/5023) +- [[RFC] util: introduce GIT_DOWNCAST macro](https://github.com/libgit2/libgit2/pull/4561) +- [examples: implement SSH authentication](https://github.com/libgit2/libgit2/pull/5051) +- [git_repository_init: stop traversing at windows root](https://github.com/libgit2/libgit2/pull/5050) +- [config_file: check result of git_array_alloc](https://github.com/libgit2/libgit2/pull/5053) +- [patch_parse.c: Handle CRLF in parse_header_start](https://github.com/libgit2/libgit2/pull/5027) +- [fix typo](https://github.com/libgit2/libgit2/pull/5045) +- [sha1: don't inline `git_hash_global_init` for win32](https://github.com/libgit2/libgit2/pull/5039) +- [ignore: treat paths with trailing "/" as directories](https://github.com/libgit2/libgit2/pull/5040) +- [Test that largefiles can be read through the tree API](https://github.com/libgit2/libgit2/pull/4874) +- [Tests for symlinked user config](https://github.com/libgit2/libgit2/pull/5034) +- [patch_parse: fix parsing addition/deletion of file with space](https://github.com/libgit2/libgit2/pull/5035) +- [Optimize string comparisons](https://github.com/libgit2/libgit2/pull/5018) +- [Negation of subdir ignore causes other subdirs to be unignored](https://github.com/libgit2/libgit2/pull/5020) +- [xdiff: fix typo](https://github.com/libgit2/libgit2/pull/5024) +- [docs: clarify relation of safe and forced checkout strategy](https://github.com/libgit2/libgit2/pull/5032) +- [Each hash implementation should define `git_hash_global_init`](https://github.com/libgit2/libgit2/pull/5026) +- [[Doc] Update URL to git2-rs](https://github.com/libgit2/libgit2/pull/5012) +- [remote: Rename git_remote_completion_type to _t](https://github.com/libgit2/libgit2/pull/5008) +- [odb: provide a free function for custom backends](https://github.com/libgit2/libgit2/pull/5005) +- [Have git_branch_lookup accept GIT_BRANCH_ALL](https://github.com/libgit2/libgit2/pull/5000) +- [Rename git_transfer_progress to git_indexer_progress](https://github.com/libgit2/libgit2/pull/4997) +- [High-level map APIs](https://github.com/libgit2/libgit2/pull/4901) +- [refdb_fs: fix loose/packed refs lookup racing with repacks](https://github.com/libgit2/libgit2/pull/4984) +- [Allocator restructuring](https://github.com/libgit2/libgit2/pull/4998) +- [cache: fix misnaming of `git_cache_free`](https://github.com/libgit2/libgit2/pull/4992) +- [examples: produce single cgit2 binary](https://github.com/libgit2/libgit2/pull/4956) +- [Remove public 'inttypes.h' header](https://github.com/libgit2/libgit2/pull/4991) +- [Prevent reading out of bounds memory](https://github.com/libgit2/libgit2/pull/4996) +- [Fix a memory leak in odb_otype_fast()](https://github.com/libgit2/libgit2/pull/4987) +- [Make stdalloc__reallocarray call stdalloc__realloc](https://github.com/libgit2/libgit2/pull/4986) +- [Remove `git_time_monotonic`](https://github.com/libgit2/libgit2/pull/4990) +- [Fix a _very_ improbable memory leak in git_odb_new()](https://github.com/libgit2/libgit2/pull/4988) +- [ci: publish documentation on merge](https://github.com/libgit2/libgit2/pull/4989) +- [Enable creation of worktree from bare repo's default branch](https://github.com/libgit2/libgit2/pull/4982) +- [Allow bypassing check for '.keep' file](https://github.com/libgit2/libgit2/pull/4965) +- [Deprecation: export the deprecated functions properly](https://github.com/libgit2/libgit2/pull/4979) +- [ci: skip ssh tests on macOS nightly](https://github.com/libgit2/libgit2/pull/4980) +- [CI build fixups](https://github.com/libgit2/libgit2/pull/4976) +- [v0.28 rc1](https://github.com/libgit2/libgit2/pull/4970) +- [Docs](https://github.com/libgit2/libgit2/pull/4968) +- [Documentation fixes](https://github.com/libgit2/libgit2/pull/4954) +- [ci: add an individual coverity pipeline](https://github.com/libgit2/libgit2/pull/4964) +- [ci: run docurium to create documentation](https://github.com/libgit2/libgit2/pull/4961) +- [ci: return coverity to the nightlies](https://github.com/libgit2/libgit2/pull/4962) +- [Clean up some warnings](https://github.com/libgit2/libgit2/pull/4950) +- [Nightlies: use `latest` docker images](https://github.com/libgit2/libgit2/pull/4869) +- [index: preserve extension parsing errors](https://github.com/libgit2/libgit2/pull/4858) +- [Deprecate functions and constants more gently](https://github.com/libgit2/libgit2/pull/4952) +- [Don't use deprecated constants](https://github.com/libgit2/libgit2/pull/4957) +- [Fix VS warning C4098: 'giterr_set_str' : void function returning a value](https://github.com/libgit2/libgit2/pull/4955) +- [Move `giterr` to `git_error`](https://github.com/libgit2/libgit2/pull/4917) +- [odb: Fix odb foreach to also close on positive error code](https://github.com/libgit2/libgit2/pull/4949) +- [repository: free memory in symlink detection function](https://github.com/libgit2/libgit2/pull/4948) +- [ci: update poxyproxy, run in quiet mode](https://github.com/libgit2/libgit2/pull/4947) +- [Add/multiply with overflow tweaks](https://github.com/libgit2/libgit2/pull/4945) +- [Improve deprecation of old enums](https://github.com/libgit2/libgit2/pull/4944) +- [Move `git_ref_t` to `git_reference_t`](https://github.com/libgit2/libgit2/pull/4939) +- [More `git_obj` to `git_object` updates](https://github.com/libgit2/libgit2/pull/4940) +- [ci: only run invasive tests in nightly](https://github.com/libgit2/libgit2/pull/4943) +- [Always build a cdecl library](https://github.com/libgit2/libgit2/pull/4930) +- [changelog: document changes since 0.27](https://github.com/libgit2/libgit2/pull/4932) +- [Fix a bunch of warnings](https://github.com/libgit2/libgit2/pull/4925) +- [mailmap: prefer ethomson@edwardthomson.com](https://github.com/libgit2/libgit2/pull/4941) +- [Convert tests/resources/push.sh to LF endings](https://github.com/libgit2/libgit2/pull/4937) +- [Get rid of some test files that were accidentally committed](https://github.com/libgit2/libgit2/pull/4936) +- [Fix crash on remote connection when GIT_PROXY_AUTO is set but no proxy is detected](https://github.com/libgit2/libgit2/pull/4934) +- [Make ENABLE_WERROR actually work](https://github.com/libgit2/libgit2/pull/4924) +- [Remove unconditional -Wno-deprecated-declaration on macOS](https://github.com/libgit2/libgit2/pull/4931) +- [Fix warning 'function': incompatible types - from 'git_cvar_value *' to 'int *' (C4133) on VS](https://github.com/libgit2/libgit2/pull/4926) +- [Fix Linux warnings](https://github.com/libgit2/libgit2/pull/4928) +- [Coverity fixes](https://github.com/libgit2/libgit2/pull/4922) +- [Shutdown callback count](https://github.com/libgit2/libgit2/pull/4919) +- [Update CRLF filtering to match modern git](https://github.com/libgit2/libgit2/pull/4904) +- [refdb_fs: refactor error handling in `refdb_reflog_fs__delete`](https://github.com/libgit2/libgit2/pull/4915) +- [Remove empty (sub-)directories when deleting refs](https://github.com/libgit2/libgit2/pull/4833) +- [Support creating annotated commits from annotated tags](https://github.com/libgit2/libgit2/pull/4910) +- [Fix segfault in loose_backend__readstream](https://github.com/libgit2/libgit2/pull/4906) +- [make proxy_stream_close close target stream even on errors](https://github.com/libgit2/libgit2/pull/4905) +- [Index API updates for consistency](https://github.com/libgit2/libgit2/pull/4807) +- [Allow merge analysis against any reference](https://github.com/libgit2/libgit2/pull/4770) +- [revwalk: Allow changing hide_cb](https://github.com/libgit2/libgit2/pull/4888) +- [Unused function warnings](https://github.com/libgit2/libgit2/pull/4895) +- [Add builtin proxy support for the http transport](https://github.com/libgit2/libgit2/pull/4870) +- [config: fix adding files if their parent directory is a file](https://github.com/libgit2/libgit2/pull/4898) +- [Allow certificate and credential callbacks to decline to act](https://github.com/libgit2/libgit2/pull/4879) +- [Fix warning C4133 incompatible types in MSVC](https://github.com/libgit2/libgit2/pull/4896) +- [index: introduce git_index_iterator](https://github.com/libgit2/libgit2/pull/4884) +- [commit: fix out-of-bound reads when parsing truncated author fields](https://github.com/libgit2/libgit2/pull/4894) +- [tests: 🌀 address two null argument instances #4847](https://github.com/libgit2/libgit2/pull/4847) +- [Some OpenSSL issues](https://github.com/libgit2/libgit2/pull/4875) +- [worktree: Expose git_worktree_add_init_options](https://github.com/libgit2/libgit2/pull/4892) +- [transport/http: Include non-default ports in Host header](https://github.com/libgit2/libgit2/pull/4882) +- [Support symlinks on Windows when core.symlinks=true](https://github.com/libgit2/libgit2/pull/4713) +- [strntol: fix out-of-bounds reads when parsing numbers with leading sign](https://github.com/libgit2/libgit2/pull/4886) +- [apply: small fixups in the test suite](https://github.com/libgit2/libgit2/pull/4885) +- [signature: fix out-of-bounds read when parsing timezone offset](https://github.com/libgit2/libgit2/pull/4883) +- [Remote creation API](https://github.com/libgit2/libgit2/pull/4667) +- [Index collision fixes](https://github.com/libgit2/libgit2/pull/4818) +- [Patch (diff) application](https://github.com/libgit2/libgit2/pull/4705) +- [smart transport: only clear url on hard reset (regression)](https://github.com/libgit2/libgit2/pull/4880) +- [Tree parsing fixes](https://github.com/libgit2/libgit2/pull/4871) +- [CI: Fix macOS leak detection](https://github.com/libgit2/libgit2/pull/4860) +- [README: more CI status badges](https://github.com/libgit2/libgit2/pull/4800) +- [ci: Fix some minor issues](https://github.com/libgit2/libgit2/pull/4867) +- [Object parse fixes](https://github.com/libgit2/libgit2/pull/4864) +- [Windows CI: fail build on test failure](https://github.com/libgit2/libgit2/pull/4862) +- [ci: run all the jobs during nightly builds](https://github.com/libgit2/libgit2/pull/4863) +- [strtol removal](https://github.com/libgit2/libgit2/pull/4851) +- [ buf::oom tests: use custom allocator for oom failures](https://github.com/libgit2/libgit2/pull/4854) +- [ci: arm docker builds](https://github.com/libgit2/libgit2/pull/4804) +- [Win32 path canonicalization refactoring](https://github.com/libgit2/libgit2/pull/4852) +- [Check object existence when creating a tree from an index](https://github.com/libgit2/libgit2/pull/4840) +- [Ninja build](https://github.com/libgit2/libgit2/pull/4841) +- [docs: fix transparent/opaque confusion in the conventions file](https://github.com/libgit2/libgit2/pull/4853) +- [Configuration variables can appear on the same line as the section header](https://github.com/libgit2/libgit2/pull/4819) +- [path: export the dotgit-checking functions](https://github.com/libgit2/libgit2/pull/4849) +- [cmake: correct comment from libssh to libssh2](https://github.com/libgit2/libgit2/pull/4850) +- [Object parsing fuzzer](https://github.com/libgit2/libgit2/pull/4845) +- [config: Port config_file_fuzzer to the new in-memory backend.](https://github.com/libgit2/libgit2/pull/4842) +- [Add some more tests for git_futils_rmdir_r and some cleanup](https://github.com/libgit2/libgit2/pull/4828) +- [diff_stats: use git's formatting of renames with common directories](https://github.com/libgit2/libgit2/pull/4830) +- [ignore unsupported http authentication contexts](https://github.com/libgit2/libgit2/pull/4839) +- [submodule: ignore path and url attributes if they look like options](https://github.com/libgit2/libgit2/pull/4837) +- [Smart packet security fixes](https://github.com/libgit2/libgit2/pull/4836) +- [config_file: properly ignore includes without "path" value](https://github.com/libgit2/libgit2/pull/4832) +- [int-conversion](https://github.com/libgit2/libgit2/pull/4831) +- [cmake: enable new quoted argument policy CMP0054](https://github.com/libgit2/libgit2/pull/4829) +- [fix check if blob is uninteresting when inserting tree to packbuilder](https://github.com/libgit2/libgit2/pull/4824) +- [Documentation fixups](https://github.com/libgit2/libgit2/pull/4827) +- [CI: refactoring](https://github.com/libgit2/libgit2/pull/4812) +- [In-memory configuration](https://github.com/libgit2/libgit2/pull/4767) +- [Some warnings](https://github.com/libgit2/libgit2/pull/4784) +- [index: release the snapshot instead of freeing the index](https://github.com/libgit2/libgit2/pull/4803) +- [online::clone: free url and username before resetting](https://github.com/libgit2/libgit2/pull/4816) +- [git_remote_prune to be O(n * logn)](https://github.com/libgit2/libgit2/pull/4794) +- [Rename "VSTS" to "Azure DevOps" and "Azure Pipelines"](https://github.com/libgit2/libgit2/pull/4813) +- [cmake: enable -Wformat and -Wformat-security](https://github.com/libgit2/libgit2/pull/4810) +- [Fix revwalk limiting regression](https://github.com/libgit2/libgit2/pull/4809) +- [path validation: `char` is not signed by default.](https://github.com/libgit2/libgit2/pull/4805) +- [revwalk: refer the sorting modes more to git's options](https://github.com/libgit2/libgit2/pull/4811) +- [Clar XML output redux](https://github.com/libgit2/libgit2/pull/4778) +- [remote: store the connection data in a private struct](https://github.com/libgit2/libgit2/pull/4785) +- [docs: clarify and include licenses of dependencies](https://github.com/libgit2/libgit2/pull/4789) +- [config_file: fix quadratic behaviour when adding config multivars](https://github.com/libgit2/libgit2/pull/4799) +- [config: Fix a leak parsing multi-line config entries](https://github.com/libgit2/libgit2/pull/4792) +- [Prevent heap-buffer-overflow](https://github.com/libgit2/libgit2/pull/4797) +- [ci: remove travis](https://github.com/libgit2/libgit2/pull/4790) +- [Update VSTS YAML files with the latest syntax](https://github.com/libgit2/libgit2/pull/4791) +- [Documentation fixes](https://github.com/libgit2/libgit2/pull/4788) +- [config: convert unbounded recursion into a loop](https://github.com/libgit2/libgit2/pull/4781) +- [Document giterr_last() use only after error. #4772](https://github.com/libgit2/libgit2/pull/4773) +- [util: make the qsort_r check work on macOS](https://github.com/libgit2/libgit2/pull/4765) +- [fuzzer: update for indexer changes](https://github.com/libgit2/libgit2/pull/4782) +- [tree: accept null ids in existing trees when updating](https://github.com/libgit2/libgit2/pull/4727) +- [Pack file verification](https://github.com/libgit2/libgit2/pull/4374) +- [cmake: detect and use libc-provided iconv](https://github.com/libgit2/libgit2/pull/4777) +- [Coverity flavored clang analyzer fixes](https://github.com/libgit2/libgit2/pull/4774) +- [tests: verify adding index conflicts with invalid filemodes fails](https://github.com/libgit2/libgit2/pull/4776) +- [worktree: unlock should return 1 when the worktree isn't locked](https://github.com/libgit2/libgit2/pull/4769) +- [Add a fuzzer for config files](https://github.com/libgit2/libgit2/pull/4752) +- [Fix 'invalid packet line' for ng packets containing errors](https://github.com/libgit2/libgit2/pull/4763) +- [Fix leak in index.c](https://github.com/libgit2/libgit2/pull/4768) +- [threads::diff: use separate git_repository objects](https://github.com/libgit2/libgit2/pull/4754) +- [travis: remove Coverity cron job](https://github.com/libgit2/libgit2/pull/4766) +- [parse: Do not initialize the content in context to NULL](https://github.com/libgit2/libgit2/pull/4749) +- [config_file: Don't crash on options without a section](https://github.com/libgit2/libgit2/pull/4750) +- [ci: Correct the status code check so Coverity doesn't force-fail Travis](https://github.com/libgit2/libgit2/pull/4764) +- [ci: remove appveyor](https://github.com/libgit2/libgit2/pull/4760) +- [diff: fix OOM on AIX when finding similar deltas in empty diff](https://github.com/libgit2/libgit2/pull/4761) +- [travis: do not execute Coverity analysis for all cron jobs](https://github.com/libgit2/libgit2/pull/4755) +- [ci: enable compilation with "-Werror"](https://github.com/libgit2/libgit2/pull/4759) +- [smart_pkt: fix potential OOB-read when processing ng packet](https://github.com/libgit2/libgit2/pull/4758) +- [Fix a double-free in config parsing](https://github.com/libgit2/libgit2/pull/4751) +- [Fuzzers](https://github.com/libgit2/libgit2/pull/4728) +- [ci: run VSTS builds on master and maint branches](https://github.com/libgit2/libgit2/pull/4746) +- [Windows: default credentials / fallback credential handling](https://github.com/libgit2/libgit2/pull/4743) +- [ci: add VSTS build badge to README](https://github.com/libgit2/libgit2/pull/4745) +- [ci: set PKG_CONFIG_PATH for travis](https://github.com/libgit2/libgit2/pull/4744) +- [CI: Refactor and introduce VSTS builds](https://github.com/libgit2/libgit2/pull/4723) +- [revwalk: remove tautologic condition for hiding a commit](https://github.com/libgit2/libgit2/pull/4742) +- [winhttp: retry erroneously failing requests](https://github.com/libgit2/libgit2/pull/4731) +- [Add a configurable limit to the max pack size that will be indexed](https://github.com/libgit2/libgit2/pull/4721) +- [mbedtls: remove unused variable "cacert"](https://github.com/libgit2/libgit2/pull/4739) +- [Squash some leaks](https://github.com/libgit2/libgit2/pull/4732) +- [Add a checkout example](https://github.com/libgit2/libgit2/pull/4692) +- [Assorted Coverity fixes](https://github.com/libgit2/libgit2/pull/4702) +- [Remove GIT_PKT_PACK entirely](https://github.com/libgit2/libgit2/pull/4704) +- [ ignore: improve `git_ignore_path_is_ignored` description Git analogy](https://github.com/libgit2/libgit2/pull/4722) +- [alloc: don't overwrite allocator during init if set](https://github.com/libgit2/libgit2/pull/4724) +- [C90 standard compliance](https://github.com/libgit2/libgit2/pull/4700) +- [Delta OOB access](https://github.com/libgit2/libgit2/pull/4719) +- [Release v0.27.3](https://github.com/libgit2/libgit2/pull/4717) +- [streams: report OpenSSL errors if global init fails](https://github.com/libgit2/libgit2/pull/4710) +- [patch_parse: populate line numbers while parsing diffs](https://github.com/libgit2/libgit2/pull/4687) +- [Fix git_worktree_validate failing on bare repositories](https://github.com/libgit2/libgit2/pull/4686) +- [git_refspec_transform: Handle NULL dst](https://github.com/libgit2/libgit2/pull/4699) +- [Add a "dirty" state to the index when it has unsaved changes](https://github.com/libgit2/libgit2/pull/4536) +- [refspec: rename `git_refspec__free` to `git_refspec__dispose`](https://github.com/libgit2/libgit2/pull/4709) +- [streams: openssl: Handle error in SSL_CTX_new](https://github.com/libgit2/libgit2/pull/4701) +- [refspec: add public parsing api](https://github.com/libgit2/libgit2/pull/4519) +- [Fix interaction between limited flag and sorting over resets](https://github.com/libgit2/libgit2/pull/4688) +- [deps: fix implicit fallthrough warning in http-parser](https://github.com/libgit2/libgit2/pull/4691) +- [Fix assorted leaks found via fuzzing](https://github.com/libgit2/libgit2/pull/4698) +- [Fix type confusion in git_smart__connect](https://github.com/libgit2/libgit2/pull/4695) +- [Verify ref_pkt's are long enough](https://github.com/libgit2/libgit2/pull/4696) +- [Config parser cleanups](https://github.com/libgit2/libgit2/pull/4411) +- [Fix last references to deprecated git_buf_free](https://github.com/libgit2/libgit2/pull/4685) +- [revwalk: avoid walking the entire history when output is unsorted](https://github.com/libgit2/libgit2/pull/4606) +- [Add mailmap support.](https://github.com/libgit2/libgit2/pull/4586) +- [tree: remove unused functions](https://github.com/libgit2/libgit2/pull/4683) +- [Link `mbedTLS` libraries in when `SHA1_BACKEND` == "mbedTLS"](https://github.com/libgit2/libgit2/pull/4678) +- [editorconfig: allow trailing whitespace in markdown](https://github.com/libgit2/libgit2/pull/4676) +- [docs: fix statement about tab width](https://github.com/libgit2/libgit2/pull/4681) +- [diff: fix enum value being out of allowed range](https://github.com/libgit2/libgit2/pull/4680) +- [pack: rename `git_packfile_stream_free`](https://github.com/libgit2/libgit2/pull/4436) +- [Stop leaking the memory](https://github.com/libgit2/libgit2/pull/4677) +- [Bugfix release v0.27.2](https://github.com/libgit2/libgit2/pull/4632) +- [Fix stash save bug with fast path index check](https://github.com/libgit2/libgit2/pull/4668) +- [path: unify `git_path_is_*` APIs](https://github.com/libgit2/libgit2/pull/4662) +- [Fix negative gitignore rules with leading directories ](https://github.com/libgit2/libgit2/pull/4670) +- [Custom memory allocators](https://github.com/libgit2/libgit2/pull/4576) +- [index: Fix alignment issues in write_disk_entry()](https://github.com/libgit2/libgit2/pull/4655) +- [travis: war on leaks](https://github.com/libgit2/libgit2/pull/4558) +- [refdb_fs: fix regression: failure when globbing for non-existant references](https://github.com/libgit2/libgit2/pull/4665) +- [tests: submodule: do not rely on config iteration order](https://github.com/libgit2/libgit2/pull/4673) +- [Detect duplicated submodules for the same path](https://github.com/libgit2/libgit2/pull/4641) +- [Fix docurium missing includes](https://github.com/libgit2/libgit2/pull/4530) +- [github: update issue template](https://github.com/libgit2/libgit2/pull/4627) +- [streams: openssl: add missing check on OPENSSL_LEGACY_API](https://github.com/libgit2/libgit2/pull/4661) +- [mbedtls: don't require mbedtls from our pkgconfig file](https://github.com/libgit2/libgit2/pull/4656) +- [Fixes for CVE 2018-11235](https://github.com/libgit2/libgit2/pull/4660) +- [Backport fixes for CVE 2018-11235](https://github.com/libgit2/libgit2/pull/4659) +- [Added note about Windows junction points to the differences from git document](https://github.com/libgit2/libgit2/pull/4653) +- [cmake: resolve libraries found by pkg-config ](https://github.com/libgit2/libgit2/pull/4642) +- [refdb_fs: enhance performance of globbing](https://github.com/libgit2/libgit2/pull/4629) +- [global: adjust init count under lock](https://github.com/libgit2/libgit2/pull/4645) +- [Fix GCC 8.1 warnings](https://github.com/libgit2/libgit2/pull/4646) +- [Worktrees can be made from bare repositories](https://github.com/libgit2/libgit2/pull/4630) +- [docs: add documentation to state differences from the git cli](https://github.com/libgit2/libgit2/pull/4605) +- [Sanitize the hunk header to ensure it contains UTF-8 valid data](https://github.com/libgit2/libgit2/pull/4542) +- [examples: ls-files: add ls-files to list paths in the index](https://github.com/libgit2/libgit2/pull/4380) +- [OpenSSL legacy API cleanups](https://github.com/libgit2/libgit2/pull/4608) +- [worktree: add functions to get name and path](https://github.com/libgit2/libgit2/pull/4640) +- [Fix deletion of unrelated branch on worktree](https://github.com/libgit2/libgit2/pull/4633) +- [mbedTLS support](https://github.com/libgit2/libgit2/pull/4173) +- [Configuration entry iteration in order](https://github.com/libgit2/libgit2/pull/4525) +- [blame_git: fix coalescing step never being executed](https://github.com/libgit2/libgit2/pull/4580) +- [Fix leaks in master](https://github.com/libgit2/libgit2/pull/4636) +- [Leak fixes for v0.27.1](https://github.com/libgit2/libgit2/pull/4635) +- [worktree: Read worktree specific reflog for HEAD](https://github.com/libgit2/libgit2/pull/4577) +- [fixed stack smashing due to wrong size of struct stat on the stack](https://github.com/libgit2/libgit2/pull/4631) +- [scripts: add backporting script](https://github.com/libgit2/libgit2/pull/4476) +- [worktree: add ability to create worktree with pre-existing branch](https://github.com/libgit2/libgit2/pull/4524) +- [refs: preserve the owning refdb when duping reference](https://github.com/libgit2/libgit2/pull/4618) +- [Submodules-API should report .gitmodules parse errors instead of ignoring them](https://github.com/libgit2/libgit2/pull/4522) +- [Typedef git_pkt_type and clarify recv_pkt return type](https://github.com/libgit2/libgit2/pull/4514) +- [online::clone: validate user:pass in HTTP_PROXY](https://github.com/libgit2/libgit2/pull/4556) +- [ transports: ssh: disconnect session before freeing it ](https://github.com/libgit2/libgit2/pull/4596) +- [revwalk: fix uninteresting revs sometimes not limiting graphwalk](https://github.com/libgit2/libgit2/pull/4622) +- [attr_file: fix handling of directory patterns with trailing spaces](https://github.com/libgit2/libgit2/pull/4614) +- [transports: local: fix assert when fetching into repo with symrefs](https://github.com/libgit2/libgit2/pull/4613) +- [remote/proxy: fix git_transport_certificate_check_db description](https://github.com/libgit2/libgit2/pull/4597) +- [Flag options in describe.h as being optional](https://github.com/libgit2/libgit2/pull/4587) +- [diff: Add missing GIT_DELTA_TYPECHANGE -> 'T' mapping.](https://github.com/libgit2/libgit2/pull/4611) +- [appveyor: fix typo in registry key to disable DHE](https://github.com/libgit2/libgit2/pull/4609) +- [Fix build with LibreSSL 2.7](https://github.com/libgit2/libgit2/pull/4607) +- [appveyor: workaround for intermittent test failures](https://github.com/libgit2/libgit2/pull/4603) +- [sha1dc: update to fix errors with endianess](https://github.com/libgit2/libgit2/pull/4601) +- [submodule: check index for path and prefix before adding submodule](https://github.com/libgit2/libgit2/pull/4378) +- [odb: mempack: fix leaking objects when freeing mempacks](https://github.com/libgit2/libgit2/pull/4602) +- [types: remove unused git_merge_result](https://github.com/libgit2/libgit2/pull/4598) +- [checkout: change default strategy to SAFE](https://github.com/libgit2/libgit2/pull/4531) +- [Add myself to git.git-authors](https://github.com/libgit2/libgit2/pull/4570) + + +## v0.25.0-alpha.16 [(2019-07-23)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.16) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.15...v0.25.0-alpha.16) + +#### Summary of changes +- Adds support for Node 12 +- Updates lodash dependency to address security notice +- Expose Tree.prototype.createUpdated(repo, numUpdates, updates) +- Bumps libgit2 + - Fixes gitignore issue with pattern negation + - Remote.list now gets the correct list of remotes if remotes are changed by external process + +#### Merged PRs into NodeGit +- [Bump libgit2 #1705](https://github.com/nodegit/nodegit/pull/1705) +- [Fix Tree#createUpdated #1704](https://github.com/nodegit/nodegit/pull/1704) +- [Fix failing tests on CI #1703](https://github.com/nodegit/nodegit/pull/1703) +- [Audit lodash and fix package-lock.json #1702](https://github.com/nodegit/nodegit/pull/1702) +- [Implement support for Node 12 #1696](https://github.com/nodegit/nodegit/pull/1696) + +#### Merged PRs into LibGit2 +- [config_file: refresh when creating an iterator #5181](https://github.com/libgit2/libgit2/pull/5181) +- [azure: drop powershell #5141](https://github.com/libgit2/libgit2/pull/5141) +- [fuzzer: use futils instead of fileops #5180](https://github.com/libgit2/libgit2/pull/5180) +- [w32: fix unlinking of directory symlinks #5151](https://github.com/libgit2/libgit2/pull/5151) +- [patch_parse: fix segfault due to line containing static contents #5179](https://github.com/libgit2/libgit2/pull/5179) +- [ignore: fix determining whether a shorter pattern negates another #5173](https://github.com/libgit2/libgit2/pull/5173) +- [patch_parse: handle missing newline indicator in old file #5159](https://github.com/libgit2/libgit2/pull/5159) +- [patch_parse: do not depend on parsed buffer's lifetime #5158](https://github.com/libgit2/libgit2/pull/5158) +- [sha1: fix compilation of WinHTTP backend #5174](https://github.com/libgit2/libgit2/pull/5174) +- [repository: do not initialize HEAD if it's provided by templates #5176](https://github.com/libgit2/libgit2/pull/5176) +- [configuration: cvar -> configmap #5138](https://github.com/libgit2/libgit2/pull/5138) +- [Evict cache items more efficiently #5172](https://github.com/libgit2/libgit2/pull/5172) +- [clar: fix suite count #5175](https://github.com/libgit2/libgit2/pull/5175) +- [Ignore VS2017 specific files and folders #5163](https://github.com/libgit2/libgit2/pull/5163) +- [gitattributes: ignore macros defined in subdirectories #5156](https://github.com/libgit2/libgit2/pull/5156) +- [clar: correctly account for "data" suites when counting #5168](https://github.com/libgit2/libgit2/pull/5168) +- [Allocate memory more efficiently when packing objects #5170](https://github.com/libgit2/libgit2/pull/5170) +- [fileops: fix creation of directory in filesystem root #5131](https://github.com/libgit2/libgit2/pull/5131) +- [win32: fix fuzzers and have CI build them #5160](https://github.com/libgit2/libgit2/pull/5160) +- [Config parser separation #5134](https://github.com/libgit2/libgit2/pull/5134) +- [config_file: implement stat cache to avoid repeated rehashing #5132](https://github.com/libgit2/libgit2/pull/5132) +- [ci: build with ENABLE_WERROR on Windows #5143](https://github.com/libgit2/libgit2/pull/5143) +- [Fix Regression: attr: Correctly load system attr file (on Windows) #5152](https://github.com/libgit2/libgit2/pull/5152) +- [hash: fix missing error return on production builds #5145](https://github.com/libgit2/libgit2/pull/5145) +- [Resolve static check warnings in example code #5142](https://github.com/libgit2/libgit2/pull/5142) +- [Multiple hash algorithms #4438](https://github.com/libgit2/libgit2/pull/4438) +- [More documentation #5128](https://github.com/libgit2/libgit2/pull/5128) +- [Incomplete commondir support #4967](https://github.com/libgit2/libgit2/pull/4967) +- [Remove warnings #5078](https://github.com/libgit2/libgit2/pull/5078) +- [Re-run flaky tests #5140](https://github.com/libgit2/libgit2/pull/5140) + + +## v0.25.0-alpha.15 [(2019-07-15)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.15) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.14...v0.25.0-alpha.15) + +#### Summary of changes +- Removed NSEC optimization due to performance regressions in repositories that did not use NSEC optimization cloned via NodeGit. + +#### Merged PRs into NodeGit +- [Remove NSEC #1699](https://github.com/nodegit/nodegit/pull/1699) + + +## v0.25.0-alpha.14 [(2019-07-01)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.14) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.13...v0.25.0-alpha.14) + +#### Summary of changes +- Always use builtin regex for linux for portability + +#### Merged PRs into NodeGit +- [Use builtin regex library for linux for better portability #1693](https://github.com/nodegit/nodegit/pull/1693) +- [Remove pcre-config from binding.gyp #1694](https://github.com/nodegit/nodegit/pull/1694) + +## v0.25.0-alpha.13 [(2019-06-26)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.13) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.12...v0.25.0-alpha.13) + +#### Summary of changes +- Turn on GIT_USE_NSEC on all platforms +- Use Iconv on OSX for better internationalization support. +- Bump libgit2 to bring in: + - NTLM proxy support + - Negotiate/Kerberos proxy support + - Various git config fixes + - Various git ignore fixes + - Various libgit2 performance improvements + - Windows/Linux now use PCRE for regex, OSX uses regcomp_l, this should address collation issues in diffing +- Fixed bug with Repository.prototype.refreshReferences dying on corrupted reference. We now ignore corrupted references + +#### Merged PRs into NodeGit +- [refresh_references.cc: skip refs that can't be directly resolved #1689](https://github.com/nodegit/nodegit/pull/1689) +- [Bump libgit2 to fork of latest master #1690](https://github.com/nodegit/nodegit/pull/1690) + +#### Merged PRs into LibGit2 +- [errors: use lowercase](https://github.com/libgit2/libgit2/pull/5137) +- [largefile tests: only write 2GB on 32-bit platforms](https://github.com/libgit2/libgit2/pull/5136) +- [Fix broken link in README](https://github.com/libgit2/libgit2/pull/5129) +- [net: remove unused `git_headlist_cb`](https://github.com/libgit2/libgit2/pull/5122) +- [cmake: default NTLM client to off if no HTTPS support](https://github.com/libgit2/libgit2/pull/5124) +- [attr: rename constants and macros for consistency](https://github.com/libgit2/libgit2/pull/5119) +- [Change API instances of `fromnoun` to `from_noun` (with an underscore)](https://github.com/libgit2/libgit2/pull/5117) +- [object: rename git_object__size to git_object_size](https://github.com/libgit2/libgit2/pull/5118) +- [Replace fnmatch with wildmatch](https://github.com/libgit2/libgit2/pull/5110) +- [Documentation fixes](https://github.com/libgit2/libgit2/pull/5111) +- [Removal of `p_fallocate`](https://github.com/libgit2/libgit2/pull/5114) +- [Modularize our TLS & hash detection](https://github.com/libgit2/libgit2/pull/5055) +- [tests: merge::analysis: use test variants to avoid duplicated test suites](https://github.com/libgit2/libgit2/pull/5109) +- [Rename options initialization functions](https://github.com/libgit2/libgit2/pull/5101) +- [deps: ntlmclient: disable implicit fallthrough warnings](https://github.com/libgit2/libgit2/pull/5112) +- [gitignore with escapes](https://github.com/libgit2/libgit2/pull/5097) +- [Handle URLs with a colon after host but no port](https://github.com/libgit2/libgit2/pull/5108) +- [Merge analysis support for bare repos](https://github.com/libgit2/libgit2/pull/5022) +- [Add memleak check docs](https://github.com/libgit2/libgit2/pull/5104) +- [Data-driven tests](https://github.com/libgit2/libgit2/pull/5098) +- [sha1dc: update to fix endianess issues on AIX/HP-UX](https://github.com/libgit2/libgit2/pull/5107) +- [Add NTLM support for HTTP(s) servers and proxies](https://github.com/libgit2/libgit2/pull/5052) +- [Callback type names should be suffixed with `_cb`](https://github.com/libgit2/libgit2/pull/5102) +- [tests: checkout: fix symlink.git being created outside of sandbox](https://github.com/libgit2/libgit2/pull/5099) +- [ignore: handle escaped trailing whitespace](https://github.com/libgit2/libgit2/pull/5095) +- [Ignore: only treat one leading slash as a root identifier](https://github.com/libgit2/libgit2/pull/5074) +- [online tests: use gitlab for auth failures](https://github.com/libgit2/libgit2/pull/5094) +- [Ignore files: don't ignore whitespace](https://github.com/libgit2/libgit2/pull/5076) +- [cache: fix cache eviction using deallocated key](https://github.com/libgit2/libgit2/pull/5088) +- [SECURITY.md: split out security-relevant bits from readme](https://github.com/libgit2/libgit2/pull/5085) +- [Restore NetBSD support](https://github.com/libgit2/libgit2/pull/5086) +- [repository: fix garbage return value](https://github.com/libgit2/libgit2/pull/5084) +- [cmake: disable fallthrough warnings for PCRE](https://github.com/libgit2/libgit2/pull/5083) +- [Configuration parsing: validate section headers with quotes](https://github.com/libgit2/libgit2/pull/5073) +- [Loosen restriction on wildcard "*" refspecs](https://github.com/libgit2/libgit2/pull/5060) +- [Use PCRE for our fallback regex engine when regcomp_l is unavailable](https://github.com/libgit2/libgit2/pull/4935) +- [Remote URL last-chance resolution](https://github.com/libgit2/libgit2/pull/5062) +- [Skip UTF8 BOM in ignore files](https://github.com/libgit2/libgit2/pull/5075) +- [We've already added `ZLIB_LIBRARIES` to `LIBGIT2_LIBS` so don't also add the `z` library](https://github.com/libgit2/libgit2/pull/5080) +- [Define SYMBOLIC_LINK_FLAG_DIRECTORY if required](https://github.com/libgit2/libgit2/pull/5077) +- [Support symlinks for directories in win32](https://github.com/libgit2/libgit2/pull/5065) +- [rebase: orig_head and onto accessors](https://github.com/libgit2/libgit2/pull/5057) +- [cmake: correctly detect if system provides `regcomp`](https://github.com/libgit2/libgit2/pull/5063) +- [Correctly write to missing locked global config](https://github.com/libgit2/libgit2/pull/5023) +- [[RFC] util: introduce GIT_DOWNCAST macro](https://github.com/libgit2/libgit2/pull/4561) +- [examples: implement SSH authentication](https://github.com/libgit2/libgit2/pull/5051) +- [git_repository_init: stop traversing at windows root](https://github.com/libgit2/libgit2/pull/5050) +- [config_file: check result of git_array_alloc](https://github.com/libgit2/libgit2/pull/5053) +- [patch_parse.c: Handle CRLF in parse_header_start](https://github.com/libgit2/libgit2/pull/5027) +- [fix typo](https://github.com/libgit2/libgit2/pull/5045) +- [sha1: don't inline `git_hash_global_init` for win32](https://github.com/libgit2/libgit2/pull/5039) +- [ignore: treat paths with trailing "/" as directories](https://github.com/libgit2/libgit2/pull/5040) +- [Test that largefiles can be read through the tree API](https://github.com/libgit2/libgit2/pull/4874) +- [Tests for symlinked user config](https://github.com/libgit2/libgit2/pull/5034) +- [patch_parse: fix parsing addition/deletion of file with space](https://github.com/libgit2/libgit2/pull/5035) +- [Optimize string comparisons](https://github.com/libgit2/libgit2/pull/5018) +- [Negation of subdir ignore causes other subdirs to be unignored](https://github.com/libgit2/libgit2/pull/5020) +- [xdiff: fix typo](https://github.com/libgit2/libgit2/pull/5024) +- [docs: clarify relation of safe and forced checkout strategy](https://github.com/libgit2/libgit2/pull/5032) +- [Each hash implementation should define `git_hash_global_init`](https://github.com/libgit2/libgit2/pull/5026) +- [[Doc] Update URL to git2-rs](https://github.com/libgit2/libgit2/pull/5012) +- [remote: Rename git_remote_completion_type to _t](https://github.com/libgit2/libgit2/pull/5008) +- [odb: provide a free function for custom backends](https://github.com/libgit2/libgit2/pull/5005) +- [Have git_branch_lookup accept GIT_BRANCH_ALL](https://github.com/libgit2/libgit2/pull/5000) +- [Rename git_transfer_progress to git_indexer_progress](https://github.com/libgit2/libgit2/pull/4997) +- [High-level map APIs](https://github.com/libgit2/libgit2/pull/4901) +- [refdb_fs: fix loose/packed refs lookup racing with repacks](https://github.com/libgit2/libgit2/pull/4984) +- [Allocator restructuring](https://github.com/libgit2/libgit2/pull/4998) +- [cache: fix misnaming of `git_cache_free`](https://github.com/libgit2/libgit2/pull/4992) +- [examples: produce single cgit2 binary](https://github.com/libgit2/libgit2/pull/4956) +- [Remove public 'inttypes.h' header](https://github.com/libgit2/libgit2/pull/4991) +- [Prevent reading out of bounds memory](https://github.com/libgit2/libgit2/pull/4996) +- [Fix a memory leak in odb_otype_fast()](https://github.com/libgit2/libgit2/pull/4987) +- [Make stdalloc__reallocarray call stdalloc__realloc](https://github.com/libgit2/libgit2/pull/4986) +- [Remove `git_time_monotonic`](https://github.com/libgit2/libgit2/pull/4990) +- [Fix a _very_ improbable memory leak in git_odb_new()](https://github.com/libgit2/libgit2/pull/4988) +- [ci: publish documentation on merge](https://github.com/libgit2/libgit2/pull/4989) +- [Enable creation of worktree from bare repo's default branch](https://github.com/libgit2/libgit2/pull/4982) +- [Allow bypassing check for '.keep' file](https://github.com/libgit2/libgit2/pull/4965) +- [Release v0.28.1](https://github.com/libgit2/libgit2/pull/4983) + + + +## v0.25.0-alpha.12 [(2019-06-03)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.12) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.11...v0.25.0-alpha.12) + +#### Summary of changes +- Fix bug in Repository.prototype.refreshReferences where new remote references from a new remote added/fetched on a separte repo instance do not show up in the result. +- Fixed a prototype problem with cherrypick, merge, and other collections that have a function at their root. call, apply, and bind should now be on NodeGit.Cherrypick. +- Bumped libssh2 to resolve security notice. + +#### Merged PRs into NodeGit +- [Bump libssh2 to 1.8.2 and fix some npm audit warnings #1678](https://github.com/nodegit/nodegit/pull/1678) +- [Root functions should keep their function prototypes correctly #1681](https://github.com/nodegit/nodegit/pull/1681) +- [refresh_references.cc: bust LibGit2 remote list cache by reading config #1685](https://github.com/nodegit/nodegit/pull/1685) + + +## v0.25.0-alpha.11 [(2019-05-20)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.11) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.10...v0.25.0-alpha.11) + +#### Summary of changes +- Improve speed and correctness of fileHistoryWalk. The API should not have changed; however, when the end of the walk has been reached, `reachedEndOfHistory` will be specified on the resulting array. + +#### Merged PRs into NodeGit +- [Implement faster file history walk #1676](https://github.com/nodegit/nodegit/pull/1676) + + +## v0.25.0-alpha.10 [(2019-05-03)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.10) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.9...v0.25.0-alpha.10) + +#### Summary of changes +- Drops support for Ubuntu 14 after EOL +- Fixes openssl prebuilt downloads for electron builds +- Fixes commits retrieved from Commit.prototype.parent +- *DEPRECATION* Support signing commits in Repository.prototype.mergeBranches. The last parameter `processMergeMessageCallback` is now deprecated, but will continue to work. Use the options object instead, which will contain the `processMergeMessageCallback`, as well as the `signingCb`. +- Bump Node-Gyp to 4.0.0 to fix tar security vulnerability +- *BREAKING* `getRemotes` no longer returns remote names, it now returns remote objects directly. Use `getRemoteNames` to get a list of remote names. +- Optimized a set of routines in NodeGit. These methods as written in Javascript require hundreds or thousands of requests to async workers to retrieve data. We've batched these requests and performed them on a single async worker. There are now native implementations of the following: + - Repository.prototype.getReferences: Retrieves all references on async worker. + - Repository.prototype.getRemotes: Retrieves all remotes on async worker. + - Repository.prototype.getSubmodules: Retrieves all submodules on async worker. + - Repository.prototype.refreshReferences: Open sourced function from GitKraken. Grabs a lot of information about references on an async worker. + - Revwalk.prototype.commitWalk: Retrieves up to N commits from a revwalk on an async worker. + +#### Merged PRs into NodeGit +- [EOL for Node 6 and Ubuntu 14.04 #1649](https://github.com/nodegit/nodegit/pull/1649) +- [Ensures that commits from parent(*) has a repository #1658](https://github.com/nodegit/nodegit/pull/1658) +- [Update openssl conan distributions #1663](https://github.com/nodegit/nodegit/pull/1663) +- [Support signing in Repository#mergeBranches #1664](https://github.com/nodegit/nodegit/pull/1664) +- [Dependency upgrade node-gyp upgraded to 4.0.0 #1672](https://github.com/nodegit/nodegit/pull/1672) +- [Add additional getters to streamline information gathering (breaking change) #1671](https://github.com/nodegit/nodegit/pull/1671) + + + +## v0.25.0-alpha.9 [(2019-03-04)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.9) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.8...v0.25.0-alpha.9) + +#### Summary of changes +- Removed access to the diff_so_far param in git_diff_notify_cb and git_diff_progress_cb +- Changed FilterSource.prototype.repo to async to prevent segfaults on filters that run during Submodule.status +- Clean up deprecation messages to inform users of what was deprecated, not just what users should switch to +- When installing on a machine that has yarn and does not have npm, the preinstall script should succeed now +- ceiling_dirs is now an optional parameter to Repository.discover + +#### Merged PRs into NodeGit +- [Clean up some dangerous memory accesses in callbacks #1642](https://github.com/nodegit/nodegit/pull/1642) +- [Output the item that was deprecated when giving deprecation notice #1643](https://github.com/nodegit/nodegit/pull/1643) +- [Don't fail yarn installs when we can't find npm #1644](https://github.com/nodegit/nodegit/pull/1644) +- [`ceiling_dirs` parameter in `Repository.discover` is optional #1245](https://github.com/nodegit/nodegit/pull/1245) + + +## v0.25.0-alpha.8 [(2019-02-27)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.8) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.7...v0.25.0-alpha.8) + +#### Summary of changes +- Fixed segfault in NodeGit.Merge.analysis and NodeGit.Merge.analysisForRef + +#### Merged PRs into NodeGit +- [Add missing `shouldAlloc` declarations for git_merge_analysis* functions #1641](https://github.com/nodegit/nodegit/pull/1641) + + +## v0.25.0-alpha.7 [(2019-02-20)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.7) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.6...v0.25.0-alpha.7) + +#### Summary of changes +- Fixed bug where repeated uses of extractSignature would fail because of the use of regex.prototype.match +- Added support for building on IBM i (PASE) machines +- Fixed bug where signingCb in rebases would not return error codes to LibGit2 if the signingCb threw or rejected +- Exposed AnnotatedCommit methods: + - AnnotatedCommit.prototype.ref +- Exposed Apply methods: + - Apply.apply applies a diff to the repository + - Apply.toTree applies a diff to a tree +- Exposed Config methods: + - Config.prototype.deleteEntry + - Config.prototype.deleteMultivar + - Config.prototype.getBool + - Config.prototype.getInt32 + - Config.prototype.getInt64 + - Config.prototype.setMultivar + - Config.prototype.snapshot +- Exposed ConfigIterator with methods: + - ConfigIterator.create + - ConfigIterator.createGlob + - ConfigIterator.createMultivar + - ConfigIterator.prototype.next +- Exposed Merge methods: + - Merge.analysis + - Merge.analysisForRef +- Expose Remote methods: + - Remote.createWithOpts + +#### Merged PRs into NodeGit +- [Fix regex state causing subsequent runs of Tag.extractSignature to fail #1630](https://github.com/nodegit/nodegit/pull/1630) +- [Update LibGit2 docs to v0.28.0 #1631](https://github.com/nodegit/nodegit/pull/1631) +- [Add support for building on IBM i (PASE) #1634](https://github.com/nodegit/nodegit/pull/1634) +- [Expose more config methods #1635](https://github.com/nodegit/nodegit/pull/1635) +- [Catch errors and pass them to libgit2 as error codes in rebase signingcb #1636](https://github.com/nodegit/nodegit/pull/1636) +- [Simplify check for IBM i operating system #1637](https://github.com/nodegit/nodegit/pull/1637) +- [Bump LibGit2 to fork of v0.28.1 #1638](https://github.com/nodegit/nodegit/pull/1638) + + +## v0.25.0-alpha.6 [(2019-02-14)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.6) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.5...v0.25.0-alpha.6) + +#### Summary of changes +- Bumped LibGit2 to v0.28.0. +- Fixed problem with continue rebase preventing users from skipping commits +- Fixed leak where struct/option types were leaking libgit2 pointers + +#### Merged PRs into NodeGit +- [We should clear the persistent cell in structs when they are destroyed #1629](https://github.com/nodegit/nodegit/pull/1629) +- [Fix "errorno" typo #1628](https://github.com/nodegit/nodegit/pull/1628) +- [Bump Libgit2 fork to v0.28.0 #1627](https://github.com/nodegit/nodegit/pull/1627) + + +## v0.25.0-alpha.5 [(2019-02-11)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.5) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.4...v0.25.0-alpha.5) + +#### Summary of changes +- Fixed builds for Electron 4 for real this time + +#### Merged PRs into NodeGit +- [Fix macOS and Windows Electron 4 builds #1626](https://github.com/nodegit/nodegit/pull/1626) + + +## v0.25.0-alpha.4 [(2019-02-08)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.4) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.3...v0.25.0-alpha.4) + +#### Summary of changes +- Fixed bug where signing the init commit failed due to being unable to update the `HEAD` ref. +- Changed `NodeGit.Signature.default` to async, because it actually ends up reading the config. +- Fixed bug where templates were not reporting errors for synchronous methods. It's a bit of a wide net, but in general, + it is now possible certain sync methods in NodeGit will begin failin that did not fail before. This is the correct + behavior. +- Switched `NodeGit.Oid.fromString`'s internal implementation from `git_oid_fromstr` to `git_oid_fromstrp` +- Fixed builds for Electron 4 +- Added `NodeGit.Reference.updateTerminal` + +#### Merged PRs into NodeGit +- [Fix non-existent / dangling refs cause Repository.prototype.createCommitWithSignature to fail #1624](https://github.com/nodegit/nodegit/pull/1624) +- [Handle new gyp information for electron builds #1623](https://github.com/nodegit/nodegit/pull/1623) + + +## v0.25.0-alpha.3 [(2019-02-05)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.3) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.2...v0.25.0-alpha.3) + +#### Summary of changes +- Enforced consistent use of signing callbacks within the application. Any object that implements the signingCallback + pattern for signing commits or tags should use the exact same callback type and with the same meaning. + `type SigningCallback = (content: string) => {| code: number, field?: string, signedData?: string |};` + If the code is `NodeGit.Error.CODE.OK` or 0, the operation will succeed and _at least_ signedData is expected to be filled out. + If the code is a negative number, except for `NodeGit.Error.CODE.PASSTHROUGH`, the signing operation will fail. + If the code is `NodeGit.Error.CODE.PASSTHROUGH`, the operation will continue without signing the object. + +#### Merged PRs into NodeGit +- [Use same API for signingCb in all places that can be crypto signed #1621](https://github.com/nodegit/nodegit/pull/1621) + + +## v0.25.0-alpha.2 [(2019-02-01)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.25.0-alpha.1...v0.25.0-alpha.2) + +#### Summary of changes +- Added RebaseOptions to repository.prototype.rebaseContinue + +#### Merged PRs into NodeGit +- [Breaking: Repository.prototype.continueRebase enhancements #1619](https://github.com/nodegit/nodegit/pull/1619) + + +## v0.25.0-alpha.1 [(2019-01-30)](https://github.com/nodegit/nodegit/releases/tag/v0.25.0-alpha.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.24.0...v0.25.0-alpha.1) + +#### Summary of changes +- Bump Libgit2 to preview of v0.28.0 +- Add signing support for commits and annotated tags +- Updated Signature.prototype.toString to optionally include timestamps +- [BREAKING] Converted Buf.prototype.set and Buf.prototype.grow from async to sync +- Added complete support for libgit2 types: + - git_index_name_entry + - git_index_reuc_entry + - git_mailmap +- Exposed git_path_is_gitfile +- Exposed git_tag_create_frombuffer + +#### Merged PRs into NodeGit +- [adds support for gpg commit signing (fixes #1018) #1448](https://github.com/nodegit/nodegit/pull/1448) +- [Add `updateRef` parameter to Repository#createCommitWithSignature #1610](https://github.com/nodegit/nodegit/pull/1610) +- [Documentation fixes. #1611](https://github.com/nodegit/nodegit/pull/1611) +- [Add Commit#amendWithSignature #1616](https://github.com/nodegit/nodegit/pull/1616) +- [Bump libgit2 to a preview of v0.28 #1615](https://github.com/nodegit/nodegit/pull/1615) +- [Fix issues with Commit#amendWithSignature #1617](https://github.com/nodegit/nodegit/pull/1617) +- [Marked Repository.createBlobFromBuffer as async #1614](https://github.com/nodegit/nodegit/pull/1614) +- [Add functionality for creating Tags with signatures and extracting signatures from Tags #1618](https://github.com/nodegit/nodegit/pull/1618) + + +## v0.24.0 [(2019-01-16)](https://github.com/nodegit/nodegit/releases/tag/v0.24.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.23.0...v0.24.0) + +#### Summary of changes +- Garbage collect most of the library. +- All free functions have been removed. The expectation is that they will be collected by the GC. +- All init options methods have been removed. They were never supposed to be exposed in the first place. +- Added support for performing history walks on directories. +- Fix various bugs that led to segfaults or incorrect behavior. +- Removed ssl and crypto dependency from non-electron builds. + +##### Removed methods +Mostly due to missing support anyway, please report anything you were using as an issue. + - NodeGit.Blob.createFromStreamCommit + - NodeGit.Branch.Iterator.prototype.new + - NodeGit.Config.initBackend + - NodeGit.Config.prototype.snapshot + - NodeGit.Config.prototype.setBool + - NodeGit.Config.prototype.setInt32 + - NodeGit.Config.prototype.setInt64 + - NodeGit.Index.prototype.owner + - NodeGit.Note.iteratorNew + - NodeGit.Note.next + - NodeGit.Odb.prototype.addDiskAlternate + - NodeGit.Repository.prototype.configSnapshot + - NodeGit.Signature.prototype.dup + - NodeGit.Tag.foreach + - NodeGit.Transport.init + - NodeGit.Transport.sshWithPaths + - NodeGit.Transport.unregister + +##### Newly exposed methods: + - NodeGit.Config.prototype.getEntry + - NodeGit.Config.prototype.snapshot + - NodeGit.Config.prototype.refresh + - NodeGit.Config.prototype.setBool + - NodeGit.Config.prototype.setInt32 + - NodeGit.Config.prototype.setInt64 + - NodeGit.Diff.prototype.isSortedIcase + - NodeGit.DiffStats.prototype.deletions + - NodeGit.DiffStats.prototype.filesChanged + - NodeGit.DiffStats.prototype.insertions + - NodeGit.DiffStats.prototype.toBuf + - NodeGit.Odb.hashfile + - NodeGit.Odb.prototype.readPrefix + - NodeGit.OidShorten.prototype.add + - NodeGit.OidShorten.create + - NodeGit.PathspecMatchList.prototype.diffEntry + - NodeGit.PathspecMatchList.prototype.entry + - NodeGit.PathspecMatchList.prototype.entrycount + - NodeGit.PathspecMatchList.prototype.failedEntry + - NodeGit.PathspecMatchList.prototype.failedEntryCount + +##### Newly exposed types + - NodeGit.DescribeFormatOptions + - NodeGit.DiffStats + - NodeGit.OidShorten + - NodeGit.PathspecMatchList + +#### Merged PRs into NodeGit +- [Garbage collection: Free mostly everything automatically #1570](https://github.com/nodegit/nodegit/pull/1570) +- [Fix typo in GitHub issue template #1586](https://github.com/nodegit/nodegit/pull/1586) +- [More suitable example about Signature #1582](https://github.com/nodegit/nodegit/pull/1582) +- [Add support for directories when using `fileHistoryWalk` #1583](https://github.com/nodegit/nodegit/pull/1583) +- [Add a test for Repository's getReferenceCommit #1601](https://github.com/nodegit/nodegit/pull/1601) +- [Check parameters before performing reset #1603](https://github.com/nodegit/nodegit/pull/1603) +- [Remove ssl and crypto dependency on non-electron builds #1600](https://github.com/nodegit/nodegit/pull/1600) +- [Clean up libssh2 configure step #1574](https://github.com/nodegit/nodegit/pull/1574) +- [Fix checkout bug in our fork of libgit2 #1609](https://github.com/nodegit/nodegit/pull/1609) +- [Fix segfault in NodeGit.Revert.revert #1605](https://github.com/nodegit/nodegit/pull/1605) + + +## v0.24.0-alpha.1 [(2018-10-25)](https://github.com/nodegit/nodegit/releases/tag/v0.24.0-alpha.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.23.0...v0.24.0-alpha.1) + +#### Summary of changes +- Garbage collect most of the library. +- All free functions have been removed. The expectation is that they will be collected by the GC. +- All init options methods have been removed. They were never supposed to be exposed in the first place. + +##### Removed methods +Mostly due to missing support anyway, please report anything you were using as an issue. + - NodeGit.Blob.createFromStreamCommit + - NodeGit.Branch.Iterator.prototype.new + - NodeGit.Config.initBackend + - NodeGit.Config.prototype.snapshot + - NodeGit.Config.prototype.setBool + - NodeGit.Config.prototype.setInt32 + - NodeGit.Config.prototype.setInt64 + - NodeGit.Index.prototype.owner + - NodeGit.Note.iteratorNew + - NodeGit.Note.next + - NodeGit.Odb.prototype.addDiskAlternate + - NodeGit.Repository.prototype.configSnapshot + - NodeGit.Signature.prototype.dup + - NodeGit.Tag.foreach + - NodeGit.Transport.init + - NodeGit.Transport.sshWithPaths + - NodeGit.Transport.unregister + +##### Newly exposed methods: + - NodeGit.Config.prototype.getEntry + - NodeGit.Config.prototype.snapshot + - NodeGit.Config.prototype.refresh + - NodeGit.Config.prototype.setBool + - NodeGit.Config.prototype.setInt32 + - NodeGit.Config.prototype.setInt64 + - NodeGit.Diff.prototype.isSortedIcase + - NodeGit.DiffStats.prototype.deletions + - NodeGit.DiffStats.prototype.filesChanged + - NodeGit.DiffStats.prototype.insertions + - NodeGit.DiffStats.prototype.toBuf + - NodeGit.Odb.hashfile + - NodeGit.Odb.prototype.readPrefix + - NodeGit.OidShorten.prototype.add + - NodeGit.OidShorten.create + - NodeGit.PathspecMatchList.prototype.diffEntry + - NodeGit.PathspecMatchList.prototype.entry + - NodeGit.PathspecMatchList.prototype.entrycount + - NodeGit.PathspecMatchList.prototype.failedEntry + - NodeGit.PathspecMatchList.prototype.failedEntryCount + +##### Newly exposed types + - NodeGit.DescribeFormatOptions + - NodeGit.DiffStats + - NodeGit.OidShorten + - NodeGit.PathspecMatchList + +#### Merged PRs into NodeGit +- [Garbage collection: Free mostly everything automatically #1570](https://github.com/nodegit/nodegit/pull/1570) + + +## v0.23.0 [(2018-10-22)](https://github.com/nodegit/nodegit/releases/tag/v0.23.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.22.2...v0.23.0) + +#### Summary of changes +- Added Node 10 support. +- We no longer compile OpenSSL. Instead, we prefer the OpenSSL shipped with Node. In electron builds, we prefer the system openssl on linux, and we get prebuilt static libs from Conan. +- Cleaned up some compiler warnings +- Our http_parser dependency is now a submodule. +- Updated some dependencies in npm to get rid of security vulnerabilities and warnings. +- Exposed transfer progress callback for pushing. +- Libssh2 is now preconfigured for both Mac OS and Windows + +#### Merged PRs into NodeGit +- [warn about node v10 incompatibility in readme #1534](https://github.com/nodegit/nodegit/pull/1534) +- [Define error codes to fix compiler warnings about unused variables #1486](https://github.com/nodegit/nodegit/pull/1486) +- [Include http_parser via submodule #1551](https://github.com/nodegit/nodegit/pull/1551) +- [Update dependencies to get rid of security vulnerabilities #1547](https://github.com/nodegit/nodegit/pull/1547) +- [add github issue template #1548](https://github.com/nodegit/nodegit/pull/1548) +- [Enable git_push_transfer_progress - Help wanted #1500](https://github.com/nodegit/nodegit/pull/1500) +- [Fixed createBranch API params #1552](https://github.com/nodegit/nodegit/pull/1552) +- [Use curl-config to find curl #1555](https://github.com/nodegit/nodegit/pull/1555) +- [Update readme #1554](https://github.com/nodegit/nodegit/pull/1554) +- [Node 10 support #1545](https://github.com/nodegit/nodegit/pull/1545) +- [Update dependencies #1519](https://github.com/nodegit/nodegit/pull/1519) +- [Run submodule updates in sequence rather than parallel #1558](https://github.com/nodegit/nodegit/pull/1558) +- [Fix Electron builds on win32 #1560](https://github.com/nodegit/nodegit/pull/1560) +- [Use static `libssh2_config.h` on MacOS builds #1569](https://github.com/nodegit/nodegit/pull/1569) + + +## v0.23.0-alpha.2 [(2018-10-19)](https://github.com/nodegit/nodegit/releases/tag/v0.23.0-alpha.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.23.0-alpha.1...v0.23.0-alpha.2) + +#### Summary of changes +On Mac OS Mojave, libssh2 configure failed to configure, because libssh2 always tries to configure against system libraries. The configure process uses links to determine that a OpenSSL is present. Since OSX and Windows no longer link against the system lib, we've prebuilt the configure steps for both environments. This should be stable when building NodeGit on Mojave. + +#### Merged PRs into NodeGit +- [Use static `libssh2_config.h` on MacOS builds #1569](https://github.com/nodegit/nodegit/pull/1569) + + +## v0.23.0-alpha.1 [(2018-10-01)](https://github.com/nodegit/nodegit/releases/tag/v0.23.0-alpha.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.22.2...v0.23.0-alpha.1) + +#### Summary of changes +- Added Node 10 support. +- We no longer compile OpenSSL. Instead, we prefer the OpenSSL shipped with Node. In electron builds, we prefer the system openssl on linux, and we get prebuilt static libs from Conan. +- Cleaned up some compiler warnings +- Our http_parser dependency is now a submodule. +- Updated some dependencies in npm to get rid of security vulnerabilities and warnings. +- Exposed transfer progress callback for pushing. + +#### Merged PRs into NodeGit +- [warn about node v10 incompatibility in readme #1534](https://github.com/nodegit/nodegit/pull/1534) +- [Define error codes to fix compiler warnings about unused variables #1486](https://github.com/nodegit/nodegit/pull/1486) +- [Include http_parser via submodule #1551](https://github.com/nodegit/nodegit/pull/1551) +- [Update dependencies to get rid of security vulnerabilities #1547](https://github.com/nodegit/nodegit/pull/1547) +- [add github issue template #1548](https://github.com/nodegit/nodegit/pull/1548) +- [Enable git_push_transfer_progress - Help wanted #1500](https://github.com/nodegit/nodegit/pull/1500) +- [Fixed createBranch API params #1552](https://github.com/nodegit/nodegit/pull/1552) +- [Use curl-config to find curl #1555](https://github.com/nodegit/nodegit/pull/1555) +- [Update readme #1554](https://github.com/nodegit/nodegit/pull/1554) +- [Node 10 support #1545](https://github.com/nodegit/nodegit/pull/1545) +- [Update dependencies #1519](https://github.com/nodegit/nodegit/pull/1519) +- [Run submodule updates in sequence rather than parallel #1558](https://github.com/nodegit/nodegit/pull/1558) +- [Fix Electron builds on win32 #1560](https://github.com/nodegit/nodegit/pull/1560) + + +## v0.22.2 [(2018-07-10)](https://github.com/nodegit/nodegit/releases/tag/v0.22.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.22.1...v0.22.2) + +#### Summary of changes +- Bumped libgit2 to 0.27.3 to incorporate security patch. Details can be found here https://github.com/libgit2/libgit2/releases/tag/v0.27.3 +- Also includes changes made in 0.27.2. Details can be found here https://github.com/libgit2/libgit2/releases/tag/v0.27.2 +- Ensure optional params are respected as optional in `NodeGit.Merge.trees` + +#### Merged PRs into NodeGit +- [Fix argument handling in Git.Merge.trees #1507](https://github.com/nodegit/nodegit/pull/1507) + +#### Included non-merged libgit2 PRs: + - [Parallelize checkout_create_the_new for ntfs perf gains #4205](https://github.com/libgit2/libgit2/pull/4205) + - [negotiate always fails via libcurl #4126](https://github.com/libgit2/libgit2/pull/4126) + +#### Included merged libgit2 PRs: +- [Bugfix release v0.27.2 #4632](https://github.com/libgit2/libgit2/pull/4632) +- [Release v0.27.3 #4717](https://github.com/libgit2/libgit2/pull/4717) + + +## v0.22.1 [(2018-04-09)](https://github.com/nodegit/nodegit/releases/tag/v0.22.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.22.0...v0.22.1) + +#### Summary of changes +Bumped libgit2 to 0.27.1 to address security flaw with submodule name validation (CVE-2018-11235, reported by Etienne Stalmans). +Details can be found here https://github.com/libgit2/libgit2/releases/tag/v0.27.1 + + +## v0.22.0 [(2018-04-09)](https://github.com/nodegit/nodegit/releases/tag/v0.22.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.21.2...v0.22.0) + +#### Summary of changes +- Expose [Tag.listMatch](https://libgit2.github.com/libgit2/#v0.26.3/group/tag/git_tag_list_match) +- Expose [Repo.prototype.createCommitBuffer](https://libgit2.github.com/libgit2/#v0.26.3/group/commit/git_commit_create_buffer) +- Bump Libgt2 to 0.27.0. For more information about what was in this release. [Check upstream](https://github.com/libgit2/libgit2/releases/tag/v0.27.0). +- Errors are now properly thrown from + - `Attr.prototype.get` + - `Blob.createFrombuffer` + - `Blob.createFromworkdir` + - `Reference.list` + - `Remote.prototype.getFetchRefspecs` + - `Remote.prototype.getPushRefspecs` + - `Status.file` +- WorkTree is now exposed + - Static methods + - `add` + - `list` + - `lookup` + - `openFromRepository` + - Instance methods + - `isLocked` + - `isPrunable` + - `lock` + - `prune` + - `unlock` + - `validate` +- **BREAKING** Functions that are now async + - `Attr.prototype.getMany` + - `Tag.prototype.target` + - `Treebuilder.prototype.Write` +- **BREAKING** Diffs generated from `Diff.treeToIndex` and `Diff.treeToWorkdirWithIndex` conditionally support `Diff.OPTION.IGNORE_CASE`. Only on repositories where the index is case insensitive will the flag be set on the output diff. The flag itself is ignored when passed to `DiffOptions`. + +#### Merged PRs into NodeGit +- [Add JavaScript Tag.listMatch function for git_tag_list_match #1470](https://github.com/nodegit/nodegit/pull/1470) +- [Expose error code in Status.file #1468](https://github.com/nodegit/nodegit/pull/1468) +- [Travis documentation deploy fixes #1466](https://github.com/nodegit/nodegit/pull/1466) +- [Bump to libgit2 v0.27.0 #1477](https://github.com/nodegit/nodegit/pull/1477) +- [Add repo.createCommitBuffer #1481](https://github.com/nodegit/nodegit/pull/1481) + +#### Included non-merged libgit2 PRs: + - [Parallelize checkout_create_the_new for ntfs perf gains #4205](https://github.com/libgit2/libgit2/pull/4205) + - [negotiate always fails via libcurl #4126](https://github.com/libgit2/libgit2/pull/4126) + + +## v0.21.2 [(2018-03-19)](https://github.com/nodegit/nodegit/releases/tag/v0.21.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.21.1...v0.21.2) + +#### Summary of changes +- Drop support for node 7 +- Fixed an issue where fast-forward rebase would throw an error unexepctedly. +- Expose git_commit_extract_signature +- TreeEntry.prototype.path() should always return posix style separators +- Expose git_config_open_ondisk +- Expose git_config_find_global +- Expose git_config_find_system +- Expose git_config_find_xdg +- Expose git_config_get_path + +#### Merged PRs into NodeGit + - [Fix typo in CHANGELOG.md #1455](https://github.com/nodegit/nodegit/pull/1455) + - [Add two tests for Tag #1452](https://github.com/nodegit/nodegit/pull/1452) + - [Handle fast-forward merges properly in repository.performRebase #1457](https://github.com/nodegit/nodegit/pull/1457) + - [Enable git_commit_extract_signature #1458](https://github.com/nodegit/nodegit/pull/1458) + - [removes 'only' from test #1460](https://github.com/nodegit/nodegit/pull/1460) + - [Deploy documentation and make extended tests visible #1447](https://github.com/nodegit/nodegit/pull/1447) + - [resolves #1433 TreeEntry#path should return posix path #1434](https://github.com/nodegit/nodegit/pull/1434) + - [Exposed git_config_open_ondisk #1459](https://github.com/nodegit/nodegit/pull/1459) + - [Expose git_config functions #1463](https://github.com/nodegit/nodegit/pull/1463) + + +## v0.21.1 [(2018-03-05)](https://github.com/nodegit/nodegit/releases/tag/v0.21.1) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.21.0...v0.21.1) + +#### Summary of changes +- Fixed an issue where having html escape characters in the path portion of an ssh url always fails when performing remote actions. + +#### Included non-merged libgit2 PRs: +- [Unescape special characters in SSH repo paths #4557](https://github.com/libgit2/libgit2/pull/4557) + +## v0.21.0 [(2018-02-26)](https://github.com/nodegit/nodegit/releases/tag/v0.21.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.20.3...v0.21.0) + +#### Summary of changes to NodeGit: + - [Generate default options for Revert.revert to prevent an exception #1404](https://github.com/nodegit/nodegit/pull/1404) + - [fix issue with re-require()'ing native modules #1354](https://github.com/nodegit/nodegit/pull/1354) + - [Expose JavaScript function name in a rejected promise #1393](https://github.com/nodegit/nodegit/pull/1393) + - [Fix compiling with clang #1344](https://github.com/nodegit/nodegit/pull/1344) + - [Fix typos #1415](https://github.com/nodegit/nodegit/pull/1415) + - [build: add NetBSD support to opensslconf.h #1374](https://github.com/nodegit/nodegit/pull/1374) + - [Fix example by forcing backslashes with path.posix #1346](https://github.com/nodegit/nodegit/pull/1346) + - [Expose the Node.js GC when running `mocha `scripts #1258](https://github.com/nodegit/nodegit/pull/1258) + - [Exposed filter_list; Fixed discard lines to use filters #1414](https://github.com/nodegit/nodegit/pull/1414) + - [Add tests for AnnotatedCommit #1325](https://github.com/nodegit/nodegit/pull/1325) + - [Adding docs for NodeGit #1350](https://github.com/nodegit/nodegit/pull/1350) + - [Fix details-for-tree-entry.js to access fields instead of calling a function #1326](https://github.com/nodegit/nodegit/pull/1326) + - [Add JavaScript version of `git_tag_peel()` #1269](https://github.com/nodegit/nodegit/pull/1269) + - [Fixed documentation error #1417](https://github.com/nodegit/nodegit/pull/1417) + - [Annotate Blame.file as async #1421](https://github.com/nodegit/nodegit/pull/1421) + - [Add two missing tests to Commit #1422](https://github.com/nodegit/nodegit/pull/1422) + - [CI: Update Node.js versions + some deps #1444](https://github.com/nodegit/nodegit/pull/1444) + - [Expose fetch_options.custom_headers #1430](https://github.com/nodegit/nodegit/pull/1430) + +## v0.20.3 [(2017-10-18)](https://github.com/nodegit/nodegit/releases/tag/v0.20.3) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.20.2...v0.20.3) + +#### Summary of changes outside of libgit2 bump: + - [Bumped libgit to libgit-next head #1387](https://github.com/nodegit/nodegit/pull/1387) + - [Added a better normalizeOptions pattern for the submodule update routine #1388](https://github.com/nodegit/nodegit/pull/1388) + - [Updated input docs to allow for git_push_update_reference_cb to generate #1386](https://github.com/nodegit/nodegit/pull/1386) + - [Updated descriptors for git_index_find and git_index_find_prefix #1391](https://github.com/nodegit/nodegit/pull/1391) + +#### Included merged libgit2 PRs: + - [Fix template dir empty string #4273](https://github.com/libgit2/libgit2/pull/4273) + - [travis: upgrade container to Ubuntu 14.04 #4211](https://github.com/libgit2/libgit2/pull/4211) + - [merge: perform exact rename detection in linear time #4202](https://github.com/libgit2/libgit2/pull/4202) + - [merge: fix potential free of uninitialized memory #4277](https://github.com/libgit2/libgit2/pull/4277) + - [cmake: Permit disabling external http-parser #4278](https://github.com/libgit2/libgit2/pull/4278) + - [Out of tree builds #4235](https://github.com/libgit2/libgit2/pull/4235) + - [Convert port with htons() in p_getaddrinfo() #4280](https://github.com/libgit2/libgit2/pull/4280) + - [tests: config: fix missing declaration causing error #4291](https://github.com/libgit2/libgit2/pull/4291) + - [git_reset_*: pass parameters as const pointers #4287](https://github.com/libgit2/libgit2/pull/4287) + - [signature: don't leave a dangling pointer to the strings on parse failure #4306](https://github.com/libgit2/libgit2/pull/4306) + - [Patch ID calculation #4272](https://github.com/libgit2/libgit2/pull/4272) + - [Configuration file fixes with includes #4250](https://github.com/libgit2/libgit2/pull/4250) + - [win32: provide fast-path for retrying filesystem operations #4311](https://github.com/libgit2/libgit2/pull/4311) + - [Build with patched libcurl #4317](https://github.com/libgit2/libgit2/pull/4317) + - [tsort: remove idempotent conditional assignment #4314](https://github.com/libgit2/libgit2/pull/4314) + - [tests: rebase::submodule: verify initialization method calls #4320](https://github.com/libgit2/libgit2/pull/4320) + - [Remove unused 'sys/remote.h' header #4323](https://github.com/libgit2/libgit2/pull/4323) + - [patch_generate: represent buffers as void pointers #4304](https://github.com/libgit2/libgit2/pull/4304) + - [sha1_position: convert do-while to while #4326](https://github.com/libgit2/libgit2/pull/4326) + - [sha1_lookup: drop sha1_entry_pos function #4327](https://github.com/libgit2/libgit2/pull/4327) + - [oid: use memcmp in git_oid__hashcmp #4328](https://github.com/libgit2/libgit2/pull/4328) + - [Docs: Fix inline comments for git_diff_hunk #4330](https://github.com/libgit2/libgit2/pull/4330) + - [Split up CMakeLists.txt build instructions #4282](https://github.com/libgit2/libgit2/pull/4282) + - [-Werror builds for Travis #4279](https://github.com/libgit2/libgit2/pull/4279) + - [Submodules with bare repo #4305](https://github.com/libgit2/libgit2/pull/4305) + - [Fix negative ignore rules with patterns #4296](https://github.com/libgit2/libgit2/pull/4296) + - [README: Mention Guile-Git bindings. #4342](https://github.com/libgit2/libgit2/pull/4342) + - [features.h: allow building without CMake-generated feature header #4346](https://github.com/libgit2/libgit2/pull/4346) + - [Clear the remote_ref_name buffer in git_push_update_tips() #4344](https://github.com/libgit2/libgit2/pull/4344) + - [Fix AppVeyor build failures due to CRTDBG linking issue #4347](https://github.com/libgit2/libgit2/pull/4347) + - [diff: cleanup hash ctx in `git_diff_patchid` #4348](https://github.com/libgit2/libgit2/pull/4348) + - [Reproducible builds #4334](https://github.com/libgit2/libgit2/pull/4334) + - [Static linking for bundled deps #4339](https://github.com/libgit2/libgit2/pull/4339) + - [Use SOCK_CLOEXEC when creating sockets #4364](https://github.com/libgit2/libgit2/pull/4364) + - [Document that a commit is not a descendant of itself #4362](https://github.com/libgit2/libgit2/pull/4362) + - [refs: do not use peeled OID if peeling to a tag #4367](https://github.com/libgit2/libgit2/pull/4367) + - [remote: add typedef to normalize push_update_reference callback #4363](https://github.com/libgit2/libgit2/pull/4363) + - [travis: add custom apt sources #4321](https://github.com/libgit2/libgit2/pull/4321) + - [Fix Issue #4047 Check return codes and free objects #4370](https://github.com/libgit2/libgit2/pull/4370) + - [Plug some leaks in curl's proxy handling #4359](https://github.com/libgit2/libgit2/pull/4359) + - [Checkout typechange-only deltas #4369](https://github.com/libgit2/libgit2/pull/4369) + - [tests: checkout::tree: verify status entrycount changes on chmod #4371](https://github.com/libgit2/libgit2/pull/4371) + - [transports: smart: fix memory leak when skipping symbolic refs #4368](https://github.com/libgit2/libgit2/pull/4368) + - [cmake: fix linking in Xcode with object libraries only #4372](https://github.com/libgit2/libgit2/pull/4372) + - [cmake: use static dependencies when building static libgit2 #4356](https://github.com/libgit2/libgit2/pull/4356) + +#### Included non-merged libgit2 PRs: + - [Parallelize checkout_create_the_new for ntfs perf gains #4205](https://github.com/libgit2/libgit2/pull/4205) + - [negotiate always fails via libcurl #4126](https://github.com/libgit2/libgit2/pull/4126) + + + +## v0.20.2 [(2017-09-13)](https://github.com/nodegit/nodegit/releases/tag/v0.20.2) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.20.0...v0.20.2) + +#### Summary of changes outside of libgit2 bump: + - [Fixed an issue where large buffer allocations in filters (> 256MB) causes a segfault #1368](https://github.com/nodegit/nodegit/pull/1368) + - [Fix git_tree_entry double free #1332](https://github.com/nodegit/nodegit/pull/1332) + +## v0.20.0 [(2017-08-16)](https://github.com/nodegit/nodegit/releases/tag/v0.20.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.19.0...v0.20.0) + +#### Summary of changes outside of libgit2 bump: + - [BREAKING: Added blob methods and converted to async #1327](https://github.com/nodegit/nodegit/pull/1327) + - [BREAKING: Convert sync methods to async methods #1348](https://github.com/nodegit/nodegit/pull/1348) + - [Exposed libgit2 git_branch_remote_name method #1340](https://github.com/nodegit/nodegit/pull/1340) + - [Adding git_filter support in nodegit #1331](https://github.com/nodegit/nodegit/pull/1331) + - [Add CI build config for node stable version #1337](https://github.com/nodegit/nodegit/pull/1337) + - [removed node v4 tests #1330](https://github.com/nodegit/nodegit/pull/1330) + +#### Included merged libgit2 PRs: + - [Include fixups #4288](https://github.com/libgit2/libgit2/pull/4288) + - [Docs: Fix inline comments for git_diff_hunk #4330](https://github.com/libgit2/libgit2/pull/4330) + - [oid: use memcmp in git_oid__hashcmp #4328](https://github.com/libgit2/libgit2/pull/4328) + - [sha1_lookup: drop sha1_entry_pos function #4327](https://github.com/libgit2/libgit2/pull/4327) + - [sha1_position: convert do-while to while #4326](https://github.com/libgit2/libgit2/pull/4326) + - [patch_generate: represent buffers as void pointers #4304](https://github.com/libgit2/libgit2/pull/4304) + - [Remove unused 'sys/remote.h' header #4323](https://github.com/libgit2/libgit2/pull/4323) + - [tests: rebase::submodule: verify initialization method calls #4320](https://github.com/libgit2/libgit2/pull/4320) + - [tests: rewrite rebase-submodule .gitmodule file #4275](https://github.com/libgit2/libgit2/pull/4275) + - [tsort: remove idempotent conditional assignment #4314](https://github.com/libgit2/libgit2/pull/4314) + - [Build with patched libcurl #4317](https://github.com/libgit2/libgit2/pull/4317) + - [win32: provide fast-path for retrying filesystem operations #4311](https://github.com/libgit2/libgit2/pull/4311) + - [Configuration file fixes with includes #4250](https://github.com/libgit2/libgit2/pull/4250) + - [Patch ID calculation #4272](https://github.com/libgit2/libgit2/pull/4272) + - [signature: don't leave a dangling pointer to the strings on parse failure #4306](https://github.com/libgit2/libgit2/pull/4306) + - [git_reset_*: pass parameters as const pointers #4287](https://github.com/libgit2/libgit2/pull/4287) + - [tests: config: fix missing declaration causing error #4291](https://github.com/libgit2/libgit2/pull/4291) + - [Convert port with htons() in p_getaddrinfo() #4280](https://github.com/libgit2/libgit2/pull/4280) + - [Out of tree builds #4235](https://github.com/libgit2/libgit2/pull/4235) + - [cmake: Permit disabling external http-parser #4278](https://github.com/libgit2/libgit2/pull/4278) + - [merge: fix potential free of uninitialized memory #4277](https://github.com/libgit2/libgit2/pull/4277) + - [merge: perform exact rename detection in linear time #4202](https://github.com/libgit2/libgit2/pull/4202) + - [travis: upgrade container to Ubuntu 14.04 #4211](https://github.com/libgit2/libgit2/pull/4211) + - [Fix template dir empty string #4273](https://github.com/libgit2/libgit2/pull/4273) + - [adding GIT_FILTER_VERSION to GIT_FILTER_INIT as part of convention #4267](https://github.com/libgit2/libgit2/pull/4267) + - [travis: replace use of deprecated homebrew/dupes tap #4268](https://github.com/libgit2/libgit2/pull/4268) + - [Test improvements #4269](https://github.com/libgit2/libgit2/pull/4269) + - [Read prefix tests #4265](https://github.com/libgit2/libgit2/pull/4265) + - [Allow creation of a configuration object in an in-memory repository #4263](https://github.com/libgit2/libgit2/pull/4263) + - [travis: install openssl explicitly #4266](https://github.com/libgit2/libgit2/pull/4266) + - [smart_protocol: fix parsing of server ACK responses #4261](https://github.com/libgit2/libgit2/pull/4261) + - [odb_read_prefix: reset error in backends loop #4264](https://github.com/libgit2/libgit2/pull/4264) + - [Update version number to 0.26 #4262](https://github.com/libgit2/libgit2/pull/4262) + - [CHANGELOG: add various changes introduced since v0.25 #4254](https://github.com/libgit2/libgit2/pull/4254) + - [Ensure packfiles with different contents have different names #4088](https://github.com/libgit2/libgit2/pull/4088) + - [Update to forced checkout and untracked files #4260](https://github.com/libgit2/libgit2/pull/4260) + - [settings: rename `GIT_OPT_ENABLE_SYNCHRONOUS_OBJECT_CREATION` #4259](https://github.com/libgit2/libgit2/pull/4259) + - [Buffer growing cleanups #4255](https://github.com/libgit2/libgit2/pull/4255) + - [Coverity fixes #4253](https://github.com/libgit2/libgit2/pull/4253) + - [SHA1DC update #4258](https://github.com/libgit2/libgit2/pull/4258) + - [Fix path computations for compressed index entries #4236](https://github.com/libgit2/libgit2/pull/4236) + - [(Temporarily) disable UNC tests #4256](https://github.com/libgit2/libgit2/pull/4256) + - [fix build with libressl #4251](https://github.com/libgit2/libgit2/pull/4251) + - [Fix issue with directory glob ignore in subdirectories #4239](https://github.com/libgit2/libgit2/pull/4239) + - [Submodule working directory #4243](https://github.com/libgit2/libgit2/pull/4243) + - [Introduce home directory expansion function for config files, attribute files #4179](https://github.com/libgit2/libgit2/pull/4179) + - [Fix proxy auto detect not utilizing callbacks #4097](https://github.com/libgit2/libgit2/pull/4097) + - [git_repository_set_head: use tag name in reflog #4174](https://github.com/libgit2/libgit2/pull/4174) + - [revparse: support open-ended ranges #4231](https://github.com/libgit2/libgit2/pull/4231) + - [Fix GCC warnings #4240](https://github.com/libgit2/libgit2/pull/4240) + - [Update README: VS -> VSTS #4238](https://github.com/libgit2/libgit2/pull/4238) + - [tests: repo: fix repo discovery tests on overlayfs #4232](https://github.com/libgit2/libgit2/pull/4232) + - [libssh2 shutdown #4229](https://github.com/libgit2/libgit2/pull/4229) + - [WIP: squash some memleaks #4226](https://github.com/libgit2/libgit2/pull/4226) + - [Verify object hashes #4197](https://github.com/libgit2/libgit2/pull/4197) + - [transport: provide a getter for the proxy options #4206](https://github.com/libgit2/libgit2/pull/4206) + - [Debian HTTPS feature test failure #4216](https://github.com/libgit2/libgit2/pull/4216) + - [Do not free config when creating remote #4224](https://github.com/libgit2/libgit2/pull/4224) + - [socket_stream: continue to next addrinfo on socket creation failure #4219](https://github.com/libgit2/libgit2/pull/4219) + - [Honor read-only flag when writing to config backends #4217](https://github.com/libgit2/libgit2/pull/4217) + - [diff_parse: free object instead of its pointer #4215](https://github.com/libgit2/libgit2/pull/4215) + +#### Included non-merged libgit2 PRs: + + - [Parallelize checkout_create_the_new for ntfs perf gains #4205](https://github.com/libgit2/libgit2/pull/4205) + - [negotiate always fails via libcurl #4126](https://github.com/libgit2/libgit2/pull/4126) + + +## v0.19.0 [(2017-04-20)](https://github.com/nodegit/nodegit/releases/tag/v0.19.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.18.0...v0.19.0) + +#### Summary of changes outside of libgit2 bump: + - You can now convert tree entries in blobs [PR #1272](https://github.com/nodegit/nodegit/pull/1272) + +#### Included merged libgit2 PRs: + + - [fileops: fix leaking fd in `mmap_ro_file` #4201](https://github.com/libgit2/libgit2/pull/4201) + - [README: document our relation to changes in upstream #4198](https://github.com/libgit2/libgit2/pull/4198) + - [filter: only close filter if it's been initialized correctly #4196](https://github.com/libgit2/libgit2/pull/4196) + - [Fix building against OpenSSL v1.1 #4195](https://github.com/libgit2/libgit2/pull/4195) + - [pkgconfig: fix handling of prefixes containing whitespaces #4193](https://github.com/libgit2/libgit2/pull/4193) + - [Refactor some of the win32 POSIX emulation #4192](https://github.com/libgit2/libgit2/pull/4192) + - [Correct non-existent file references in `odb.h` #4188](https://github.com/libgit2/libgit2/pull/4188) + - [Coverity #4183](https://github.com/libgit2/libgit2/pull/4183) + - [git_treebuilder_write_with_buffer refactorings #4182](https://github.com/libgit2/libgit2/pull/4182) + - [Fix memory leaks #4180](https://github.com/libgit2/libgit2/pull/4180) + - [sha1dc: perf improvements from upstream #4178](https://github.com/libgit2/libgit2/pull/4178) + - [inet_pton: don't assume addr families don't exist #4176](https://github.com/libgit2/libgit2/pull/4176) + - [git_futils: don't O_EXCL and O_TRUNC #4175](https://github.com/libgit2/libgit2/pull/4175) + - [Fix the documentation for git_cred_acquire_cb #4172](https://github.com/libgit2/libgit2/pull/4172) + - [Fix typo in remote.h API #4171](https://github.com/libgit2/libgit2/pull/4171) + - [Fix resolving absolute symlinks (on at least Win32) #4169](https://github.com/libgit2/libgit2/pull/4169) + - [Coverity fixes #4167](https://github.com/libgit2/libgit2/pull/4167) + - [Remove `map_free` macros #4166](https://github.com/libgit2/libgit2/pull/4166) + - [Worktree fixes #4163](https://github.com/libgit2/libgit2/pull/4163) + - [merge_driver: fix const-correctness for source getters #4162](https://github.com/libgit2/libgit2/pull/4162) + - [submodule: catch when submodule is not staged on update #4161](https://github.com/libgit2/libgit2/pull/4161) + - [Diff fixes #4160](https://github.com/libgit2/libgit2/pull/4160) + - [Skip uninteresting commits in revwalk timesort iterator #4157](https://github.com/libgit2/libgit2/pull/4157) + - [git_futils_readbuffer: don't compute sha-1 #4156](https://github.com/libgit2/libgit2/pull/4156) + - [Support namespaced references again #4154](https://github.com/libgit2/libgit2/pull/4154) + - [rebase: ignore untracked files in submodules #4151](https://github.com/libgit2/libgit2/pull/4151) + - [git_commit_create: freshen tree objects in commit #4150](https://github.com/libgit2/libgit2/pull/4150) + - [cmake: only enable supported compiler warning flags #4148](https://github.com/libgit2/libgit2/pull/4148) + - [winhttp: disambiguate error messages when sending requests #4146](https://github.com/libgit2/libgit2/pull/4146) + - [tests: refs::create: fix memory leak #4145](https://github.com/libgit2/libgit2/pull/4145) + - [Fix: make reflog include \"(merge)\" for merge commits #4143](https://github.com/libgit2/libgit2/pull/4143) + - [Fix minor typos in CONVENTIONS.md #4142](https://github.com/libgit2/libgit2/pull/4142) + - [Fix inet_pton tests triggering an assert in Haiku #4141](https://github.com/libgit2/libgit2/pull/4141) + - [README: Mention how to run tests #4139](https://github.com/libgit2/libgit2/pull/4139) + - [tests: Add create__symbolic_with_arbitrary_content #4138](https://github.com/libgit2/libgit2/pull/4138) + - [appveyor: don't rewrite the system mingw #4137](https://github.com/libgit2/libgit2/pull/4137) + - [Introduce (optional) SHA1 collision attack detection #4136](https://github.com/libgit2/libgit2/pull/4136) + - [Provide error on gcc < 4.1 when THREADSAFE #4135](https://github.com/libgit2/libgit2/pull/4135) + - [fix regression from #4092 #4133](https://github.com/libgit2/libgit2/pull/4133) + - [Attrcache cleanups #4131](https://github.com/libgit2/libgit2/pull/4131) + - [Improve clar messages #4130](https://github.com/libgit2/libgit2/pull/4130) + - [Minor comment fix #4127](https://github.com/libgit2/libgit2/pull/4127) + - [refdb: catch additional per-worktree refs #4124](https://github.com/libgit2/libgit2/pull/4124) + - [Signature cleanups #4122](https://github.com/libgit2/libgit2/pull/4122) + - [Changes to provide option to turn off/on ofs_delta #4115](https://github.com/libgit2/libgit2/pull/4115) + - [khash cleanups #4092](https://github.com/libgit2/libgit2/pull/4092) + - [fsync all the things #4030](https://github.com/libgit2/libgit2/pull/4030) + - [Worktree implementation #3436](https://github.com/libgit2/libgit2/pull/3436) + +#### Included non-merged libgit2 PRs: + + - [Parallelize checkout_create_the_new for ntfs perf gains #4205](https://github.com/libgit2/libgit2/pull/4205) + - [negotiate always fails via libcurl #4126](https://github.com/libgit2/libgit2/pull/4126) + - [Fix proxy auto detect not utilizing callbacks #4097](https://github.com/libgit2/libgit2/pull/4097) + +## v0.18.0 [(2017-02-28)](https://github.com/nodegit/nodegit/releases/tag/v0.18.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.17.0...v0.18.0) + +### API Changes + + - All callbacks that go to libgit2 now have an optional `waitForResult` flag that can be `true`/`false`. Defaults to false. When true it will not stop libgit2 from continuing on before the JS code is fully executed and resolved (in cases of a Promise). This is useful for progress callbacks (like fetching) where the bubbling up of the progress to JS doesn't really need the C/C++ code to wait for the JS code to fully handle the event before continuing. This can have serious performance implications for many callbacks that can be fired quite frequently. + - `given_opts` in `Revert.revert` are now optional + - `checkout_opts` in `Reset.fromAnnotated` and `Reset.reset` are now optional + - `Reset.fromAnnotated` is now async + - `message` on `Stash.save` is now optional + - Added `processMergeMessageCallback` on `Repository#mergeBranches` to allow for custom merge messages + - Add `beforeFinishFn` to `Repository#rebaseBranches` and `Repository#continueRebase`. This is called before the invocation of `finish()`. If the callback returns a promise, `finish()` will be called when the promise resolves. The `beforeFinishFn` will be called with an object that has on it: + - `ontoName` The name of the branch that we rebased onto + - `ontoSha` The sha that we rebased onto + - `originalHeadName` The name of the branch that we rebased + - `originalHeadSha` The sha of the branch that was rebased + - `rewitten` which is an array of sha pairs that contain which contain what the commit sha was before the rebase and what the commit sha is after the rebase + +### Summary of Changes from bumping libgit2 to 43275f5 + +[PR #1123](https://github.com/nodegit/nodegit/pull/1223) bumped libgit2 which brought in many changes and bug fixes. + +#### Included merged libgit2 PRs: + + - [Use a shared buffer in calls of git_treebuilder_write to avoid heap contention #3892](https://github.com/libgit2/libgit2/pull/3892) + - [WinHTTP: set proper error messages when SSL fails #4050](https://github.com/libgit2/libgit2/pull/4050) + - [Clang analyzer run #4051](https://github.com/libgit2/libgit2/pull/4051) + - [Extend packfile in increments of page_size. #4053](https://github.com/libgit2/libgit2/pull/4053) + - [Fix general example memory leaks #4078](https://github.com/libgit2/libgit2/pull/4078) + - [WIP: some coverity & compiler warning fixes #4086](https://github.com/libgit2/libgit2/pull/4086) + - [Fix a few recent warnings #4087](https://github.com/libgit2/libgit2/pull/4087) + - [Fix uninitialized variable warning #4095](https://github.com/libgit2/libgit2/pull/4095) + - [Update docs for git_oid_fromstrn and p #4096](https://github.com/libgit2/libgit2/pull/4096) + - [Fix digest credentials for proxy in windows #4104](https://github.com/libgit2/libgit2/pull/4104) + - [Vector reverse overflow #4105](https://github.com/libgit2/libgit2/pull/4105) + - [Flag given_opts in git_revert as optional #4108](https://github.com/libgit2/libgit2/pull/4108) + - [Flag checkout_opts in git_reset as optional #4109](https://github.com/libgit2/libgit2/pull/4109) + - [dirname with DOS prefixes #4111](https://github.com/libgit2/libgit2/pull/4111) + - [Add support for lowercase proxy environment variables #4112](https://github.com/libgit2/libgit2/pull/4112) + - [Flag options in git_stash_apply and git_stash_pop as being optional #4117](https://github.com/libgit2/libgit2/pull/4117) + - [rename detection: don't try to detect submodule renames #4119](https://github.com/libgit2/libgit2/pull/4119) + - [tests: fix permissions on testrepo.git index file #4121](https://github.com/libgit2/libgit2/pull/4121) + +#### Included non-merged libgit2 PRs: + + - [negotiate always fails via libcurl #4126](https://github.com/libgit2/libgit2/pull/4126) + - [Fix proxy auto detect not utilizing callbacks #4097](https://github.com/libgit2/libgit2/pull/4097) + +### Summary of Changes to NodeGit outside of libgit2 bump + + - Don't overwrite C++ files for things that haven't changed [PR #1091](https://github.com/nodegit/nodegit/pull/1091) + - Add the option to "fire and forget" callbacks so libgit2 doesn't wait for JS to finish before proceeding [PR #1208](https://github.com/nodegit/nodegit/pull/1208) + - Send back the error code from libgit2 when a call fails [PR #1209](https://github.com/nodegit/nodegit/pull/1209) + - Initialize pointers to null [PR #1210](https://github.com/nodegit/nodegit/pull/1210) + - Replace Gitter with Slack [PR #1212](https://github.com/nodegit/nodegit/pull/1212) + - Make `given_opts` in `Revert.revert` optional [PR #1213](https://github.com/nodegit/nodegit/pull/1213) + - Make `Reset.fromAnnotated` async and `checkout_opts` optional [PR #1214](https://github.com/nodegit/nodegit/pull/1214) + - Make `message` on `Stash.save` optional [PR #1215](https://github.com/nodegit/nodegit/pull/1215) + - Add `Remote.ls` to NodeGit [PR #1218](https://github.com/nodegit/nodegit/pull/1218) + - Add `processMergeMessageCallback` to `Repository#mergeBranches` to allow for custom merge messages [PR #1219](https://github.com/nodegit/nodegit/pull/1219) + - Bump libgit2 to 43275f5 [PR #1223](https://github.com/nodegit/nodegit/pull/1223) from srajko/bump-libgit + - Provide rebase details on finish [PR #1224](https://github.com/nodegit/nodegit/pull/1224) + - Use wider int to calculate throttle window [PR #1232](https://github.com/nodegit/nodegit/pull/1232) + - Update comment to reflect the correct path for generated code output [PR #1236](https://github.com/nodegit/nodegit/pull/1236) + - Remove nwjs example from the docs [PR #1238](https://github.com/nodegit/nodegit/pull/1238) + - Remove `sudo` requirement from linux 32-bit builds [PR #1241](https://github.com/nodegit/nodegit/pull/1241) + +## v0.17.0 [(2017-01-06)](https://github.com/nodegit/nodegit/releases/tag/v0.17.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.16.0...v0.17.0) + +### Targeted Platform Changes + +In this release we had added support for Node v7 and latest Electron. We have removed support for Node v0.12 and v5. + +We are also deprecating nw.js support since it is currently broken, no one in the current team uses it and we would not be able to currently support nw.js in an effective manner with a good user experience. + +### Now building against shared libcurl lib + +For proxy support we now use libcurl for HTTP/HTTPS transport which should have no noticeable change in NodeGit remote operations but if changes are noticed this is worth mentioning as a potential source. + +### Memory leak fixes and stability increases + +Many PR's were made to fix memory leaks as they were found so memory usage should go down in this version for long running scripts. Additionally, when performing operations with callbacks (transfer progress, credentials, etc...) there was a small chance for a segfault when NodeGit would schedule the callback to go into JavaScript. This is now fixed. + +### Fixes to the build + +Many users, especially on windows, were experiencing errors during the build. The build still isn't perfect but a lot of the bugs were fixed. + +### Bump libgit2 to 0bf0526 + +The majority of changes to NodeGit v17 were in libgit2. The API breaking changes that are known are: + +- `RevWalk` is returning different results [libgit2 PR #3921](https://github.com/libgit2/libgit2/pull/3921) +- Changes in error messages returned [libgit2 PR #4049](https://github.com/libgit2/libgit2/pull/4049) + +Summary of changes that were brought in: + +https://github.com/nodegit/nodegit/pull/1187#issuecomment-277760323 + +### Changes to NodeGit outside of libgit2 bump + +- Define GIT_SSH_MEMORY_CREDENTIALS for libgit2 [PR #949](https://github.com/nodegit/nodegit/pull/949) +- Add "Path" to ssh variable names in tests for clarity [PR #1135](https://github.com/nodegit/nodegit/pull/1135) +- Fix revwalk memory leaks [PR #1137](https://github.com/nodegit/nodegit/pull/1137) +- Fix tree entry leaks [PR #1138](https://github.com/nodegit/nodegit/pull/1138) +- Fix typo in postinstall script [PR #1141](https://github.com/nodegit/nodegit/pull/1141) +- Fix windows exception handling in build [PR #1143](https://github.com/nodegit/nodegit/pull/1143) +- Fix CI failures on node 0.12 [PR #1144](https://github.com/nodegit/nodegit/pull/1144) +- Fix postinstall script crash when install location has spaces in its path [PR #1148](https://github.com/nodegit/nodegit/pull/1148) +- Update 0.13 changelog [PR #1151](https://github.com/nodegit/nodegit/pull/1151) +- Minor documentation fix in Checkout.index [PR #1164](https://github.com/nodegit/nodegit/pull/1164) +- FreeBSD also uses struct timespec st_mtim [PR #1165](https://github.com/nodegit/nodegit/pull/1165) +- README.md needs to show where to get Slack invitation [PR #1170](https://github.com/nodegit/nodegit/pull/1170) +- Add @async tag to `Tree#getEntry` [PR #1178](https://github.com/nodegit/nodegit/pull/1178) +- Fix incorrect anchor link in TESTING.md [PR #1179](https://github.com/nodegit/nodegit/pull/1179) +- Added tests for Tag [PR #1180](https://github.com/nodegit/nodegit/pull/1180) +- Added tests for Branch [PR #1181](https://github.com/nodegit/nodegit/pull/1181) +- Escape the spaces in dir for shell command [PR #1186](https://github.com/nodegit/nodegit/pull/1186) +- Bump libgit to 0bf0526 [PR #1187](https://github.com/nodegit/nodegit/pull/1187) +- Checkout's tree* functions do not support Oid as a parameter [PR #1190](https://github.com/nodegit/nodegit/pull/1190) +- Build against shared library for libcurl [PR #1195](https://github.com/nodegit/nodegit/pull/1195) +- Move libuv calls to correct thread [PR #1197](https://github.com/nodegit/nodegit/pull/1197) +- Update `Repository#createBranch` docs [PR #1198](https://github.com/nodegit/nodegit/pull/1198) +- Remove Node v0.12 and v5 [PR #1199](https://github.com/nodegit/nodegit/pull/1199) +- Specify acceptable types for `lookup` and `dwim` in Reference [PR #1203](https://github.com/nodegit/nodegit/pull/1203) +- Build for Node 7.4.0 [PR #1204](https://github.com/nodegit/nodegit/pull/1204) +- Write the index to a repository directly in merge-cleanly.js examples [PR #1205](https://github.com/nodegit/nodegit/pull/1205) + +## v0.16.0 [(2016-09-15)](https://github.com/nodegit/nodegit/releases/tag/v0.16.0) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.15.1...v0.16.0) + +- Bump libssh2 to 1.7.0 [PR #1071](https://github.com/nodegit/nodegit/pull1071) +- Js cleanup [PR #1074](https://github.com/nodegit/nodegit/pull1074) +- Expose merge options and diff flags [PR #1076](https://github.com/nodegit/nodegit/pull1076) +- Fix Tree#entryByName function and add test [PR #1079](https://github.com/nodegit/nodegit/pull1079) +- Add isSubmodule() method [PR #1080](https://github.com/nodegit/nodegit/pull1080) +- Fix two typos in the documentation for Commit#parents [PR #1081](https://github.com/nodegit/nodegit/pull1081) +- Memory management: duplicate time [PR #1090](https://github.com/nodegit/nodegit/pull1090) +- Preempt nan to fix deprecated calls to Get/SetHiddenValue [PR #1106](https://github.com/nodegit/nodegit/pull1106) +- Try re-enabling node >6.2 [PR #1107](https://github.com/nodegit/nodegit/pull1107) +- Bump openssl to 1.0.2h (same as node 6.3.1) [PR #1108](https://github.com/nodegit/nodegit/pull1108) +- Don't run postbuild when we detect electron install [PR #1111](https://github.com/nodegit/nodegit/pull1111) +- Added instructions for CircleCI users [PR #1113](https://github.com/nodegit/nodegit/pull1113) +- Fix up electron and nw.js docs [PR #1114](https://github.com/nodegit/nodegit/pull1114) +- Patch libssh2 to work with vs2015 [PR #1125](https://github.com/nodegit/nodegit/pull1125) +- Fix CI [PR #1126](https://github.com/nodegit/nodegit/pull1126) + + ## v0.15.1 [(2016-06-20)](https://github.com/nodegit/nodegit/releases/tag/v0.15.1) [Full Changelog](https://github.com/nodegit/nodegit/compare/v0.15.0...v0.15.1) @@ -94,6 +2765,7 @@ We have added Node 6 as a supported platform! Going forward we aim to have 1:1 s - Made `ancestoryEntry`, `outEntry` and `theirEntry` optional parameters on `Index#conflictAdd` [PR #997](https://github.com/nodegit/nodegit/pull/997) - `Repository#refreshIndex` will return an Index object back that has the latest data loaded off of disk [PR #986](https://github.com/nodegit/nodegit/pull/986) - `Commit.create` is now asynchronous [PR #1022](https://github.com/nodegit/nodegit/pull/1022) +- `Remote.create` is now asynchronous [PR #990](https://github.com/nodegit/nodegit/pull/990) ### Added @@ -103,7 +2775,7 @@ We have added Node 6 as a supported platform! Going forward we aim to have 1:1 s ### Removed -- `Repository#openIndex` [PR #990](https://github.com/nodegit/nodegit/pull/990) +- `Repository#openIndex` [PR #989](https://github.com/nodegit/nodegit/pull/989), use `Repository#index` or `Repository#refreshIndex` instead - `Reflog#entryCommitter`, `Reflog#entryIdNew`, `Reflog#entryIdOld`, and `Reflog#entryMessage` have been moved to be under `ReflogEntry` [PR #1013](https://github.com/nodegit/nodegit/pull/1013) @@ -1520,8 +4192,4 @@ We have added Node 6 as a supported platform! Going forward we aim to have 1:1 s [Full Changelog](https://github.com/nodegit/nodegit/compare/v0.0.1...v0.0.2) -## v0.0.1 [(2011-03-10)](https://github.com/nodegit/nodegit/tree/v0.0.1) - - - -\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* +## v0.0.1 [(2011-03-10)](https://github.com/nodegit/nodegit/tree/v0.0.1) \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 52a55d1485..337971a438 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,8 +5,9 @@ Contribution Guidelines We try to be available pretty often to help when problems come up. We like to split incoming questions into two categories: potential bugs/features, and questions. If you want a feature added, or think you've found a bug -in the code (or in the examples), search the [issue tracker](https://github.com/nodegit/nodegit/issues) and if you dont -find anything, file a new issue. If you just have questions, instead of using issues, contact us in our [Gitter room](https://gitter.im/nodegit/nodegit). +in the code (or in the examples), search the [issue tracker](https://github.com/nodegit/nodegit/issues) and if you don't +find anything, file a new issue. If you just have questions, instead of using issues, [sign up](http://slack.libgit2.org/) +to libgit2's Slack instance and then contact us in the [#nodegit channel](https://libgit2.slack.com/messages/nodegit/). ## How to Help ## @@ -21,7 +22,7 @@ These are all good easy ways to start getting involved with the project. You can and see if you can help with any existing issues. Please comment with your intention and any questions before getting started; duplicating work or doing something that would be rejected always sucks. -Additionally, [the documentation](http://www.nodegit.org) needs some love. Get in touch with one of us on Gitter if +Additionally, [the documentation](http://www.nodegit.org) needs some love. Get in touch with one of us on Slack if you'd like to lend a hand with that. -For anything else, Gitter is probably the best way to get in touch as well. Happy coding, merge you soon! +For anything else, Slack is probably the best way to get in touch as well. Happy coding, merge you soon! diff --git a/README.md b/README.md index 6f5d7ba494..72442d791d 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,23 @@ -NodeGit -------- +# NodeGit > Node bindings to the [libgit2](http://libgit2.github.com/) project. -
| Linux | -OS X | -Windows | -Coverage | -Dependencies | -
|---|---|---|---|---|
|
- |
-
- |
-
- |
-
- |
- |
Creates a git_annotated_commit from the given reference.\n The resulting git_annotated_commit must be freed with\n git_annotated_commit_free.
Creates a git_annotated_commit from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n git_annotated_commit_free.
Creates a git_annotated_commit from the given commit id.\n The resulting git_annotated_commit must be freed with\n git_annotated_commit_free.
An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation. For example, conflict files will include the name of the source or target branches being merged. It is therefore preferable to use the most specific function (eg git_annotated_commit_from_ref) instead of this one when that data is known.
Creates a git_annotated_comit from a revision string.
Creates a git_annotated_commit from a revision string.
See man gitrevisions, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
Gets the commit ID that the given git_annotated_commit refers to.
Get the refname that the given git_annotated_commit refers to.
Frees a git_annotated_commit.
Initialize git_apply_options structure
\n", + "comments": "Initialize a git_apply_options with default values. Equivalent to creating an instance with GIT_APPLY_OPTIONS_INIT.
Apply a git_diff to a git_tree, and return the resulting image\n as an index.
Apply a git_diff to the given repository, making changes directly\n in the working directory, the index, or both.
Return the value type for a given attribute.
\n", "comments": "This can be either TRUE, FALSE, UNSPECIFIED (if the attribute was not set at all), or VALUE, if the attribute was set to an actual string.
If the attribute has a VALUE string, it can be accessed normally as a NULL-terminated C string.
Look up the value of one git attribute for path.
\n", "comments": "", "group": "attr" }, + "git_attr_get_ext": { + "type": "function", + "file": "git2/attr.h", + "line": 218, + "lineto": 223, + "args": [ + { + "name": "value_out", + "type": "const char **", + "comment": "Output of the value of the attribute. Use the GIT_ATTR_...\n macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n use the string value for attributes set to a value. You\n should NOT modify or free this value." + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "The repository containing the path." + }, + { + "name": "opts", + "type": "git_attr_options *", + "comment": "The `git_attr_options` to use when querying these attributes." + }, + { + "name": "path", + "type": "const char *", + "comment": "The path to check for attributes. Relative paths are\n interpreted relative to the repo root. The file does\n not have to exist, but if it does not, then it will be\n treated as a plain file (not a directory)." + }, + { + "name": "name", + "type": "const char *", + "comment": "The name of the attribute to look up." + } + ], + "argline": "const char **value_out, git_repository *repo, git_attr_options *opts, const char *path, const char *name", + "sig": "const char **::git_repository *::git_attr_options *::const char *::const char *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Look up the value of one git attribute for path with extended options.
\n", + "comments": "", + "group": "attr" + }, "git_attr_get_many": { "type": "function", - "file": "attr.h", - "line": 181, - "lineto": 187, + "file": "git2/attr.h", + "line": 255, + "lineto": 261, "args": [ { "name": "values_out", @@ -1538,19 +1699,60 @@ ], "argline": "const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names", "sig": "const char **::git_repository *::uint32_t::const char *::size_t::const char **", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Look up a list of git attributes for path.
\n", "comments": "Use this if you have a known list of attributes that you want to look up in a single call. This is somewhat more efficient than calling git_attr_get() multiple times.
For example, you might write:
\n\n const char *attrs[] = { "crlf", "diff", "foo" }; const char **values[3]; git_attr_get_many(values, repo, 0, "my/fun/file.c", 3, attrs);\n\n\nThen you could loop through the 3 values to get the settings for the three attributes you asked about.
\n", "group": "attr" }, + "git_attr_get_many_ext": { + "type": "function", + "file": "git2/attr.h", + "line": 280, + "lineto": 286, + "args": [ + { + "name": "values_out", + "type": "const char **", + "comment": "An array of num_attr entries that will have string\n pointers written into it for the values of the attributes.\n You should not modify or free the values that are written\n into this array (although of course, you should free the\n array itself if you allocated it)." + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "The repository containing the path." + }, + { + "name": "opts", + "type": "git_attr_options *", + "comment": "The `git_attr_options` to use when querying these attributes." + }, + { + "name": "path", + "type": "const char *", + "comment": "The path inside the repo to check attributes. This\n does not have to exist, but if it does not, then\n it will be treated as a plain file (i.e. not a directory)." + }, + { + "name": "num_attr", + "type": "size_t", + "comment": "The number of attributes being looked up" + }, + { + "name": "names", + "type": "const char **", + "comment": "An array of num_attr strings containing attribute names." + } + ], + "argline": "const char **values_out, git_repository *repo, git_attr_options *opts, const char *path, size_t num_attr, const char **names", + "sig": "const char **::git_repository *::git_attr_options *::const char *::size_t::const char **", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Look up a list of git attributes for path with extended options.
\n", + "comments": "", + "group": "attr" + }, "git_attr_foreach": { "type": "function", - "file": "attr.h", - "line": 209, - "lineto": 214, + "file": "git2/attr.h", + "line": 319, + "lineto": 324, "args": [ { "name": "repo", @@ -1570,7 +1772,7 @@ { "name": "callback", "type": "git_attr_foreach_cb", - "comment": "Function to invoke on each attribute name and value. The\n value may be NULL is the attribute is explicitly set to\n UNSPECIFIED using the '!' sign. Callback will be invoked\n only once per attribute name, even if there are multiple\n rules for a given file. The highest priority rule will be\n used. Return a non-zero value from this to stop looping.\n The value will be returned from `git_attr_foreach`." + "comment": "Function to invoke on each attribute name and value.\n See git_attr_foreach_cb." }, { "name": "payload", @@ -1588,75 +1790,111 @@ "comments": "", "group": "attr" }, + "git_attr_foreach_ext": { + "type": "function", + "file": "git2/attr.h", + "line": 339, + "lineto": 344, + "args": [ + { + "name": "repo", + "type": "git_repository *", + "comment": "The repository containing the path." + }, + { + "name": "opts", + "type": "git_attr_options *", + "comment": "The `git_attr_options` to use when querying these attributes." + }, + { + "name": "path", + "type": "const char *", + "comment": "Path inside the repo to check attributes. This does not have\n to exist, but if it does not, then it will be treated as a\n plain file (i.e. not a directory)." + }, + { + "name": "callback", + "type": "git_attr_foreach_cb", + "comment": "Function to invoke on each attribute name and value.\n See git_attr_foreach_cb." + }, + { + "name": "payload", + "type": "void *", + "comment": "Passed on as extra parameter to callback function." + } + ], + "argline": "git_repository *repo, git_attr_options *opts, const char *path, git_attr_foreach_cb callback, void *payload", + "sig": "git_repository *::git_attr_options *::const char *::git_attr_foreach_cb::void *", + "return": { + "type": "int", + "comment": " 0 on success, non-zero callback return value, or error code" + }, + "description": "Loop over all the git attributes for a path with extended options.
\n", + "comments": "", + "group": "attr" + }, "git_attr_cache_flush": { "type": "function", - "file": "attr.h", - "line": 224, - "lineto": 225, + "file": "git2/attr.h", + "line": 357, + "lineto": 358, "args": [ { "name": "repo", "type": "git_repository *", - "comment": null + "comment": "The repository containing the gitattributes cache" } ], "argline": "git_repository *repo", "sig": "git_repository *", - "return": { - "type": "void", - "comment": null - }, + "return": { "type": "int", "comment": " 0 on success, or an error code" }, "description": "Flush the gitattributes cache.
\n", "comments": "Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory. This will cause the attributes files to be reloaded the next time that an attribute access function is called.
\n", "group": "attr" }, "git_attr_add_macro": { "type": "function", - "file": "attr.h", - "line": 237, - "lineto": 240, + "file": "git2/attr.h", + "line": 375, + "lineto": 378, "args": [ { "name": "repo", "type": "git_repository *", - "comment": null + "comment": "The repository to add the macro in." }, { "name": "name", "type": "const char *", - "comment": null + "comment": "The name of the macro." }, { "name": "values", "type": "const char *", - "comment": null + "comment": "The value for the macro." } ], "argline": "git_repository *repo, const char *name, const char *values", "sig": "git_repository *::const char *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Add a macro definition.
\n", - "comments": "Macros will automatically be loaded from the top level .gitattributes file of the repository (plus the build-in "binary" macro). This function allows you to add others. For example, to add the default macro, you would call:
git_attr_add_macro(repo, "binary", "-diff -crlf");\n\n",
+ "comments": "Macros will automatically be loaded from the top level .gitattributes file of the repository (plus the built-in "binary" macro). This function allows you to add others. For example, to add the default macro, you would call:
git_attr_add_macro(repo, "binary", "-diff -crlf");\n\n",
"group": "attr"
},
- "git_blame_init_options": {
+ "git_blame_options_init": {
"type": "function",
- "file": "blame.h",
- "line": 92,
- "lineto": 94,
+ "file": "git2/blame.h",
+ "line": 146,
+ "lineto": 148,
"args": [
{
"name": "opts",
"type": "git_blame_options *",
- "comment": "The `git_blame_options` struct to initialize"
+ "comment": "The `git_blame_options` struct to initialize."
},
{
"name": "version",
"type": "unsigned int",
- "comment": "Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"
+ "comment": "The struct version; pass `GIT_BLAME_OPTIONS_VERSION`."
}
],
"argline": "git_blame_options *opts, unsigned int version",
@@ -1665,37 +1903,53 @@
"type": "int",
"comment": " Zero on success; -1 on failure."
},
- "description": "Initializes a git_blame_options with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.
Initialize git_blame_options structure
\n", + "comments": "Initializes a git_blame_options with default values. Equivalent to creating an instance with GIT_BLAME_OPTIONS_INIT.
Gets the number of lines that exist in the blame structure.
\n", "comments": "", "group": "blame" }, - "git_blame_get_hunk_count": { + "git_blame_hunkcount": { "type": "function", - "file": "blame.h", - "line": 137, - "lineto": 137, + "file": "git2/blame.h", + "line": 252, + "lineto": 252, "args": [ { "name": "blame", "type": "git_blame *", - "comment": null + "comment": "The blame structure to query." } ], "argline": "git_blame *blame", "sig": "git_blame *", - "return": { - "type": "uint32_t", - "comment": null - }, + "return": { "type": "size_t", "comment": " The number of hunks." }, "description": "Gets the number of hunks that exist in the blame structure.
\n", "comments": "", "group": "blame" }, - "git_blame_get_hunk_byindex": { + "git_blame_hunk_byindex": { "type": "function", - "file": "blame.h", - "line": 146, - "lineto": 148, + "file": "git2/blame.h", + "line": 261, + "lineto": 263, "args": [ { "name": "blame", @@ -1704,12 +1958,12 @@ }, { "name": "index", - "type": "uint32_t", + "type": "size_t", "comment": "index of the hunk to retrieve" } ], - "argline": "git_blame *blame, uint32_t index", - "sig": "git_blame *::uint32_t", + "argline": "git_blame *blame, size_t index", + "sig": "git_blame *::size_t", "return": { "type": "const git_blame_hunk *", "comment": " the hunk at the given index, or NULL on error" @@ -1718,11 +1972,11 @@ "comments": "", "group": "blame" }, - "git_blame_get_hunk_byline": { + "git_blame_hunk_byline": { "type": "function", - "file": "blame.h", - "line": 157, - "lineto": 159, + "file": "git2/blame.h", + "line": 273, + "lineto": 275, "args": [ { "name": "blame", @@ -1741,62 +1995,118 @@ "type": "const git_blame_hunk *", "comment": " the hunk that contains the given line, or NULL on error" }, - "description": "Gets the hunk that relates to the given line number in the newest commit.
\n", + "description": "Gets the hunk that relates to the given line number in the newest\n commit.
\n", "comments": "", "group": "blame", "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blame_get_hunk_byline-1" - ] + "blame.c": ["ex/v1.9.1/blame.html#git_blame_hunk_byline-1"] } }, - "git_blame_file": { + "git_blame_line_byindex": { "type": "function", - "file": "blame.h", - "line": 172, - "lineto": 176, + "file": "git2/blame.h", + "line": 284, + "lineto": 286, "args": [ { - "name": "out", - "type": "git_blame **", - "comment": "pointer that will receive the blame object" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "repository whose history is to be walked" - }, - { - "name": "path", - "type": "const char *", - "comment": "path to file to consider" + "name": "blame", + "type": "git_blame *", + "comment": "the blame structure to query" }, { - "name": "options", - "type": "git_blame_options *", - "comment": "options for the blame operation. If NULL, this is treated as\n though GIT_BLAME_OPTIONS_INIT were passed." + "name": "idx", + "type": "size_t", + "comment": "the (1-based) line number" } ], - "argline": "git_blame **out, git_repository *repo, const char *path, git_blame_options *options", - "sig": "git_blame **::git_repository *::const char *::git_blame_options *", + "argline": "git_blame *blame, size_t idx", + "sig": "git_blame *::size_t", "return": { - "type": "int", - "comment": " 0 on success, or an error code. (use giterr_last for information\n about the error.)" + "type": "const git_blame_line *", + "comment": " the blamed line, or NULL on error" }, - "description": "Get the blame for a single file.
\n", + "description": "Gets the information about the line in the blame.
\n", "comments": "", - "group": "blame", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blame_file-2" - ] - } + "group": "blame" + }, + "git_blame_get_hunk_count": { + "type": "function", + "file": "git2/blame.h", + "line": 296, + "lineto": 296, + "args": [ + { + "name": "blame", + "type": "git_blame *", + "comment": "The blame structure to query." + } + ], + "argline": "git_blame *blame", + "sig": "git_blame *", + "return": { "type": "uint32_t", "comment": " The number of hunks." }, + "description": "Gets the number of hunks that exist in the blame structure.
\n", + "comments": "", + "group": "blame" + }, + "git_blame_get_hunk_byindex": { + "type": "function", + "file": "git2/blame.h", + "line": 305, + "lineto": 307, + "args": [ + { + "name": "blame", + "type": "git_blame *", + "comment": "the blame structure to query" + }, + { + "name": "index", + "type": "uint32_t", + "comment": "index of the hunk to retrieve" + } + ], + "argline": "git_blame *blame, uint32_t index", + "sig": "git_blame *::uint32_t", + "return": { + "type": "const git_blame_hunk *", + "comment": " the hunk at the given index, or NULL on error" + }, + "description": "Gets the blame hunk at the given index.
\n", + "comments": "", + "group": "blame" + }, + "git_blame_get_hunk_byline": { + "type": "function", + "file": "git2/blame.h", + "line": 316, + "lineto": 318, + "args": [ + { + "name": "blame", + "type": "git_blame *", + "comment": "the blame structure to query" + }, + { + "name": "lineno", + "type": "size_t", + "comment": "the (1-based) line number to find a hunk for" + } + ], + "argline": "git_blame *blame, size_t lineno", + "sig": "git_blame *::size_t", + "return": { + "type": "const git_blame_hunk *", + "comment": " the hunk that contains the given line, or NULL on error" + }, + "description": "Gets the hunk that relates to the given line number in the newest commit.
\n", + "comments": "", + "group": "blame" }, "git_blame_buffer": { "type": "function", - "file": "blame.h", - "line": 196, - "lineto": 200, + "file": "git2/blame.h", + "line": 374, + "lineto": 378, "args": [ { "name": "out", @@ -1804,7 +2114,7 @@ "comment": "pointer that will receive the resulting blame data" }, { - "name": "reference", + "name": "base", "type": "git_blame *", "comment": "cached blame from the history of the file (usually the output\n from git_blame_file)" }, @@ -1819,21 +2129,21 @@ "comment": "number of valid bytes in the buffer" } ], - "argline": "git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len", + "argline": "git_blame **out, git_blame *base, const char *buffer, size_t buffer_len", "sig": "git_blame **::git_blame *::const char *::size_t", "return": { "type": "int", - "comment": " 0 on success, or an error code. (use giterr_last for information\n about the error)" + "comment": " 0 on success, or an error code. (use git_error_last for information\n about the error)" }, - "description": "Get blame data for a file that has been modified in memory. The reference\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.
Get blame data for a file that has been modified in memory. The blame\n parameter is a pre-calculated blame for the in-odb history of the file.\n This means that once a file blame is completed (which can be expensive),\n updating the buffer blame is very fast.
Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.
\n", "group": "blame" }, "git_blame_free": { "type": "function", - "file": "blame.h", - "line": 207, - "lineto": 207, + "file": "git2/blame.h", + "line": 385, + "lineto": 385, "args": [ { "name": "blame", @@ -1843,24 +2153,17 @@ ], "argline": "git_blame *blame", "sig": "git_blame *", - "return": { - "type": "void", - "comment": null - }, + "return": { "type": "void", "comment": null }, "description": "Free memory allocated by git_blame_file or git_blame_buffer.
\n", "comments": "", "group": "blame", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blame_free-3" - ] - } + "examples": { "blame.c": ["ex/v1.9.1/blame.html#git_blame_free-2"] } }, "git_blob_lookup": { "type": "function", - "file": "blob.h", - "line": 33, - "lineto": 33, + "file": "git2/blob.h", + "line": 37, + "lineto": 40, "args": [ { "name": "blob", @@ -1880,27 +2183,20 @@ ], "argline": "git_blob **blob, git_repository *repo, const git_oid *id", "sig": "git_blob **::git_repository *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Lookup a blob object from a repository.
\n", "comments": "", "group": "blob", "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blob_lookup-4" - ], - "general.c": [ - "ex/HEAD/general.html#git_blob_lookup-1" - ] + "blame.c": ["ex/v1.9.1/blame.html#git_blob_lookup-3"], + "general.c": ["ex/v1.9.1/general.html#git_blob_lookup-1"] } }, "git_blob_lookup_prefix": { "type": "function", - "file": "blob.h", - "line": 47, - "lineto": 47, + "file": "git2/blob.h", + "line": 54, + "lineto": 54, "args": [ { "name": "blob", @@ -1925,46 +2221,35 @@ ], "argline": "git_blob **blob, git_repository *repo, const git_oid *id, size_t len", "sig": "git_blob **::git_repository *::const git_oid *::size_t", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Lookup a blob object from a repository,\n given a prefix of its identifier (short id).
\n", "comments": "", "group": "blob" }, "git_blob_free": { "type": "function", - "file": "blob.h", - "line": 60, - "lineto": 60, + "file": "git2/blob.h", + "line": 67, + "lineto": 67, "args": [ - { - "name": "blob", - "type": "git_blob *", - "comment": "the blob to close" - } + { "name": "blob", "type": "git_blob *", "comment": "the blob to close" } ], "argline": "git_blob *blob", "sig": "git_blob *", - "return": { - "type": "void", - "comment": null - }, + "return": { "type": "void", "comment": null }, "description": "Close an open blob
\n", "comments": "This is a wrapper around git_object_free()
\n\nIMPORTANT: It is necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.
\n", "group": "blob", "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blob_free-5" - ] + "blame.c": ["ex/v1.9.1/blame.html#git_blob_free-4"], + "general.c": ["ex/v1.9.1/general.html#git_blob_free-2"] } }, "git_blob_id": { "type": "function", - "file": "blob.h", - "line": 68, - "lineto": 68, + "file": "git2/blob.h", + "line": 75, + "lineto": 75, "args": [ { "name": "blob", @@ -1984,9 +2269,9 @@ }, "git_blob_owner": { "type": "function", - "file": "blob.h", - "line": 76, - "lineto": 76, + "file": "git2/blob.h", + "line": 83, + "lineto": 83, "args": [ { "name": "blob", @@ -2006,9 +2291,9 @@ }, "git_blob_rawcontent": { "type": "function", - "file": "blob.h", - "line": 89, - "lineto": 89, + "file": "git2/blob.h", + "line": 96, + "lineto": 96, "args": [ { "name": "blob", @@ -2020,28 +2305,22 @@ "sig": "const git_blob *", "return": { "type": "const void *", - "comment": " the pointer" + "comment": " \n\n `unsigned char *` the pointer, or NULL on error" }, "description": "Get a read-only buffer with the raw content of a blob.
\n", "comments": "A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free'd. The pointer may be invalidated at a later time.
\n", "group": "blob", "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blob_rawcontent-6" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_blob_rawcontent-1" - ], - "general.c": [ - "ex/HEAD/general.html#git_blob_rawcontent-2" - ] + "blame.c": ["ex/v1.9.1/blame.html#git_blob_rawcontent-5"], + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_blob_rawcontent-1"], + "general.c": ["ex/v1.9.1/general.html#git_blob_rawcontent-3"] } }, "git_blob_rawsize": { "type": "function", - "file": "blob.h", - "line": 97, - "lineto": 97, + "file": "git2/blob.h", + "line": 104, + "lineto": 104, "args": [ { "name": "blob", @@ -2051,31 +2330,51 @@ ], "argline": "const git_blob *blob", "sig": "const git_blob *", - "return": { - "type": "git_off_t", - "comment": " size on bytes" - }, + "return": { "type": "git_object_size_t", "comment": " size in bytes" }, "description": "Get the size in bytes of the contents of a blob
\n", "comments": "", "group": "blob", "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_blob_rawsize-7" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_blob_rawsize-2" - ], + "blame.c": ["ex/v1.9.1/blame.html#git_blob_rawsize-6"], + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_blob_rawsize-2"], "general.c": [ - "ex/HEAD/general.html#git_blob_rawsize-3", - "ex/HEAD/general.html#git_blob_rawsize-4" + "ex/v1.9.1/general.html#git_blob_rawsize-4", + "ex/v1.9.1/general.html#git_blob_rawsize-5" ] } }, - "git_blob_filtered_content": { + "git_blob_filter_options_init": { "type": "function", - "file": "blob.h", - "line": 122, - "lineto": 126, + "file": "git2/blob.h", + "line": 201, + "lineto": 203, + "args": [ + { + "name": "opts", + "type": "git_blob_filter_options *", + "comment": "The `git_blob_filter_options` struct to initialize." + }, + { + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass GIT_BLOB_FILTER_OPTIONS_VERSION" + } + ], + "argline": "git_blob_filter_options *opts, unsigned int version", + "sig": "git_blob_filter_options *::unsigned int", + "return": { + "type": "int", + "comment": " Zero on success; -1 on failure." + }, + "description": "Initialize git_blob_filter_options structure
\n", + "comments": "Initializes a git_blob_filter_options with default values. Equivalent to creating an instance with GIT_BLOB_FILTER_OPTIONS_INIT.
Get a buffer with the filtered content of a blob.
\n", - "comments": "This applies filters as if the blob was being checked out to the working directory under the specified filename. This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.
\n\nThe output is written into a git_buf which the caller must free when done (via git_buf_free).
If no filters need to be applied, then the out buffer will just be populated with a pointer to the raw content of the blob. In that case, be careful to not free the blob until done with the buffer or copy it into memory you own.
This applies filters as if the blob was being checked out to the working directory under the specified filename. This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.
\n\nThe output is written into a git_buf which the caller must dispose when done (via git_buf_dispose).
If no filters need to be applied, then the out buffer will just be populated with a pointer to the raw content of the blob. In that case, be careful to not free the blob until done with the buffer or copy it into memory you own.
Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob
\n", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Read a file from the working folder of a repository and write it\n to the object database.
\n", "comments": "", "group": "blob" }, - "git_blob_create_fromdisk": { + "git_blob_create_from_disk": { "type": "function", - "file": "blob.h", - "line": 151, - "lineto": 151, + "file": "git2/blob.h", + "line": 257, + "lineto": 260, "args": [ { "name": "id", @@ -2164,61 +2460,16 @@ ], "argline": "git_oid *id, git_repository *repo, const char *path", "sig": "git_oid *::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Read a file from the filesystem and write its content\n to the Object Database as a loose blob
\n", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Read a file from the filesystem (not necessarily inside the\n working folder of the repository) and write it to the object\n database.
\n", "comments": "", "group": "blob" }, - "git_blob_create_fromchunks": { - "type": "function", - "file": "blob.h", - "line": 187, - "lineto": 192, - "args": [ - { - "name": "id", - "type": "git_oid *", - "comment": "Return the id of the written blob" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where the blob will be written.\n This repository can be bare or not." - }, - { - "name": "hintpath", - "type": "const char *", - "comment": "If not NULL, will be used to select data filters\n to apply onto the content of the blob to be created." - }, - { - "name": "callback", - "type": "git_blob_chunk_cb", - "comment": null - }, - { - "name": "payload", - "type": "void *", - "comment": null - } - ], - "argline": "git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload", - "sig": "git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *", - "return": { - "type": "int", - "comment": " 0 or error code (from either libgit2 or callback function)" - }, - "description": "Write a loose blob to the Object Database from a\n provider of chunks of data.
\n", - "comments": "If the hintpath parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.
The implementation of the callback MUST respect the following rules:
\n\ncontent must be filled by the callback. The maximum number of bytes that the buffer can accept per call is defined by the max_length parameter. Allocation and freeing of the buffer will be taken care of by libgit2.
The callback must return the number of bytes that have been written to the content buffer.
When there is no more data to stream, callback should return 0. This will prevent it from being invoked anymore.
If an error occurs, the callback should return a negative value. This value will be returned to the caller.
Create a stream to write a new blob into the object db
\n", - "comments": "This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use git_blob_create_frombuffer(). If you do not, but know the size of the contents (and don't want/need to perform filtering), use git_odb_open_wstream().
Don't close this stream yourself but pass it to git_blob_create_fromstream_commit() to commit the write to the object db and get the object id.
If the hintpath parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.
Create a stream to write a new blob into the object database.
\n", + "comments": "This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use git_blob_create_from_buffer(). If you do not, but know the size of the contents (and don't want/need to perform filtering), use git_odb_open_wstream().
Don't close this stream yourself but pass it to git_blob_create_from_stream_commit() to commit the write to the object db and get the object id.
If the hintpath parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.
Close the stream and write the blob to the object db
\n", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Close the stream and finalize writing the blob to the object database.
\n", "comments": "The stream will be closed and freed.
\n", "group": "blob" }, - "git_blob_create_frombuffer": { + "git_blob_create_from_buffer": { "type": "function", - "file": "blob.h", - "line": 246, - "lineto": 247, + "file": "git2/blob.h", + "line": 314, + "lineto": 315, "args": [ { "name": "id", @@ -2287,34 +2532,27 @@ { "name": "repo", "type": "git_repository *", - "comment": "repository where to blob will be written" + "comment": "repository where the blob will be written" }, { "name": "buffer", "type": "const void *", "comment": "data to be written into the blob" }, - { - "name": "len", - "type": "size_t", - "comment": "length of the data" - } + { "name": "len", "type": "size_t", "comment": "length of the data" } ], "argline": "git_oid *id, git_repository *repo, const void *buffer, size_t len", "sig": "git_oid *::git_repository *::const void *::size_t", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Write an in-memory buffer to the ODB as a blob
\n", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write an in-memory buffer to the object database as a blob.
\n", "comments": "", "group": "blob" }, "git_blob_is_binary": { "type": "function", - "file": "blob.h", - "line": 260, - "lineto": 260, + "file": "git2/blob.h", + "line": 328, + "lineto": 328, "args": [ { "name": "blob", @@ -2326,17 +2564,40 @@ "sig": "const git_blob *", "return": { "type": "int", - "comment": " 1 if the content of the blob is detected\n as binary; 0 otherwise." + "comment": " \n\n bool 1 if the content of the blob is detected\n as binary; 0 otherwise." }, - "description": "Determine if the blob content is most certainly binary or not.
\n", + "description": "Determine if the blob content is most likely binary or not.
\n", "comments": "The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.
\n", "group": "blob" }, + "git_blob_data_is_binary": { + "type": "function", + "file": "git2/blob.h", + "line": 340, + "lineto": 340, + "args": [ + { + "name": "data", + "type": "const char *", + "comment": "The blob data which content should be analyzed" + }, + { "name": "len", "type": "size_t", "comment": "The length of the data" } + ], + "argline": "const char *data, size_t len", + "sig": "const char *::size_t", + "return": { + "type": "int", + "comment": " 1 if the content of the blob is detected\n as binary; 0 otherwise." + }, + "description": "Determine if the given content is most certainly binary or not;\n this is the same mechanism used by git_blob_is_binary but only\n looking at raw data.
Create an in-memory copy of a blob. The copy must be explicitly\n free'd or it will leak.
\n", "comments": "", "group": "blob" }, "git_branch_create": { "type": "function", - "file": "branch.h", - "line": 50, - "lineto": 55, + "file": "git2/branch.h", + "line": 53, + "lineto": 58, "args": [ { "name": "out", @@ -2373,17 +2631,17 @@ { "name": "repo", "type": "git_repository *", - "comment": null + "comment": "the repository to create the branch in." }, { "name": "branch_name", "type": "const char *", - "comment": "Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name." + "comment": "Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name." }, { "name": "target", "type": "const git_commit *", - "comment": "Commit to which this branch should point. This object\n must belong to the given `repo`." + "comment": "Commit to which this branch should point. This object\n must belong to the given `repo`." }, { "name": "force", @@ -2403,51 +2661,56 @@ }, "git_branch_create_from_annotated": { "type": "function", - "file": "branch.h", - "line": 68, - "lineto": 73, + "file": "git2/branch.h", + "line": 77, + "lineto": 82, "args": [ { "name": "ref_out", "type": "git_reference **", - "comment": null + "comment": "Pointer where to store the underlying reference." }, { - "name": "repository", + "name": "repo", "type": "git_repository *", - "comment": null + "comment": "the repository to create the branch in." }, { "name": "branch_name", "type": "const char *", - "comment": null + "comment": "Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name." }, { - "name": "commit", + "name": "target", "type": "const git_annotated_commit *", - "comment": null + "comment": "Annotated commit to which this branch should point. This\n object must belong to the given `repo`." }, { "name": "force", "type": "int", - "comment": null + "comment": "Overwrite existing branch." } ], - "argline": "git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force", + "argline": "git_reference **ref_out, git_repository *repo, const char *branch_name, const git_annotated_commit *target, int force", "sig": "git_reference **::git_repository *::const char *::const git_annotated_commit *::int", "return": { "type": "int", - "comment": null + "comment": " 0, GIT_EINVALIDSPEC or an error code." }, "description": "Create a new branch pointing at a target commit
\n", - "comments": "This behaves like git_branch_create() but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.
See the documentation for git_branch_create().
This behaves like git_branch_create() but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.
Delete an existing branch reference.
\n", - "comments": "If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.
\n", + "comments": "Note that if the deletion succeeds, the reference object will not be valid anymore, and should be freed immediately by the user using git_reference_free().
Create an iterator which loops over the requested branches.
\n", "comments": "", "group": "branch" }, "git_branch_next": { "type": "function", - "file": "branch.h", - "line": 114, - "lineto": 114, + "file": "git2/branch.h", + "line": 123, + "lineto": 123, "args": [ { "name": "out", @@ -2531,9 +2791,9 @@ }, "git_branch_iterator_free": { "type": "function", - "file": "branch.h", - "line": 121, - "lineto": 121, + "file": "git2/branch.h", + "line": 130, + "lineto": 130, "args": [ { "name": "iter", @@ -2543,24 +2803,21 @@ ], "argline": "git_branch_iterator *iter", "sig": "git_branch_iterator *", - "return": { - "type": "void", - "comment": null - }, + "return": { "type": "void", "comment": null }, "description": "Free a branch iterator
\n", "comments": "", "group": "branch" }, "git_branch_move": { "type": "function", - "file": "branch.h", - "line": 138, - "lineto": 142, + "file": "git2/branch.h", + "line": 153, + "lineto": 157, "args": [ { "name": "out", "type": "git_reference **", - "comment": null + "comment": "New reference object for the updated name." }, { "name": "branch", @@ -2585,14 +2842,14 @@ "comment": " 0 on success, GIT_EINVALIDSPEC or an error code." }, "description": "Move/rename an existing local branch reference.
\n", - "comments": "The new branch name will be checked for validity. See git_tag_create() for rules about valid names.
The new branch name will be checked for validity. See git_tag_create() for rules about valid names.
Note that if the move succeeds, the old reference object will not be valid anymore, and should be freed immediately by the user using git_reference_free().
Lookup a branch by its name in a repository.
\n", - "comments": "The generated reference must be freed by the user.
\n\nThe branch name will be checked for validity. See git_tag_create() for rules about valid names.
The generated reference must be freed by the user. The branch name will be checked for validity.
\n", "group": "branch" }, "git_branch_name": { "type": "function", - "file": "branch.h", - "line": 186, - "lineto": 188, + "file": "git2/branch.h", + "line": 198, + "lineto": 200, "args": [ { "name": "out", "type": "const char **", - "comment": "where the pointer of branch name is stored;\n this is valid as long as the ref is not freed." + "comment": "Pointer to the abbreviated reference name.\n Owned by ref, do not free." }, { "name": "ref", "type": "const git_reference *", - "comment": "the reference ideally pointing to a branch" + "comment": "A reference object, ideally pointing to a branch" } ], "argline": "const char **out, const git_reference *ref", "sig": "const char **::const git_reference *", "return": { "type": "int", - "comment": " 0 on success; otherwise an error code (e.g., if the\n ref is no local or remote branch)." + "comment": " 0 on success; GIT_EINVALID if the reference isn't either a local or\n remote branch, otherwise an error code." }, - "description": "Return the name of the given local or remote branch.
\n", - "comments": "The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.
\n", - "group": "branch" + "description": "Get the branch name
\n", + "comments": "Given a reference object, this will check that it really is a branch (ie. it lives under "refs/heads/" or "refs/remotes/"), and return the branch part of it.
\n", + "group": "branch", + "examples": { "merge.c": ["ex/v1.9.1/merge.html#git_branch_name-4"] } }, "git_branch_upstream": { "type": "function", - "file": "branch.h", - "line": 202, - "lineto": 204, + "file": "git2/branch.h", + "line": 216, + "lineto": 218, "args": [ { "name": "out", "type": "git_reference **", - "comment": "Pointer where to store the retrieved\n reference." + "comment": "Pointer where to store the retrieved reference." }, { "name": "branch", @@ -2673,17 +2931,17 @@ "sig": "git_reference **::const git_reference *", "return": { "type": "int", - "comment": " 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code." + "comment": " 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code." }, - "description": "Return the reference supporting the remote tracking branch,\n given a local branch reference.
\n", - "comments": "", + "description": "Get the upstream of a branch
\n", + "comments": "Given a reference, this will return a new reference object corresponding to its remote tracking branch. The reference must be a local branch.
\n", "group": "branch" }, "git_branch_set_upstream": { "type": "function", - "file": "branch.h", - "line": 216, - "lineto": 216, + "file": "git2/branch.h", + "line": 235, + "lineto": 237, "args": [ { "name": "branch", @@ -2691,194 +2949,252 @@ "comment": "the branch to configure" }, { - "name": "upstream_name", + "name": "branch_name", "type": "const char *", - "comment": "remote-tracking or local branch to set as\n upstream. Pass NULL to unset." + "comment": "remote-tracking or local branch to set as upstream." } ], - "argline": "git_reference *branch, const char *upstream_name", + "argline": "git_reference *branch, const char *branch_name", "sig": "git_reference *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " \n\n git_error_t 0 on success; GIT_ENOTFOUND if there's no branch named `branch_name`\n or an error code" }, - "description": "Set the upstream configuration for a given local branch
\n", - "comments": "", + "description": "Set a branch's upstream branch
\n", + "comments": "This will update the configuration to set the branch named branch_name as the upstream of branch. Pass a NULL name to unset the upstream information.
Get the upstream name of a branch
\n", + "comments": "Given a local branch, this will return its remote-tracking branch information, as a full reference name, ie. "feature/nice" would become "refs/remote/origin/feature/nice", depending on that branch's configuration.
\n", "group": "branch" }, "git_branch_is_head": { "type": "function", - "file": "branch.h", - "line": 245, - "lineto": 246, + "file": "git2/branch.h", + "line": 266, + "lineto": 267, "args": [ { "name": "branch", "type": "const git_reference *", - "comment": "Current underlying reference of the branch." + "comment": "A reference to a local branch." } ], "argline": "const git_reference *branch", "sig": "const git_reference *", "return": { "type": "int", - "comment": " 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise." + "comment": " 1 if HEAD points at the branch, 0 if it isn't, or a negative value\n \t\t as an error code." }, - "description": "Determine if the current local branch is pointed at by HEAD.
\n", + "description": "Determine if HEAD points to the given branch
\n", "comments": "", "group": "branch" }, - "git_buf_free": { + "git_branch_is_checked_out": { "type": "function", - "file": "buffer.h", - "line": 72, - "lineto": 72, + "file": "git2/branch.h", + "line": 279, + "lineto": 280, "args": [ { - "name": "buffer", - "type": "git_buf *", - "comment": "The buffer to deallocate" + "name": "branch", + "type": "const git_reference *", + "comment": "A reference to a local branch." } ], - "argline": "git_buf *buffer", - "sig": "git_buf *", + "argline": "const git_reference *branch", + "sig": "const git_reference *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 1 if branch is checked out, 0 if it isn't, an error code otherwise." }, - "description": "Free the memory referred to by the git_buf.
\n", - "comments": "Note that this does not free the git_buf itself, just the memory pointed to by buffer->ptr. This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.
Determine if any HEAD points to the current branch
\n", + "comments": "This will iterate over all known linked repositories (usually in the form of worktrees) and report whether any HEAD is pointing at the current branch.
\n", + "group": "branch" }, - "git_buf_grow": { + "git_branch_remote_name": { "type": "function", - "file": "buffer.h", - "line": 95, - "lineto": 95, + "file": "git2/branch.h", + "line": 298, + "lineto": 301, "args": [ { - "name": "buffer", + "name": "out", "type": "git_buf *", - "comment": "The buffer to be resized; may or may not be allocated yet" + "comment": "The buffer into which the name will be written." }, { - "name": "target_size", - "type": "size_t", - "comment": "The desired available size" + "name": "repo", + "type": "git_repository *", + "comment": "The repository where the branch lives." + }, + { + "name": "refname", + "type": "const char *", + "comment": "complete name of the remote tracking branch." } ], - "argline": "git_buf *buffer, size_t target_size", - "sig": "git_buf *::size_t", + "argline": "git_buf *out, git_repository *repo, const char *refname", + "sig": "git_buf *::git_repository *::const char *", "return": { "type": "int", - "comment": " 0 on success, -1 on allocation failure" + "comment": " 0 on success, GIT_ENOTFOUND when no matching remote was found,\n GIT_EAMBIGUOUS when the branch maps to several remotes,\n otherwise an error code." }, - "description": "Resize the buffer allocation to make more space.
\n", - "comments": "This will attempt to grow the buffer to accommodate the target size.
\n\nIf the buffer refers to memory that was not allocated by libgit2 (i.e. the asize field is zero), then ptr will be replaced with a newly allocated block of data. Be careful so that memory allocated by the caller is not lost. As a special variant, if you pass target_size as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size size and copy the external data into it.
Currently, this will never shrink a buffer, only expand it.
\n\nIf the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.
\n", - "group": "buf" + "description": "Find the remote name of a remote-tracking branch
\n", + "comments": "This will return the name of the remote whose fetch refspec is matching the given branch. E.g. given a branch "refs/remotes/test/master", it will extract the "test" part. If refspecs from multiple remotes match, the function will return GIT_EAMBIGUOUS.
\n", + "group": "branch" }, - "git_buf_set": { + "git_branch_upstream_remote": { "type": "function", - "file": "buffer.h", - "line": 105, - "lineto": 106, + "file": "git2/branch.h", + "line": 314, + "lineto": 314, "args": [ { - "name": "buffer", + "name": "buf", "type": "git_buf *", - "comment": "The buffer to set" + "comment": "the buffer into which to write the name" }, { - "name": "data", - "type": "const void *", - "comment": "The data to copy into the buffer" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to look" }, { - "name": "datalen", - "type": "size_t", - "comment": "The length of the data to copy into the buffer" + "name": "refname", + "type": "const char *", + "comment": "the full name of the branch" } ], - "argline": "git_buf *buffer, const void *data, size_t datalen", - "sig": "git_buf *::const void *::size_t", - "return": { - "type": "int", - "comment": " 0 on success, -1 on allocation failure" - }, - "description": "Set buffer to a copy of some raw data.
\n", - "comments": "", - "group": "buf" + "argline": "git_buf *buf, git_repository *repo, const char *refname", + "sig": "git_buf *::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Retrieve the upstream remote of a local branch
\n", + "comments": "This will return the currently configured "branch.*.remote" for a given branch. This branch must be local.
\n", + "group": "branch" }, - "git_buf_is_binary": { + "git_branch_upstream_merge": { "type": "function", - "file": "buffer.h", - "line": 114, - "lineto": 114, + "file": "git2/branch.h", + "line": 327, + "lineto": 327, "args": [ { "name": "buf", - "type": "const git_buf *", - "comment": "Buffer to check" + "type": "git_buf *", + "comment": "the buffer into which to write the name" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to look" + }, + { + "name": "refname", + "type": "const char *", + "comment": "the full name of the branch" } ], - "argline": "const git_buf *buf", - "sig": "const git_buf *", - "return": { - "type": "int", - "comment": " 1 if buffer looks like non-text data" - }, - "description": "Check quickly if buffer looks like it contains binary data
\n", - "comments": "", - "group": "buf" + "argline": "git_buf *buf, git_repository *repo, const char *refname", + "sig": "git_buf *::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Retrieve the upstream merge of a local branch
\n", + "comments": "This will return the currently configured "branch.*.merge" for a given branch. This branch must be local.
\n", + "group": "branch" }, - "git_buf_contains_nul": { + "git_branch_name_is_valid": { "type": "function", - "file": "buffer.h", - "line": 122, - "lineto": 122, + "file": "git2/branch.h", + "line": 339, + "lineto": 339, "args": [ { - "name": "buf", - "type": "const git_buf *", - "comment": "Buffer to check" + "name": "valid", + "type": "int *", + "comment": "output pointer to set with validity of given branch name" + }, + { + "name": "name", + "type": "const char *", + "comment": "a branch name to test" } ], - "argline": "const git_buf *buf", - "sig": "const git_buf *", - "return": { - "type": "int", - "comment": " 1 if buffer contains a NUL byte" - }, - "description": "Check quickly if buffer contains a NUL byte
\n", + "argline": "int *valid, const char *name", + "sig": "int *::const char *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Determine whether a branch name is valid, meaning that (when prefixed\n with refs/heads/) that it is a valid reference name, and that any\n additional branch name restrictions are imposed (eg, it cannot start\n with a -).
Free the memory referred to by the git_buf.
\n", + "comments": "Note that this does not free the git_buf itself, just the memory pointed to by buffer->ptr.
Initializes a git_checkout_options with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.
Initialize git_checkout_options structure
\n", + "comments": "Initializes a git_checkout_options with default values. Equivalent to creating an instance with GIT_CHECKOUT_OPTIONS_INIT.
Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.
\n", - "comments": "", + "comments": "Note that this is not the correct mechanism used to switch branches; do not change your HEAD and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty. Instead, checkout the target of the branch and then update HEAD using git_repository_set_head to point to the branch you checked out.
Updates files in the working tree to match the content of the index.
\n", "comments": "", @@ -2952,9 +3268,9 @@ }, "git_checkout_tree": { "type": "function", - "file": "checkout.h", - "line": 351, - "lineto": 354, + "file": "git2/checkout.h", + "line": 460, + "lineto": 463, "args": [ { "name": "repo", @@ -2976,27 +3292,31 @@ "sig": "git_repository *::const git_object *::const git_checkout_options *", "return": { "type": "int", - "comment": " 0 on success, non-zero return value from `notify_cb`, or error\n code \n<\n 0 (use giterr_last for error details)" + "comment": " 0 on success, non-zero return value from `notify_cb`, or error\n code \n<\n 0 (use git_error_last for error details)" }, "description": "Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.
\n", "comments": "", - "group": "checkout" + "group": "checkout", + "examples": { + "checkout.c": ["ex/v1.9.1/checkout.html#git_checkout_tree-8"], + "merge.c": ["ex/v1.9.1/merge.html#git_checkout_tree-5"] + } }, - "git_cherrypick_init_options": { + "git_cherrypick_options_init": { "type": "function", - "file": "cherrypick.h", - "line": 47, - "lineto": 49, + "file": "git2/cherrypick.h", + "line": 57, + "lineto": 59, "args": [ { "name": "opts", "type": "git_cherrypick_options *", - "comment": "the `git_cherrypick_options` struct to initialize" + "comment": "The `git_cherrypick_options` struct to initialize." }, { "name": "version", "type": "unsigned int", - "comment": "Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`" + "comment": "The struct version; pass `GIT_CHERRYPICK_OPTIONS_VERSION`." } ], "argline": "git_cherrypick_options *opts, unsigned int version", @@ -3005,15 +3325,15 @@ "type": "int", "comment": " Zero on success; -1 on failure." }, - "description": "Initializes a git_cherrypick_options with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.
Initialize git_cherrypick_options structure
\n", + "comments": "Initializes a git_cherrypick_options with default values. Equivalent to creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.
Initializes a git_clone_options with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.
Initialize git_clone_options structure
\n", + "comments": "Initializes a git_clone_options with default values. Equivalent to creating an instance with GIT_CLONE_OPTIONS_INIT.
Clone a remote repository.
\n", - "comments": "By default this creates its repository and initial remote to match git's defaults. You can use the options in the callback to customize how these are created.
\n", - "group": "clone", - "examples": { - "network/clone.c": [ - "ex/HEAD/network/clone.html#git_clone-1" - ] - } + "comments": "By default this creates its repository and initial remote to match git's defaults. You can use the options in the callback to customize how these are created.
\n\nNote that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Lookup a commit object from a repository.
\n", "comments": "The returned object should be released with git_commit_free when no longer needed.
Lookup a commit object from a repository, given a prefix of its\n identifier (short id).
\n", "comments": "The returned object should be released with git_commit_free when no longer needed.
Close an open commit
\n", "comments": "This is a wrapper around git_object_free()
\n\nIMPORTANT: It is necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.
\n", "group": "commit", "examples": { + "checkout.c": ["ex/v1.9.1/checkout.html#git_commit_free-10"], "general.c": [ - "ex/HEAD/general.html#git_commit_free-8", - "ex/HEAD/general.html#git_commit_free-9", - "ex/HEAD/general.html#git_commit_free-10", - "ex/HEAD/general.html#git_commit_free-11" + "ex/v1.9.1/general.html#git_commit_free-9", + "ex/v1.9.1/general.html#git_commit_free-10", + "ex/v1.9.1/general.html#git_commit_free-11", + "ex/v1.9.1/general.html#git_commit_free-12", + "ex/v1.9.1/general.html#git_commit_free-13" ], "log.c": [ - "ex/HEAD/log.html#git_commit_free-2", - "ex/HEAD/log.html#git_commit_free-3", - "ex/HEAD/log.html#git_commit_free-4", - "ex/HEAD/log.html#git_commit_free-5" + "ex/v1.9.1/log.html#git_commit_free-2", + "ex/v1.9.1/log.html#git_commit_free-3", + "ex/v1.9.1/log.html#git_commit_free-4", + "ex/v1.9.1/log.html#git_commit_free-5" ] } }, "git_commit_id": { "type": "function", - "file": "commit.h", - "line": 78, - "lineto": 78, + "file": "git2/commit.h", + "line": 82, + "lineto": 82, "args": [ { "name": "commit", @@ -3294,19 +3602,15 @@ "comments": "", "group": "commit", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_commit_id-12" - ], - "log.c": [ - "ex/HEAD/log.html#git_commit_id-6" - ] + "general.c": ["ex/v1.9.1/general.html#git_commit_id-14"], + "log.c": ["ex/v1.9.1/log.html#git_commit_id-6"] } }, "git_commit_owner": { "type": "function", - "file": "commit.h", - "line": 86, - "lineto": 86, + "file": "git2/commit.h", + "line": 90, + "lineto": 90, "args": [ { "name": "commit", @@ -3325,16 +3629,16 @@ "group": "commit", "examples": { "log.c": [ - "ex/HEAD/log.html#git_commit_owner-7", - "ex/HEAD/log.html#git_commit_owner-8" + "ex/v1.9.1/log.html#git_commit_owner-7", + "ex/v1.9.1/log.html#git_commit_owner-8" ] } }, "git_commit_message_encoding": { "type": "function", - "file": "commit.h", - "line": 98, - "lineto": 98, + "file": "git2/commit.h", + "line": 102, + "lineto": 102, "args": [ { "name": "commit", @@ -3344,19 +3648,16 @@ ], "argline": "const git_commit *commit", "sig": "const git_commit *", - "return": { - "type": "const char *", - "comment": " NULL, or the encoding" - }, + "return": { "type": "const char *", "comment": " NULL, or the encoding" }, "description": "Get the encoding for the message of a commit,\n as a string representing a standard encoding name.
\n", "comments": "The encoding may be NULL if the encoding header in the commit is missing; in that case UTF-8 is assumed.
Get the commit time (i.e. committer time) of a commit.
\n", "comments": "", "group": "commit", "examples": { "general.c": [ - "ex/HEAD/general.html#git_commit_time-16", - "ex/HEAD/general.html#git_commit_time-17" + "ex/v1.9.1/general.html#git_commit_time-18", + "ex/v1.9.1/general.html#git_commit_time-19" ] } }, "git_commit_time_offset": { "type": "function", - "file": "commit.h", - "line": 157, - "lineto": 157, + "file": "git2/commit.h", + "line": 161, + "lineto": 161, "args": [ { "name": "commit", @@ -3510,9 +3807,9 @@ }, "git_commit_committer": { "type": "function", - "file": "commit.h", - "line": 165, - "lineto": 165, + "file": "git2/commit.h", + "line": 169, + "lineto": 169, "args": [ { "name": "commit", @@ -3530,22 +3827,16 @@ "comments": "", "group": "commit", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_commit_committer-5" - ], - "general.c": [ - "ex/HEAD/general.html#git_commit_committer-18" - ], - "log.c": [ - "ex/HEAD/log.html#git_commit_committer-11" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_commit_committer-5"], + "general.c": ["ex/v1.9.1/general.html#git_commit_committer-20"], + "log.c": ["ex/v1.9.1/log.html#git_commit_committer-12"] } }, "git_commit_author": { "type": "function", - "file": "commit.h", - "line": 173, - "lineto": 173, + "file": "git2/commit.h", + "line": 177, + "lineto": 177, "args": [ { "name": "commit", @@ -3563,24 +3854,80 @@ "comments": "", "group": "commit", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_commit_author-6" - ], + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_commit_author-6"], "general.c": [ - "ex/HEAD/general.html#git_commit_author-19", - "ex/HEAD/general.html#git_commit_author-20" + "ex/v1.9.1/general.html#git_commit_author-21", + "ex/v1.9.1/general.html#git_commit_author-22" ], "log.c": [ - "ex/HEAD/log.html#git_commit_author-12", - "ex/HEAD/log.html#git_commit_author-13" + "ex/v1.9.1/log.html#git_commit_author-13", + "ex/v1.9.1/log.html#git_commit_author-14" ] } }, + "git_commit_committer_with_mailmap": { + "type": "function", + "file": "git2/commit.h", + "line": 190, + "lineto": 191, + "args": [ + { + "name": "out", + "type": "git_signature **", + "comment": "a pointer to store the resolved signature." + }, + { + "name": "commit", + "type": "const git_commit *", + "comment": "a previously loaded commit." + }, + { + "name": "mailmap", + "type": "const git_mailmap *", + "comment": "the mailmap to resolve with. (may be NULL)" + } + ], + "argline": "git_signature **out, const git_commit *commit, const git_mailmap *mailmap", + "sig": "git_signature **::const git_commit *::const git_mailmap *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Get the committer of a commit, using the mailmap to map names and email\n addresses to canonical real names and email addresses.
\n", + "comments": "Call git_signature_free to free the signature.
Get the author of a commit, using the mailmap to map names and email\n addresses to canonical real names and email addresses.
\n", + "comments": "Call git_signature_free to free the signature.
Get the tree pointed to by a commit.
\n", "comments": "", "group": "commit", "examples": { "log.c": [ - "ex/HEAD/log.html#git_commit_tree-14", - "ex/HEAD/log.html#git_commit_tree-15", - "ex/HEAD/log.html#git_commit_tree-16", - "ex/HEAD/log.html#git_commit_tree-17", - "ex/HEAD/log.html#git_commit_tree-18" + "ex/v1.9.1/log.html#git_commit_tree-15", + "ex/v1.9.1/log.html#git_commit_tree-16", + "ex/v1.9.1/log.html#git_commit_tree-17", + "ex/v1.9.1/log.html#git_commit_tree-18", + "ex/v1.9.1/log.html#git_commit_tree-19" ] } }, "git_commit_tree_id": { "type": "function", - "file": "commit.h", - "line": 200, - "lineto": 200, + "file": "git2/commit.h", + "line": 232, + "lineto": 232, "args": [ { "name": "commit", @@ -3656,16 +4000,14 @@ "comments": "", "group": "commit", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_commit_tree_id-7" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_commit_tree_id-7"] } }, "git_commit_parentcount": { "type": "function", - "file": "commit.h", - "line": 208, - "lineto": 208, + "file": "git2/commit.h", + "line": 240, + "lineto": 240, "args": [ { "name": "commit", @@ -3683,23 +4025,19 @@ "comments": "", "group": "commit", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_commit_parentcount-8" - ], - "general.c": [ - "ex/HEAD/general.html#git_commit_parentcount-21" - ], + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_commit_parentcount-8"], + "general.c": ["ex/v1.9.1/general.html#git_commit_parentcount-23"], "log.c": [ - "ex/HEAD/log.html#git_commit_parentcount-19", - "ex/HEAD/log.html#git_commit_parentcount-20" + "ex/v1.9.1/log.html#git_commit_parentcount-20", + "ex/v1.9.1/log.html#git_commit_parentcount-21" ] } }, "git_commit_parent": { "type": "function", - "file": "commit.h", - "line": 218, - "lineto": 221, + "file": "git2/commit.h", + "line": 250, + "lineto": 253, "args": [ { "name": "out", @@ -3719,28 +4057,23 @@ ], "argline": "git_commit **out, const git_commit *commit, unsigned int n", "sig": "git_commit **::const git_commit *::unsigned int", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the specified parent of the commit.
\n", "comments": "", "group": "commit", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_commit_parent-22" - ], + "general.c": ["ex/v1.9.1/general.html#git_commit_parent-24"], "log.c": [ - "ex/HEAD/log.html#git_commit_parent-21", - "ex/HEAD/log.html#git_commit_parent-22" + "ex/v1.9.1/log.html#git_commit_parent-22", + "ex/v1.9.1/log.html#git_commit_parent-23" ] } }, "git_commit_parent_id": { "type": "function", - "file": "commit.h", - "line": 232, - "lineto": 234, + "file": "git2/commit.h", + "line": 264, + "lineto": 266, "args": [ { "name": "commit", @@ -3763,19 +4096,15 @@ "comments": "", "group": "commit", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_commit_parent_id-9" - ], - "log.c": [ - "ex/HEAD/log.html#git_commit_parent_id-23" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_commit_parent_id-9"], + "log.c": ["ex/v1.9.1/log.html#git_commit_parent_id-24"] } }, "git_commit_nth_gen_ancestor": { "type": "function", - "file": "commit.h", - "line": 250, - "lineto": 253, + "file": "git2/commit.h", + "line": 282, + "lineto": 285, "args": [ { "name": "ancestor", @@ -3805,14 +4134,14 @@ }, "git_commit_header_field": { "type": "function", - "file": "commit.h", - "line": 264, - "lineto": 264, + "file": "git2/commit.h", + "line": 297, + "lineto": 297, "args": [ { "name": "out", "type": "git_buf *", - "comment": "the buffer to fill" + "comment": "the buffer to fill; existing content will be\n overwritten" }, { "name": "commit", @@ -3837,19 +4166,19 @@ }, "git_commit_extract_signature": { "type": "function", - "file": "commit.h", - "line": 282, - "lineto": 282, + "file": "git2/commit.h", + "line": 317, + "lineto": 317, "args": [ { "name": "signature", "type": "git_buf *", - "comment": "the signature block" + "comment": "the signature block; existing content will be\n overwritten" }, { "name": "signed_data", "type": "git_buf *", - "comment": "signed data; this is the commit contents minus the signature block" + "comment": "signed data; this is the commit contents minus the signature block;\n existing content will be overwritten" }, { "name": "repo", @@ -3874,14 +4203,14 @@ "comment": " 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature." }, "description": "Extract the signature from a commit
\n", - "comments": "If the id is not for a commit, the error class will be GITERR_INVALID. If the commit does not have a signature, the error class will be GITERR_OBJECT.
If the id is not for a commit, the error class will be GIT_ERROR_INVALID. If the commit does not have a signature, the error class will be GIT_ERROR_OBJECT.
Create new commit in the repository from a list of git_object pointers
The message will not be cleaned up automatically. You can do that with the git_message_prettify() function.
Create new commit in the repository using a variable argument list.
\n", "comments": "The message will not be cleaned up automatically. You can do that with the git_message_prettify() function.
The parents for the commit are specified as a variable list of pointers to const git_commit *. Note that this is a convenience method which may not be safe to export for certain languages or compilers
All other parameters remain the same as git_commit_create().
Commits the staged changes in the repository; this is a near analog to\n git commit -m message.
By default, empty commits are not allowed.
\n", + "group": "commit" + }, "git_commit_amend": { "type": "function", - "file": "commit.h", - "line": 387, - "lineto": 395, + "file": "git2/commit.h", + "line": 528, + "lineto": 536, "args": [ { "name": "id", "type": "git_oid *", - "comment": null + "comment": "Pointer in which to store the OID of the newly created commit" }, { "name": "commit_to_amend", "type": "const git_commit *", - "comment": null + "comment": "The commit to amend" }, { "name": "update_ref", "type": "const char *", - "comment": null + "comment": "If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch." }, { "name": "author", "type": "const git_signature *", - "comment": null + "comment": "Signature with author and author time of commit" }, { "name": "committer", "type": "const git_signature *", - "comment": null + "comment": "Signature with committer and * commit time of commit" }, { "name": "message_encoding", "type": "const char *", - "comment": null + "comment": "The encoding for the message in the\n commit, represented with a standard encoding name.\n E.g. \"UTF-8\". If NULL, no encoding header is written and\n UTF-8 is assumed." }, { "name": "message", "type": "const char *", - "comment": null + "comment": "Full message for this commit" }, { "name": "tree", "type": "const git_tree *", - "comment": null + "comment": "An instance of a `git_tree` object that will\n be used as the tree for the commit. This tree object must\n also be owned by the given `repo`." } ], "argline": "git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree", "sig": "git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *", "return": { "type": "int", - "comment": null + "comment": " 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it" }, "description": "Amend an existing commit by replacing only non-NULL values.
\n", "comments": "This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated. The new commit has the same parents as the old commit.
\n\nThe update_ref value works as in the regular git_commit_create(), updating the ref to point to the newly rewritten commit. If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.
Unlike git_commit_create(), the author, committer, message, message_encoding, and tree parameters can be NULL in which case this will use the values from the original commit_to_amend.
All parameters have the same meanings as in git_commit_create().
Create a commit and write it into a buffer
\n", "comments": "Create a commit as with git_commit_create() but instead of writing it to the objectdb, write the contents of the object into a buffer.
Create a commit object from the given buffer and signature
\n", "comments": "Given the unsigned commit object's contents, its signature and the header field in which to store the signature, attach the signature to the commit and write it into the given repository.
\n", "group": "commit" }, "git_commit_dup": { "type": "function", - "file": "commit.h", - "line": 471, - "lineto": 471, + "file": "git2/commit.h", + "line": 615, + "lineto": 615, "args": [ { "name": "out", @@ -4194,19 +4552,35 @@ ], "argline": "git_commit **out, git_commit *source", "sig": "git_commit **::git_commit *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0" }, "description": "Create an in-memory copy of a commit. The copy must be explicitly\n free'd or it will leak.
\n", "comments": "", "group": "commit" }, + "git_commitarray_dispose": { + "type": "function", + "file": "git2/commit.h", + "line": 670, + "lineto": 670, + "args": [ + { + "name": "array", + "type": "git_commitarray *", + "comment": "The git_commitarray that contains commits to free" + } + ], + "argline": "git_commitarray *array", + "sig": "git_commitarray *", + "return": { "type": "void", "comment": null }, + "description": "Free the commits contained in a commit array. This method should\n be called on git_commitarray objects that were provided by the\n library. Not doing so will result in a memory leak.
This does not free the git_commitarray itself, since the library will never allocate that object directly itself.
Return the version of the libgit2 library\n being currently used.
\n", "comments": "", "group": "libgit2" }, + "git_libgit2_prerelease": { + "type": "function", + "file": "git2/common.h", + "line": 130, + "lineto": 130, + "args": [], + "argline": "", + "sig": "", + "return": { + "type": "const char *", + "comment": " the name of the prerelease state or NULL" + }, + "description": "Return the prerelease state of the libgit2 library currently being\n used. For nightly builds during active development, this will be\n "alpha". Releases may have a "beta" or release candidate ("rc1",\n "rc2", etc) prerelease. For a final release, this function returns\n NULL.
\n", + "comments": "", + "group": "libgit2" + }, "git_libgit2_features": { "type": "function", - "file": "common.h", - "line": 136, - "lineto": 136, + "file": "git2/common.h", + "line": 184, + "lineto": 184, "args": [], "argline": "", "sig": "", @@ -4247,21 +4637,37 @@ "comment": " A combination of GIT_FEATURE_* values." }, "description": "Query compile time options for libgit2.
\n", - "comments": "GIT_FEATURE_THREADS Libgit2 was compiled with thread support. Note that thread support is still to be seen as a 'work in progress' - basic object lookups are believed to be threadsafe, but other operations may not be.
GIT_FEATURE_HTTPS Libgit2 supports the https:// protocol. This requires the openssl library to be found when compiling libgit2.
GIT_FEATURE_SSH Libgit2 supports the SSH protocol for network operations. This requires the libssh2 library to be found when compiling libgit2
Query the backend details for the compile-time feature in libgit2.
\n", + "comments": "This will return the "backend" for the feature, which is useful for things like HTTPS or SSH support, that can have multiple backends that could be compiled in.
\n\nFor example, when libgit2 is compiled with dynamic OpenSSL support, the feature backend will be openssl-dynamic. The feature backend names reflect the compilation options specified to the build system (though in all lower case). The backend may be "builtin" for features that are provided by libgit2 itself.
If the feature is not supported by the library, this API returns NULL.
Set or query a library global option
\n", - "comments": "Available options:
\n\n* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n > Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n > Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n > Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n >Set the maximum amount of memory that can be mapped at any time by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n > Get the search path for a given level of config data. "level" must > be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, > `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`. > The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n > Set the search path for a level of config data. The search path > applied to shared attributes and ignore files, too. > > - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR. > Pass NULL to reset to the default (generally based on environment > variables). Use magic path `$PATH` to include the old value > of the path (if you want to prepend or append, for instance). > > - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`, > `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or > `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n > Set the maximum data size for the given type of object to be > considered eligible for caching in memory. Setting to value to > zero means that that type of object will not be cached. > Defaults to 0 for GIT_OBJ_BLOB (i.e. won't cache blobs) and 4k > for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n > Set the maximum total data size that will be cached in memory > across all repositories before libgit2 starts evicting objects > from the cache. This is a soft limit, in that the library might > briefly exceed it, but will start aggressively evicting objects > from cache when that happens. The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n > Enable or disable caching completely. > > Because caches are repository-specific, disabling the cache > cannot immediately clear all cached objects, but each cache will > be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n > Get the current bytes in cache and the maximum that would be > allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n > Get the default template path. > The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n > Set the default template path. > > - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n > Set the SSL certificate-authority locations. > > - `file` is the location of a file containing several > certificates concatenated together. > - `path` is the location of a directory holding several > certificates, one per file. > > Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n > Set the value of the User-Agent header. This value will be > appended to "git/1.0", for compatibility with other git clients. > > - `user_agent` is the value that will be delivered as the > User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n > Enable strict input validation when creating new objects > to ensure that all inputs to the new objects are valid. For > example, when this is enabled, the parent(s) and tree inputs > will be validated when creating a new commit. This defaults > to disabled. * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n > Set the SSL ciphers use for HTTPS connections. > > - `ciphers` is the list of ciphers that are eanbled.\n\n",
+ "comments": "Available options:
\n\n* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n > Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n > Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n > Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n > Set the maximum amount of memory that can be mapped at any time > by the library\n\n* opts(GIT_OPT_GET_MWINDOW_FILE_LIMIT, size_t *):\n\n > Get the maximum number of files that will be mapped at any time by the > library\n\n* opts(GIT_OPT_SET_MWINDOW_FILE_LIMIT, size_t):\n\n > Set the maximum number of files that can be mapped at any time > by the library. The default (0) is unlimited.\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n > Get the search path for a given level of config data. "level" must > be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, > `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`. > The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n > Set the search path for a level of config data. The search path > applied to shared attributes and ignore files, too. > > - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR. > Pass NULL to reset to the default (generally based on environment > variables). Use magic path `$PATH` to include the old value > of the path (if you want to prepend or append, for instance). > > - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`, > `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or > `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_object_t type, size_t size)\n\n > Set the maximum data size for the given type of object to be > considered eligible for caching in memory. Setting to value to > zero means that that type of object will not be cached. > Defaults to 0 for GIT_OBJECT_BLOB (i.e. won't cache blobs) and 4k > for GIT_OBJECT_COMMIT, GIT_OBJECT_TREE, and GIT_OBJECT_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n > Set the maximum total data size that will be cached in memory > across all repositories before libgit2 starts evicting objects > from the cache. This is a soft limit, in that the library might > briefly exceed it, but will start aggressively evicting objects > from cache when that happens. The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n > Enable or disable caching completely. > > Because caches are repository-specific, disabling the cache > cannot immediately clear all cached objects, but each cache will > be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n > Get the current bytes in cache and the maximum that would be > allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n > Get the default template path. > The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n > Set the default template path. > > - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n > Set the SSL certificate-authority locations. > > - `file` is the location of a file containing several > certificates concatenated together. > - `path` is the location of a directory holding several > certificates, one per file. > > Calling `GIT_OPT_ADD_SSL_X509_CERT` may override the > data in `path`. > > Either parameter may be `NULL`, but not both.\n\n\nopts(GIT_OPT_ADD_SSL_X509_CERT, const X509 *cert)
\n\n> Add a raw X509 certificate into the SSL certs store. > This certificate is only used by libgit2 invocations > during the application lifetime and is not persisted > to disk. This certificate cannot be removed from the > application once is has been added. > > - `cert` is the raw X509 cert will be added to cert store.\n\n\nopts(GIT_OPT_SET_USER_AGENT, const char *user_agent)
\n\n\nSet the value of the comment section of the User-Agent header. > This can be information about your product and its version. > By default this is "libgit2" followed by the libgit2 version. > > This value will be appended to User-Agent product, which > is typically set to "git/2.0". > > Set to the empty string ("") to not send any information in the > comment section, or set to NULL to restore the default.
\n
opts(GIT_OPT_GET_USER_AGENT, git_buf *out)
\n\n\nGet the value of the User-Agent header. > The User-Agent is written to the
\noutbuffer.
opts(GIT_OPT_SET_USER_AGENT_PRODUCT, const char *user_agent_product)
\n\n\nSet the value of the product portion of the User-Agent header. > This defaults to "git/2.0", for compatibility with other git > clients. It is recommended to keep this as git/
\nfor > compatibility with servers that do user-agent detection. > > Set to the empty string ("") to not send any user-agent string, > or set to NULL to restore the default.
opts(GIT_OPT_GET_USER_AGENT_PRODUCT, git_buf *out)
\n\n\nGet the value of the User-Agent product header. > The User-Agent product is written to the
\noutbuffer.
opts(GIT_OPT_SET_WINDOWS_SHAREMODE, unsigned long value)
\n\n\nSet the share mode used when opening files on Windows. > For more information, see the documentation for CreateFile. > The default is: FILE_SHARE_READ | FILE_SHARE_WRITE. This is > ignored and unused on non-Windows platforms.
\n
opts(GIT_OPT_GET_WINDOWS_SHAREMODE, unsigned long *value)
\n\n\nGet the share mode used when opening files on Windows.
\n
opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)
\n\n\nEnable strict input validation when creating new objects > to ensure that all inputs to the new objects are valid. For > example, when this is enabled, the parent(s) and tree inputs > will be validated when creating a new commit. This defaults > to enabled.
\n
opts(GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION, int enabled)
\n\n\nValidate the target of a symbolic ref when creating it. For > example,
\nfoobaris not a valid ref, thereforefoobaris > not a valid target for a symbolic ref by default, whereas >refs/heads/foobaris. Disabling this bypasses validation > so that an arbitrary strings such asfoobarcan be used > for a symbolic ref target. This defaults to enabled.
opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)
\n\n\nSet the SSL ciphers use for HTTPS connections. > > -
\nciphersis the list of ciphers that are eanbled.
opts(GIT_OPT_ENABLE_OFS_DELTA, int enabled)
\n\n\nEnable or disable the use of "offset deltas" when creating packfiles, > and the negotiation of them when talking to a remote server. > Offset deltas store a delta base location as an offset into the > packfile from the current location, which provides a shorter encoding > and thus smaller resultant packfiles. > Packfiles containing offset deltas can still be read. > This defaults to enabled.
\n
opts(GIT_OPT_ENABLE_FSYNC_GITDIR, int enabled)
\n\n\nEnable synchronized writes of files in the gitdir using
\nfsync> (or the platform equivalent) to ensure that new object data > is written to permanent storage, not simply cached. This > defaults to disabled.
opts(GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION, int enabled)
\n\n> Enable strict verification of object hashsums when reading > objects from disk. This may impact performance due to an > additional checksum calculation on each object. This defaults > to enabled.\n\n\nopts(GIT_OPT_SET_ALLOCATOR, git_allocator *allocator)
\n\n> Set the memory allocator to a different memory allocator. This > allocator will then be used to make all memory allocations for > libgit2 operations. If the given `allocator` is NULL, then the > system default will be restored.\n\n\nopts(GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY, int enabled)
\n\n> Ensure that there are no unsaved changes in the index before > beginning any operation that reloads the index from disk (eg, > checkout). If there are unsaved changes, the instruction will > fail. (Using the FORCE flag to checkout will still overwrite > these changes.)\n\n\nopts(GIT_OPT_GET_PACK_MAX_OBJECTS, size_t *out)
\n\n> Get the maximum number of objects libgit2 will allow in a pack > file when downloading a pack file from a remote. This can be > used to limit maximum memory usage when fetching from an untrusted > remote.\n\n\nopts(GIT_OPT_SET_PACK_MAX_OBJECTS, size_t objects)
\n\n> Set the maximum number of objects libgit2 will allow in a pack > file when downloading a pack file from a remote.\n\n\nopts(GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS, int enabled) > This will cause .keep file existence checks to be skipped when > accessing packfiles, which can help performance with remote filesystems.
\n\nopts(GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE, int enabled) > When connecting to a server using NTLM or Negotiate > authentication, use expect/continue when POSTing data. > This option is not available on Windows.
opts(GIT_OPT_SET_ODB_PACKED_PRIORITY, int priority) > Override the default priority of the packed ODB backend which > is added when default backends are assigned to a repository
\n\nopts(GIT_OPT_SET_ODB_LOOSE_PRIORITY, int priority) > Override the default priority of the loose ODB backend which > is added when default backends are assigned to a repository
\n\nopts(GIT_OPT_GET_EXTENSIONS, git_strarray *out) > Returns the list of git extensions that are supported. This > is the list of built-in extensions supported by libgit2 and > custom extensions that have been added with > GIT_OPT_SET_EXTENSIONS. Extensions that have been negated > will not be returned. The returned list should be released > with git_strarray_dispose.
opts(GIT_OPT_SET_EXTENSIONS, const char **extensions, size_t len) > Set that the given git extensions are supported by the caller. > Extensions supported by libgit2 may be negated by prefixing > them with a !. For example: setting extensions to > { "!noop", "newext" } indicates that the caller does not want > to support repositories with the noop extension but does want > to support repositories with the newext extension.
opts(GIT_OPT_GET_OWNER_VALIDATION, int *enabled) > Gets the owner validation setting for repository > directories.
\n\nopts(GIT_OPT_SET_OWNER_VALIDATION, int enabled) > Set that repository directories should be owned by the current > user. The default is to validate ownership.
\n\nopts(GIT_OPT_GET_HOMEDIR, git_buf *out) > Gets the current user's home directory, as it will be used > for file lookups. The path is written to the out buffer.
opts(GIT_OPT_SET_HOMEDIR, const char *path) > Sets the directory used as the current user's home directory, > for file lookups. > > - path directory of home directory.
opts(GIT_OPT_GET_SERVER_CONNECT_TIMEOUT, int *timeout) > Gets the timeout (in milliseconds) to attempt connections to > a remote server.
\n\nopts(GIT_OPT_SET_SERVER_CONNECT_TIMEOUT, int timeout) > Sets the timeout (in milliseconds) to attempt connections to > a remote server. Set to 0 to use the system default. Note that > this may not be able to be configured longer than the system > default, typically 75 seconds.
\n\nopts(GIT_OPT_GET_SERVER_TIMEOUT, int *timeout) > Gets the timeout (in milliseconds) for reading from and writing > to a remote server.
\n\nopts(GIT_OPT_SET_SERVER_TIMEOUT, int timeout) > Sets the timeout (in milliseconds) for reading from and writing > to a remote server. Set to 0 to use the system default.
\n", "group": "libgit2" }, "git_config_entry_free": { "type": "function", - "file": "config.h", - "line": 75, - "lineto": 75, + "file": "git2/config.h", + "line": 131, + "lineto": 131, "args": [ { - "name": "", + "name": "entry", "type": "git_config_entry *", - "comment": null + "comment": "The entry to free." } ], - "argline": "git_config_entry *", + "argline": "git_config_entry *entry", "sig": "git_config_entry *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free a config entry
\n", + "return": { "type": "void", "comment": null }, + "description": "Free a config entry.
\n", "comments": "", - "group": "config" + "group": "config", + "examples": { + "config.c": [ + "ex/v1.9.1/config.html#git_config_entry_free-1", + "ex/v1.9.1/config.html#git_config_entry_free-2" + ] + } }, "git_config_find_global": { "type": "function", - "file": "config.h", - "line": 116, - "lineto": 116, + "file": "git2/config.h", + "line": 183, + "lineto": 183, "args": [ { "name": "out", @@ -4313,14 +4722,14 @@ "comment": " 0 if a global configuration file has been found. Its path will be stored in `out`." }, "description": "Locate the path to the global configuration file
\n", - "comments": "The user or global configuration file is usually located in $HOME/.gitconfig.
This method will try to guess the full path to that file, if the file exists. The returned path may be used on any git_config call to load the global configuration file.
This method will not guess the path to the xdg compatible config file (.config/git/config).
\n", + "comments": "The user or global configuration file is usually located in $HOME/.gitconfig.
This method will try to guess the full path to that file, if the file exists. The returned path may be used on any git_config call to load the global configuration file.
This method will not guess the path to the xdg compatible config file (.config/git/config).
Locate the path to the system configuration file
\n", - "comments": "If /etc/gitconfig doesn't exist, it will look for %PROGRAMFILES%.
\n", + "comments": "If /etc/gitconfig doesn't exist, it will look for %PROGRAMFILES%.
Locate the path to the configuration file in ProgramData
\n", - "comments": "Look for the file in %PROGRAMDATA% used by portable git.
\n", + "comments": "Look for the file in %PROGRAMDATA% used by portable git.
Open the global, XDG and system configuration files
\n", "comments": "Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.
\n", "group": "config" }, "git_config_new": { "type": "function", - "file": "config.h", - "line": 179, - "lineto": 179, + "file": "git2/config.h", + "line": 246, + "lineto": 246, "args": [ { "name": "out", @@ -4418,19 +4824,16 @@ ], "argline": "git_config **out", "sig": "git_config **", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Allocate a new configuration object
\n", "comments": "This object is empty, so you have to add a file to it before you can do anything with it.
\n", "group": "config" }, "git_config_add_file_ondisk": { "type": "function", - "file": "config.h", - "line": 206, - "lineto": 210, + "file": "git2/config.h", + "line": 275, + "lineto": 280, "args": [ { "name": "cfg", @@ -4447,14 +4850,19 @@ "type": "git_config_level_t", "comment": "the priority level of the backend" }, + { + "name": "repo", + "type": "const git_repository *", + "comment": "optional repository to allow parsing of\n conditional includes" + }, { "name": "force", "type": "int", "comment": "replace config file at the given priority level" } ], - "argline": "git_config *cfg, const char *path, git_config_level_t level, int force", - "sig": "git_config *::const char *::git_config_level_t::int", + "argline": "git_config *cfg, const char *path, git_config_level_t level, const git_repository *repo, int force", + "sig": "git_config *::const char *::git_config_level_t::const git_repository *::int", "return": { "type": "int", "comment": " 0 on success, GIT_EEXISTS when adding more than one file\n for a given priority level (and force_replace set to 0),\n GIT_ENOTFOUND when the file doesn't exist or error code" @@ -4465,9 +4873,9 @@ }, "git_config_open_ondisk": { "type": "function", - "file": "config.h", - "line": 224, - "lineto": 224, + "file": "git2/config.h", + "line": 294, + "lineto": 294, "args": [ { "name": "out", @@ -4482,24 +4890,19 @@ ], "argline": "git_config **out, const char *path", "sig": "git_config **::const char *", - "return": { - "type": "int", - "comment": " 0 on success, or an error code" - }, + "return": { "type": "int", "comment": " 0 on success, or an error code" }, "description": "Create a new config instance containing a single on-disk file
\n", "comments": "This method is a simple utility wrapper for the following sequence of calls: - git_config_new - git_config_add_file_ondisk
\n", "group": "config", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_config_open_ondisk-24" - ] + "general.c": ["ex/v1.9.1/general.html#git_config_open_ondisk-26"] } }, "git_config_open_level": { "type": "function", - "file": "config.h", - "line": 242, - "lineto": 245, + "file": "git2/config.h", + "line": 312, + "lineto": 315, "args": [ { "name": "out", @@ -4529,9 +4932,9 @@ }, "git_config_open_global": { "type": "function", - "file": "config.h", - "line": 259, - "lineto": 259, + "file": "git2/config.h", + "line": 330, + "lineto": 330, "args": [ { "name": "out", @@ -4546,19 +4949,45 @@ ], "argline": "git_config **out, git_config *config", "sig": "git_config **::git_config *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Open the global/XDG configuration file according to git's rules
\n", - "comments": "Git allows you to store your global configuration at $HOME/.config or $XDG_CONFIG_HOME/git/config. For backwards compatability, the XDG file shouldn't be used unless the use has created it explicitly. With this function you'll open the correct one to write to.
Git allows you to store your global configuration at $HOME/.gitconfig or $XDG_CONFIG_HOME/git/config. For backwards compatibility, the XDG file shouldn't be used unless the use has created it explicitly. With this function you'll open the correct one to write to.
Set the write order for configuration backends. By default, the\n write ordering does not match the read ordering; for example, the\n worktree configuration is a high-priority for reading, but is not\n written to unless explicitly chosen.
\n", + "comments": "", "group": "config" }, "git_config_snapshot": { "type": "function", - "file": "config.h", - "line": 275, - "lineto": 275, + "file": "git2/config.h", + "line": 362, + "lineto": 362, "args": [ { "name": "out", @@ -4573,19 +5002,16 @@ ], "argline": "git_config **out, git_config *config", "sig": "git_config **::git_config *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Create a snapshot of the configuration
\n", "comments": "Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).
\n\nThe string returned when querying such a config object is valid until it is freed.
\n", "group": "config" }, "git_config_free": { "type": "function", - "file": "config.h", - "line": 282, - "lineto": 282, + "file": "git2/config.h", + "line": 369, + "lineto": 369, "args": [ { "name": "cfg", @@ -4595,19 +5021,23 @@ ], "argline": "git_config *cfg", "sig": "git_config *", - "return": { - "type": "void", - "comment": null - }, + "return": { "type": "void", "comment": null }, "description": "Free the configuration and its associated memory and files
\n", "comments": "", - "group": "config" + "group": "config", + "examples": { + "config.c": ["ex/v1.9.1/config.html#git_config_free-3"], + "general.c": [ + "ex/v1.9.1/general.html#git_config_free-27", + "ex/v1.9.1/general.html#git_config_free-28" + ] + } }, "git_config_get_entry": { "type": "function", - "file": "config.h", - "line": 294, - "lineto": 297, + "file": "git2/config.h", + "line": 381, + "lineto": 384, "args": [ { "name": "out", @@ -4627,19 +5057,19 @@ ], "argline": "git_config_entry **out, const git_config *cfg, const char *name", "sig": "git_config_entry **::const git_config *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the git_config_entry of a config variable.
\n", "comments": "Free the git_config_entry after use with git_config_entry_free().
Get the value of an integer config variable.
\n", "comments": "All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.
\n", "group": "config", "examples": { "general.c": [ - "ex/HEAD/general.html#git_config_get_int32-25" + "ex/v1.9.1/general.html#git_config_get_int32-29", + "ex/v1.9.1/general.html#git_config_get_int32-30" ] } }, "git_config_get_int64": { "type": "function", - "file": "config.h", - "line": 325, - "lineto": 325, + "file": "git2/config.h", + "line": 412, + "lineto": 412, "args": [ { "name": "out", @@ -4696,19 +5124,16 @@ ], "argline": "int64_t *out, const git_config *cfg, const char *name", "sig": "int64_t *::const git_config *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the value of a long integer config variable.
\n", "comments": "All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.
\n", "group": "config" }, "git_config_get_bool": { "type": "function", - "file": "config.h", - "line": 342, - "lineto": 342, + "file": "git2/config.h", + "line": 429, + "lineto": 429, "args": [ { "name": "out", @@ -4728,19 +5153,16 @@ ], "argline": "int *out, const git_config *cfg, const char *name", "sig": "int *::const git_config *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the value of a boolean config variable.
\n", "comments": "This function uses the usual C convention of 0 being false and anything else true.
\n\nAll config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.
\n", "group": "config" }, "git_config_get_path": { "type": "function", - "file": "config.h", - "line": 360, - "lineto": 360, + "file": "git2/config.h", + "line": 447, + "lineto": 447, "args": [ { "name": "out", @@ -4760,19 +5182,16 @@ ], "argline": "git_buf *out, const git_config *cfg, const char *name", "sig": "git_buf *::const git_config *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the value of a path config variable.
\n", "comments": "A leading '~' will be expanded to the global search path (which defaults to the user's home directory but can be overridden via git_libgit2_opts().
All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.
\n", "group": "config" }, "git_config_get_string": { "type": "function", - "file": "config.h", - "line": 378, - "lineto": 378, + "file": "git2/config.h", + "line": 465, + "lineto": 465, "args": [ { "name": "out", @@ -4792,24 +5211,22 @@ ], "argline": "const char **out, const git_config *cfg, const char *name", "sig": "const char **::const git_config *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the value of a string config variable.
\n", "comments": "This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.
\n\nAll config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.
\n", "group": "config", "examples": { "general.c": [ - "ex/HEAD/general.html#git_config_get_string-26" + "ex/v1.9.1/general.html#git_config_get_string-31", + "ex/v1.9.1/general.html#git_config_get_string-32" ] } }, "git_config_get_string_buf": { "type": "function", - "file": "config.h", - "line": 394, - "lineto": 394, + "file": "git2/config.h", + "line": 481, + "lineto": 481, "args": [ { "name": "out", @@ -4829,19 +5246,16 @@ ], "argline": "git_buf *out, const git_config *cfg, const char *name", "sig": "git_buf *::const git_config *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Get the value of a string config variable.
\n", "comments": "The value of the config will be copied into the buffer.
\n\nAll config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.
\n", "group": "config" }, "git_config_get_multivar_foreach": { "type": "function", - "file": "config.h", - "line": 408, - "lineto": 408, + "file": "git2/config.h", + "line": 500, + "lineto": 500, "args": [ { "name": "cfg", @@ -4871,19 +5285,16 @@ ], "argline": "const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload", "sig": "const git_config *::const char *::const char *::git_config_foreach_cb::void *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Get each value of a multivar in a foreach callback
\n", - "comments": "The callback will be called on each variable found
\n", + "comments": "The callback will be called on each variable found
\n\nThe regular expression is applied case-sensitively on the normalized form of the variable name: the section and variable parts are lower-cased. The subsection is left unchanged.
\n", "group": "config" }, "git_config_multivar_iterator_new": { "type": "function", - "file": "config.h", - "line": 419, - "lineto": 419, + "file": "git2/config.h", + "line": 516, + "lineto": 516, "args": [ { "name": "out", @@ -4908,19 +5319,16 @@ ], "argline": "git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp", "sig": "git_config_iterator **::const git_config *::const char *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Get each value of a multivar
\n", - "comments": "", + "comments": "The regular expression is applied case-sensitively on the normalized form of the variable name: the section and variable parts are lower-cased. The subsection is left unchanged.
\n", "group": "config" }, "git_config_next": { "type": "function", - "file": "config.h", - "line": 431, - "lineto": 431, + "file": "git2/config.h", + "line": 528, + "lineto": 528, "args": [ { "name": "entry", @@ -4940,14 +5348,14 @@ "comment": " 0 or an error code. GIT_ITEROVER if the iteration has completed" }, "description": "Return the current entry and advance the iterator
\n", - "comments": "The pointers returned by this function are valid until the iterator is freed.
\n", + "comments": "The pointers returned by this function are valid until the next call to git_config_next or until the iterator is freed.
Free a config iterator
\n", "comments": "", "group": "config" }, "git_config_set_int32": { "type": "function", - "file": "config.h", - "line": 449, - "lineto": 449, + "file": "git2/config.h", + "line": 546, + "lineto": 546, "args": [ { "name": "cfg", @@ -4989,19 +5394,16 @@ ], "argline": "git_config *cfg, const char *name, int32_t value", "sig": "git_config *::const char *::int32_t", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Set the value of an integer config variable in the config file\n with the highest level (usually the local one).
\n", "comments": "", "group": "config" }, "git_config_set_int64": { "type": "function", - "file": "config.h", - "line": 460, - "lineto": 460, + "file": "git2/config.h", + "line": 557, + "lineto": 557, "args": [ { "name": "cfg", @@ -5021,19 +5423,16 @@ ], "argline": "git_config *cfg, const char *name, int64_t value", "sig": "git_config *::const char *::int64_t", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).
\n", "comments": "", "group": "config" }, "git_config_set_bool": { "type": "function", - "file": "config.h", - "line": 471, - "lineto": 471, + "file": "git2/config.h", + "line": 568, + "lineto": 568, "args": [ { "name": "cfg", @@ -5045,27 +5444,20 @@ "type": "const char *", "comment": "the variable's name" }, - { - "name": "value", - "type": "int", - "comment": "the value to store" - } + { "name": "value", "type": "int", "comment": "the value to store" } ], "argline": "git_config *cfg, const char *name, int value", "sig": "git_config *::const char *::int", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).
\n", "comments": "", "group": "config" }, "git_config_set_string": { "type": "function", - "file": "config.h", - "line": 485, - "lineto": 485, + "file": "git2/config.h", + "line": 582, + "lineto": 582, "args": [ { "name": "cfg", @@ -5085,19 +5477,19 @@ ], "argline": "git_config *cfg, const char *name, const char *value", "sig": "git_config *::const char *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Set the value of a string config variable in the config file\n with the highest level (usually the local one).
\n", "comments": "A copy of the string is made and the user is free to use it afterwards.
\n", - "group": "config" + "group": "config", + "examples": { + "config.c": ["ex/v1.9.1/config.html#git_config_set_string-5"] + } }, "git_config_set_multivar": { "type": "function", - "file": "config.h", - "line": 495, - "lineto": 495, + "file": "git2/config.h", + "line": 595, + "lineto": 595, "args": [ { "name": "cfg", @@ -5114,27 +5506,20 @@ "type": "const char *", "comment": "a regular expression to indicate which values to replace" }, - { - "name": "value", - "type": "const char *", - "comment": "the new value." - } + { "name": "value", "type": "const char *", "comment": "the new value." } ], "argline": "git_config *cfg, const char *name, const char *regexp, const char *value", "sig": "git_config *::const char *::const char *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Set a multivar in the local config file.
\n", - "comments": "", + "comments": "The regular expression is applied case-sensitively on the value.
\n", "group": "config" }, "git_config_delete_entry": { "type": "function", - "file": "config.h", - "line": 504, - "lineto": 504, + "file": "git2/config.h", + "line": 605, + "lineto": 605, "args": [ { "name": "cfg", @@ -5149,19 +5534,16 @@ ], "argline": "git_config *cfg, const char *name", "sig": "git_config *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Delete a config variable from the config file\n with the highest level (usually the local one).
\n", "comments": "", "group": "config" }, "git_config_delete_multivar": { "type": "function", - "file": "config.h", - "line": 515, - "lineto": 515, + "file": "git2/config.h", + "line": 618, + "lineto": 618, "args": [ { "name": "cfg", @@ -5181,19 +5563,16 @@ ], "argline": "git_config *cfg, const char *name, const char *regexp", "sig": "git_config *::const char *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Deletes one or several entries from a multivar in the local config file.
\n", - "comments": "", + "comments": "The regular expression is applied case-sensitively on the value.
\n", "group": "config" }, "git_config_foreach": { "type": "function", - "file": "config.h", - "line": 533, - "lineto": 536, + "file": "git2/config.h", + "line": 636, + "lineto": 639, "args": [ { "name": "cfg", @@ -5223,9 +5602,9 @@ }, "git_config_iterator_new": { "type": "function", - "file": "config.h", - "line": 547, - "lineto": 547, + "file": "git2/config.h", + "line": 651, + "lineto": 651, "args": [ { "name": "out", @@ -5235,24 +5614,21 @@ { "name": "cfg", "type": "const git_config *", - "comment": "where to ge the variables from" + "comment": "where to get the variables from" } ], "argline": "git_config_iterator **out, const git_config *cfg", "sig": "git_config_iterator **::const git_config *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Iterate over all the config variables
\n", "comments": "Use git_config_next to advance the iteration and git_config_iterator_free when done.
Iterate over all the config variables whose name matches a pattern
\n", - "comments": "Use git_config_next to advance the iteration and git_config_iterator_free when done.
Use git_config_next to advance the iteration and git_config_iterator_free when done.
The regular expression is applied case-sensitively on the normalized form of the variable name: the section and variable parts are lower-cased. The subsection is left unchanged.
\n", "group": "config" }, "git_config_foreach_match": { "type": "function", - "file": "config.h", - "line": 577, - "lineto": 581, + "file": "git2/config.h", + "line": 690, + "lineto": 694, "args": [ { "name": "cfg", @@ -5314,14 +5687,14 @@ "comment": " 0 or the return value of the callback which didn't return 0" }, "description": "Perform an operation on each config variable matching a regular expression.
\n", - "comments": "This behaviors like git_config_foreach with an additional filter of a regular expression that filters which config keys are passed to the callback.
The pointers passed to the callback are only valid as long as the iteration is ongoing.
\n", + "comments": "This behaves like git_config_foreach with an additional filter of a regular expression that filters which config keys are passed to the callback.
The regular expression is applied case-sensitively on the normalized form of the variable name: the section and variable parts are lower-cased. The subsection is left unchanged.
\n\nThe regular expression is applied case-sensitively on the normalized form of the variable name: the case-insensitive parts are lower-case.
\n", "group": "config" }, "git_config_get_mapped": { "type": "function", - "file": "config.h", - "line": 617, - "lineto": 622, + "file": "git2/config.h", + "line": 730, + "lineto": 735, "args": [ { "name": "out", @@ -5340,8 +5713,8 @@ }, { "name": "maps", - "type": "const git_cvar_map *", - "comment": "array of `git_cvar_map` objects specifying the possible mappings" + "type": "const git_configmap *", + "comment": "array of `git_configmap` objects specifying the possible mappings" }, { "name": "map_n", @@ -5349,21 +5722,21 @@ "comment": "number of mapping objects in `maps`" } ], - "argline": "int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n", - "sig": "int *::const git_config *::const char *::const git_cvar_map *::size_t", + "argline": "int *out, const git_config *cfg, const char *name, const git_configmap *maps, size_t map_n", + "sig": "int *::const git_config *::const char *::const git_configmap *::size_t", "return": { "type": "int", "comment": " 0 on success, error code otherwise" }, "description": "Query the value of a config variable and return it mapped to\n an integer constant.
\n", - "comments": "This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.
\n\nA mapping array looks as follows:
\n\ngit_cvar_map autocrlf_mapping[] = { {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE}, {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE}, {GIT_CVAR_STRING, "input", GIT_AUTO_CRLF_INPUT}, {GIT_CVAR_STRING, "default", GIT_AUTO_CRLF_DEFAULT}};\n\n\nOn any "false" value for the variable (e.g. "false", "FALSE", "no"), the mapping will store GIT_AUTO_CRLF_FALSE in the out parameter.
The same thing applies for any "true" value such as "true", "yes" or "1", storing the GIT_AUTO_CRLF_TRUE variable.
Otherwise, if the value matches the string "input" (with case insensitive comparison), the given constant will be stored in out, and likewise for "default".
If not a single match can be made to store in out, an error code will be returned.
This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.
\n\nA mapping array looks as follows:
\n\ngit_configmap autocrlf_mapping[] = { {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE}, {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE}, {GIT_CVAR_STRING, "input", GIT_AUTO_CRLF_INPUT}, {GIT_CVAR_STRING, "default", GIT_AUTO_CRLF_DEFAULT}};\n\n\nOn any "false" value for the variable (e.g. "false", "FALSE", "no"), the mapping will store GIT_AUTO_CRLF_FALSE in the out parameter.
The same thing applies for any "true" value such as "true", "yes" or "1", storing the GIT_AUTO_CRLF_TRUE variable.
Otherwise, if the value matches the string "input" (with case insensitive comparison), the given constant will be stored in out, and likewise for "default".
If not a single match can be made to store in out, an error code will be returned.
Maps a string value to an integer constant
\n", "comments": "", "group": "config" }, "git_config_parse_bool": { "type": "function", - "file": "config.h", - "line": 648, - "lineto": 648, + "file": "git2/config.h", + "line": 763, + "lineto": 763, "args": [ { "name": "out", "type": "int *", "comment": "place to store the result of the parsing" }, - { - "name": "value", - "type": "const char *", - "comment": "value to parse" - } + { "name": "value", "type": "const char *", "comment": "value to parse" } ], "argline": "int *out, const char *value", "sig": "int *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Parse a string value as a bool.
\n", "comments": "Valid values for true are: 'true', 'yes', 'on', 1 or any number different from 0 Valid values for false are: 'false', 'no', 'off', 0
\n", "group": "config" }, "git_config_parse_int32": { "type": "function", - "file": "config.h", - "line": 660, - "lineto": 660, + "file": "git2/config.h", + "line": 776, + "lineto": 776, "args": [ { "name": "out", "type": "int32_t *", "comment": "place to store the result of the parsing" }, - { - "name": "value", - "type": "const char *", - "comment": "value to parse" - } + { "name": "value", "type": "const char *", "comment": "value to parse" } ], "argline": "int32_t *out, const char *value", "sig": "int32_t *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Parse a string value as an int32.
\n", "comments": "An optional value suffix of 'k', 'm', or 'g' will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.
\n", "group": "config" }, "git_config_parse_int64": { "type": "function", - "file": "config.h", - "line": 672, - "lineto": 672, + "file": "git2/config.h", + "line": 789, + "lineto": 789, "args": [ { "name": "out", "type": "int64_t *", "comment": "place to store the result of the parsing" }, - { - "name": "value", - "type": "const char *", - "comment": "value to parse" - } + { "name": "value", "type": "const char *", "comment": "value to parse" } ], "argline": "int64_t *out, const char *value", "sig": "int64_t *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Parse a string value as an int64.
\n", "comments": "An optional value suffix of 'k', 'm', or 'g' will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.
\n", "group": "config" }, "git_config_parse_path": { "type": "function", - "file": "config.h", - "line": 687, - "lineto": 687, + "file": "git2/config.h", + "line": 805, + "lineto": 805, "args": [ { "name": "out", @@ -5496,19 +5841,16 @@ ], "argline": "git_buf *out, const char *value", "sig": "git_buf *::const char *", - "return": { - "type": "int", - "comment": null - }, + "return": { "type": "int", "comment": " 0 or an error code." }, "description": "Parse a string value as a path.
\n", "comments": "A leading '~' will be expanded to the global search path (which defaults to the user's home directory but can be overridden via git_libgit2_opts().
If the value does not begin with a tilde, the input will be returned.
\n", "group": "config" }, "git_config_backend_foreach_match": { "type": "function", - "file": "config.h", - "line": 701, - "lineto": 705, + "file": "git2/config.h", + "line": 824, + "lineto": 828, "args": [ { "name": "backend", @@ -5533,19 +5875,16 @@ ], "argline": "git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload", "sig": "git_config_backend *::const char *::git_config_foreach_cb::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Perform an operation on each config variable in given config backend\n matching a regular expression.
\n", - "comments": "This behaviors like git_config_foreach_match except instead of all config entries it just enumerates through the given backend entry.
Perform an operation on each config variable in a given config backend,\n matching a regular expression.
\n", + "comments": "This behaves like git_config_foreach_match except that only config entries from the given backend entry are enumerated.
The regular expression is applied case-sensitively on the normalized form of the variable name: the section and variable parts are lower-cased. The subsection is left unchanged.
\n", "group": "config" }, "git_config_lock": { "type": "function", - "file": "config.h", - "line": 724, - "lineto": 724, + "file": "git2/config.h", + "line": 847, + "lineto": 847, "args": [ { "name": "tx", @@ -5560,2892 +5899,2864 @@ ], "argline": "git_transaction **tx, git_config *cfg", "sig": "git_transaction **::git_config *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, + "return": { "type": "int", "comment": " 0 or an error code" }, "description": "Lock the backend with the highest priority
\n", "comments": "Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.
\n\nYou can apply the changes by calling git_transaction_commit() before freeing the transaction. Either of these actions will unlock the config.
Free a credential.
\n", + "comments": "This is only necessary if you own the object; that is, if you are a transport.
\n", + "group": "credential" + }, + "git_credential_has_username": { + "type": "function", + "file": "git2/credential.h", + "line": 157, + "lineto": 157, + "args": [ { - "name": "payload", - "type": "void *", - "comment": "The payload provided when specifying this callback. (This is\n interpreted as a `git_cred_userpass_payload*`.)" + "name": "cred", + "type": "git_credential *", + "comment": "object to check" } ], - "argline": "git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload", - "sig": "git_cred **::const char *::const char *::unsigned int::void *", + "argline": "git_credential *cred", + "sig": "git_credential *", "return": { "type": "int", - "comment": null + "comment": " 1 if the credential object has non-NULL username, 0 otherwise" }, - "description": "Stock callback usable as a git_cred_acquire_cb. This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n GIT_CREDTYPE_USERPASS_PLAINTEXT as an allowed type.
Check whether a credential object contains username information.
\n", "comments": "", - "group": "cred" + "group": "credential" }, - "git_describe_commit": { + "git_credential_get_username": { "type": "function", - "file": "describe.h", - "line": 120, - "lineto": 123, + "file": "git2/credential.h", + "line": 165, + "lineto": 165, "args": [ { - "name": "result", - "type": "git_describe_result **", - "comment": "pointer to store the result. You must free this once\n you're done with it." - }, - { - "name": "committish", - "type": "git_object *", - "comment": "a committish to describe" - }, - { - "name": "opts", - "type": "git_describe_options *", - "comment": "the lookup options" + "name": "cred", + "type": "git_credential *", + "comment": "object to check" } ], - "argline": "git_describe_result **result, git_object *committish, git_describe_options *opts", - "sig": "git_describe_result **::git_object *::git_describe_options *", + "argline": "git_credential *cred", + "sig": "git_credential *", "return": { - "type": "int", - "comment": null + "type": "const char *", + "comment": " the credential username, or NULL if not applicable" }, - "description": "Describe a commit
\n", - "comments": "Perform the describe operation on the given committish object.
\n", - "group": "describe", - "examples": { - "describe.c": [ - "ex/HEAD/describe.html#git_describe_commit-1" - ] - } + "description": "Return the username associated with a credential object.
\n", + "comments": "", + "group": "credential" }, - "git_describe_workdir": { + "git_credential_userpass_plaintext_new": { "type": "function", - "file": "describe.h", - "line": 137, - "lineto": 140, + "file": "git2/credential.h", + "line": 176, + "lineto": 179, "args": [ { "name": "out", - "type": "git_describe_result **", - "comment": "pointer to store the result. You must free this once\n you're done with it." + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to perform the describe" + "name": "username", + "type": "const char *", + "comment": "The username of the credential." }, { - "name": "opts", - "type": "git_describe_options *", - "comment": "the lookup options" + "name": "password", + "type": "const char *", + "comment": "The password of the credential." } ], - "argline": "git_describe_result **out, git_repository *repo, git_describe_options *opts", - "sig": "git_describe_result **::git_repository *::git_describe_options *", + "argline": "git_credential **out, const char *username, const char *password", + "sig": "git_credential **::const char *::const char *", "return": { "type": "int", - "comment": null + "comment": " 0 for success or an error code for failure" }, - "description": "Describe a commit
\n", - "comments": "Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.
\n", - "group": "describe", - "examples": { - "describe.c": [ - "ex/HEAD/describe.html#git_describe_workdir-2" - ] - } + "description": "Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.
\n", + "comments": "", + "group": "credential" }, - "git_describe_format": { + "git_credential_default_new": { "type": "function", - "file": "describe.h", - "line": 150, - "lineto": 153, + "file": "git2/credential.h", + "line": 188, + "lineto": 188, "args": [ { "name": "out", - "type": "git_buf *", - "comment": "The buffer to store the result" - }, - { - "name": "result", - "type": "const git_describe_result *", - "comment": "the result from `git_describe_commit()` or\n `git_describe_workdir()`." - }, - { - "name": "opts", - "type": "const git_describe_format_options *", - "comment": "the formatting options" + "type": "git_credential **", + "comment": "The newly created credential object." } ], - "argline": "git_buf *out, const git_describe_result *result, const git_describe_format_options *opts", - "sig": "git_buf *::const git_describe_result *::const git_describe_format_options *", + "argline": "git_credential **out", + "sig": "git_credential **", "return": { "type": "int", - "comment": null + "comment": " 0 for success or an error code for failure" }, - "description": "Print the describe result to a buffer
\n", + "description": "Create a "default" credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.
\n", "comments": "", - "group": "describe", - "examples": { - "describe.c": [ - "ex/HEAD/describe.html#git_describe_format-3" - ] - } + "group": "credential" }, - "git_describe_result_free": { + "git_credential_username_new": { "type": "function", - "file": "describe.h", - "line": 158, - "lineto": 158, + "file": "git2/credential.h", + "line": 200, + "lineto": 200, "args": [ { - "name": "result", - "type": "git_describe_result *", - "comment": null + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." + }, + { + "name": "username", + "type": "const char *", + "comment": "The username to authenticate with" } ], - "argline": "git_describe_result *result", - "sig": "git_describe_result *", + "argline": "git_credential **out, const char *username", + "sig": "git_credential **::const char *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 for success or an error code for failure" }, - "description": "Free the describe result.
\n", - "comments": "", - "group": "describe" + "description": "Create a credential to specify a username.
\n", + "comments": "This is used with ssh authentication to query for the username if none is specified in the url.
\n", + "group": "credential" }, - "git_diff_init_options": { + "git_credential_ssh_key_new": { "type": "function", - "file": "diff.h", - "line": 435, - "lineto": 437, + "file": "git2/credential.h", + "line": 213, + "lineto": 218, "args": [ { - "name": "opts", - "type": "git_diff_options *", - "comment": "The `git_diff_options` struct to initialize" + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`" + "name": "username", + "type": "const char *", + "comment": "username to use to authenticate" + }, + { + "name": "publickey", + "type": "const char *", + "comment": "The path to the public key of the credential." + }, + { + "name": "privatekey", + "type": "const char *", + "comment": "The path to the private key of the credential." + }, + { + "name": "passphrase", + "type": "const char *", + "comment": "The passphrase of the credential." } ], - "argline": "git_diff_options *opts, unsigned int version", - "sig": "git_diff_options *::unsigned int", + "argline": "git_credential **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase", + "sig": "git_credential **::const char *::const char *::const char *::const char *", "return": { "type": "int", - "comment": " Zero on success; -1 on failure." + "comment": " 0 for success or an error code for failure" }, - "description": "Initializes a git_diff_options with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.
Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.
\n", "comments": "", - "group": "diff" + "group": "credential" }, - "git_diff_find_init_options": { + "git_credential_ssh_key_memory_new": { "type": "function", - "file": "diff.h", - "line": 720, - "lineto": 722, + "file": "git2/credential.h", + "line": 230, + "lineto": 235, "args": [ { - "name": "opts", - "type": "git_diff_find_options *", - "comment": "The `git_diff_find_options` struct to initialize" + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`" + "name": "username", + "type": "const char *", + "comment": "username to use to authenticate." + }, + { + "name": "publickey", + "type": "const char *", + "comment": "The public key of the credential." + }, + { + "name": "privatekey", + "type": "const char *", + "comment": "The private key of the credential." + }, + { + "name": "passphrase", + "type": "const char *", + "comment": "The passphrase of the credential." } ], - "argline": "git_diff_find_options *opts, unsigned int version", - "sig": "git_diff_find_options *::unsigned int", + "argline": "git_credential **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase", + "sig": "git_credential **::const char *::const char *::const char *::const char *", "return": { "type": "int", - "comment": " Zero on success; -1 on failure." + "comment": " 0 for success or an error code for failure" }, - "description": "Initializes a git_diff_find_options with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.
Create a new ssh key credential object reading the keys from memory.
\n", "comments": "", - "group": "diff" + "group": "credential" }, - "git_diff_free": { + "git_credential_ssh_interactive_new": { "type": "function", - "file": "diff.h", - "line": 736, - "lineto": 736, + "file": "git2/credential.h", + "line": 278, + "lineto": 282, "args": [ { - "name": "diff", - "type": "git_diff *", - "comment": "The previously created diff; cannot be used after free." - } - ], - "argline": "git_diff *diff", - "sig": "git_diff *", - "return": { - "type": "void", - "comment": null - }, - "description": "Deallocate a diff.
\n", - "comments": "", - "group": "diff", - "examples": { - "diff.c": [ - "ex/HEAD/diff.html#git_diff_free-2" - ], - "log.c": [ - "ex/HEAD/log.html#git_diff_free-24", - "ex/HEAD/log.html#git_diff_free-25" - ] - } - }, - "git_diff_tree_to_tree": { - "type": "function", - "file": "diff.h", - "line": 754, - "lineto": 759, - "args": [ - { - "name": "diff", - "type": "git_diff **", - "comment": "Output pointer to a git_diff pointer to be allocated." + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository containing the trees." + "name": "username", + "type": "const char *", + "comment": "Username to use to authenticate." }, { - "name": "old_tree", - "type": "git_tree *", - "comment": "A git_tree object to diff from, or NULL for empty tree." + "name": "prompt_callback", + "type": "git_credential_ssh_interactive_cb", + "comment": "The callback method used for prompts." }, { - "name": "new_tree", - "type": "git_tree *", - "comment": "A git_tree object to diff to, or NULL for empty tree." + "name": "payload", + "type": "void *", + "comment": "Additional data to pass to the callback." + } + ], + "argline": "git_credential **out, const char *username, git_credential_ssh_interactive_cb prompt_callback, void *payload", + "sig": "git_credential **::const char *::git_credential_ssh_interactive_cb::void *", + "return": { + "type": "int", + "comment": " 0 for success or an error code for failure." + }, + "description": "Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.
\n", + "comments": "", + "group": "credential" + }, + "git_credential_ssh_key_from_agent": { + "type": "function", + "file": "git2/credential.h", + "line": 292, + "lineto": 294, + "args": [ + { + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Structure with options to influence diff or NULL for defaults." + "name": "username", + "type": "const char *", + "comment": "username to use to authenticate" } ], - "argline": "git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts", - "sig": "git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *", + "argline": "git_credential **out, const char *username", + "sig": "git_credential **::const char *", "return": { "type": "int", - "comment": null + "comment": " 0 for success or an error code for failure" }, - "description": "Create a diff with the difference between two tree objects.
\n", - "comments": "This is equivalent to git diff <old-tree> <new-tree>
The first tree will be used for the "old_file" side of the delta and the second tree will be used for the "new_file" side of the delta. You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the old_tree and new_tree.
Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.
\n", + "comments": "", + "group": "credential" }, - "git_diff_tree_to_index": { + "git_credential_ssh_custom_new": { "type": "function", - "file": "diff.h", - "line": 780, - "lineto": 785, + "file": "git2/credential.h", + "line": 332, + "lineto": 338, "args": [ { - "name": "diff", - "type": "git_diff **", - "comment": "Output pointer to a git_diff pointer to be allocated." + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository containing the tree and index." + "name": "username", + "type": "const char *", + "comment": "username to use to authenticate" }, { - "name": "old_tree", - "type": "git_tree *", - "comment": "A git_tree object to diff from, or NULL for empty tree." + "name": "publickey", + "type": "const char *", + "comment": "The bytes of the public key." }, { - "name": "index", - "type": "git_index *", - "comment": "The index to diff with; repo index used if NULL." + "name": "publickey_len", + "type": "size_t", + "comment": "The length of the public key in bytes." }, { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Structure with options to influence diff or NULL for defaults." + "name": "sign_callback", + "type": "git_credential_sign_cb", + "comment": "The callback method to sign the data during the challenge." + }, + { + "name": "payload", + "type": "void *", + "comment": "Additional data to pass to the callback." } ], - "argline": "git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts", - "sig": "git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *", + "argline": "git_credential **out, const char *username, const char *publickey, size_t publickey_len, git_credential_sign_cb sign_callback, void *payload", + "sig": "git_credential **::const char *::const char *::size_t::git_credential_sign_cb::void *", "return": { "type": "int", - "comment": null + "comment": " 0 for success or an error code for failure" }, - "description": "Create a diff between a tree and repository index.
\n", - "comments": "This is equivalent to git diff --cached <treeish> or if you pass the HEAD tree, then like git diff --cached.
The tree you pass will be used for the "old_file" side of the delta, and the index will be used for the "new_file" side of the delta.
\n\nIf you pass NULL for the index, then the existing index of the repo will be used. In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.
Create an ssh key credential with a custom signing function.
\n", + "comments": "This lets you use your own function to sign the challenge.
\n\nThis function and its credential type is provided for completeness and wraps libssh2_userauth_publickey(), which is undocumented.
The supplied credential parameter will be internally duplicated.
\n", + "group": "credential" }, - "git_diff_index_to_workdir": { + "git_credential_userpass": { "type": "function", - "file": "diff.h", - "line": 807, - "lineto": 811, + "file": "git2/credential_helpers.h", + "line": 44, + "lineto": 49, "args": [ { - "name": "diff", - "type": "git_diff **", - "comment": "Output pointer to a git_diff pointer to be allocated." + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository." + "name": "url", + "type": "const char *", + "comment": "The resource for which we are demanding a credential." }, { - "name": "index", - "type": "git_index *", - "comment": "The index to diff from; repo index used if NULL." + "name": "user_from_url", + "type": "const char *", + "comment": "The username that was embedded in a \"user\n@\nhost\"\n remote url, or NULL if not included." }, { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Structure with options to influence diff or NULL for defaults." + "name": "allowed_types", + "type": "unsigned int", + "comment": "A bitmask stating which credential types are OK to return." + }, + { + "name": "payload", + "type": "void *", + "comment": "The payload provided when specifying this callback. (This is\n interpreted as a `git_credential_userpass_payload*`.)" } ], - "argline": "git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts", - "sig": "git_diff **::git_repository *::git_index *::const git_diff_options *", - "return": { - "type": "int", - "comment": null - }, - "description": "Create a diff between the repository index and the workdir directory.
\n", - "comments": "This matches the git diff command. See the note below on git_diff_tree_to_workdir for a discussion of the difference between git diff and git diff HEAD and how to emulate a git diff <treeish> using libgit2.
The index will be used for the "old_file" side of the delta, and the working directory will be used for the "new_file" side of the delta.
\n\nIf you pass NULL for the index, then the existing index of the repo will be used. In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.
Stock callback usable as a git_credential_acquire_cb. This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n GIT_CREDENTIAL_USERPASS_PLAINTEXT as an allowed type.
Deprecated in favor of git_blob_filter.
Deprecated in favor of git_filter_list_stream_buffer.
Deprecated in favor of git_filter_list_apply_to_buffer.
Write the contents of the tree builder as a tree object.\n This is an alias of git_treebuilder_write and is preserved\n for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "treebuilder" + }, + "git_buf_grow": { + "type": "function", + "file": "git2/deprecated.h", + "line": 229, + "lineto": 229, "args": [ { - "name": "diff", - "type": "git_diff **", - "comment": "A pointer to a git_diff pointer that will be allocated." - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "The repository containing the tree." - }, - { - "name": "old_tree", - "type": "git_tree *", - "comment": "A git_tree object to diff from, or NULL for empty tree." + "name": "buffer", + "type": "git_buf *", + "comment": "The buffer to be resized; may or may not be allocated yet" }, { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Structure with options to influence diff or NULL for defaults." + "name": "target_size", + "type": "size_t", + "comment": "The desired available size" } ], - "argline": "git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts", - "sig": "git_diff **::git_repository *::git_tree *::const git_diff_options *", + "argline": "git_buf *buffer, size_t target_size", + "sig": "git_buf *::size_t", "return": { "type": "int", - "comment": null + "comment": " 0 on success, -1 on allocation failure" }, - "description": "Create a diff between a tree and the working directory.
\n", - "comments": "The tree you provide will be used for the "old_file" side of the delta, and the working directory will be used for the "new_file" side.
\n\nThis is not the same as git diff <treeish> or git diff-index <treeish>. Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index. Use git_diff_tree_to_workdir_with_index to emulate those commands.
To see difference between this and git_diff_tree_to_workdir_with_index, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified. The tree-to-workdir diff for that file is 'modified', but git diff would show status 'deleted' since there is a staged delete.
Resize the buffer allocation to make more space.
\n", + "comments": "This will attempt to grow the buffer to accommodate the target size.
\n\nIf the buffer refers to memory that was not allocated by libgit2 (i.e. the asize field is zero), then ptr will be replaced with a newly allocated block of data. Be careful so that memory allocated by the caller is not lost. As a special variant, if you pass target_size as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size size and copy the external data into it.
Currently, this will never shrink a buffer, only expand it.
\n\nIf the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.
\n", + "group": "buf" }, - "git_diff_tree_to_workdir_with_index": { + "git_buf_set": { "type": "function", - "file": "diff.h", - "line": 855, - "lineto": 859, + "file": "git2/deprecated.h", + "line": 239, + "lineto": 240, "args": [ { - "name": "diff", - "type": "git_diff **", - "comment": "A pointer to a git_diff pointer that will be allocated." + "name": "buffer", + "type": "git_buf *", + "comment": "The buffer to set" }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository containing the tree." + "name": "data", + "type": "const void *", + "comment": "The data to copy into the buffer" }, { - "name": "old_tree", - "type": "git_tree *", - "comment": "A git_tree object to diff from, or NULL for empty tree." - }, - { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Structure with options to influence diff or NULL for defaults." + "name": "datalen", + "type": "size_t", + "comment": "The length of the data to copy into the buffer" } ], - "argline": "git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts", - "sig": "git_diff **::git_repository *::git_tree *::const git_diff_options *", + "argline": "git_buf *buffer, const void *data, size_t datalen", + "sig": "git_buf *::const void *::size_t", "return": { "type": "int", - "comment": null + "comment": " 0 on success, -1 on allocation failure" }, - "description": "Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.
\n", - "comments": "This emulates git diff <tree> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.
Set buffer to a copy of some raw data.
\n", + "comments": "", + "group": "buf" }, - "git_diff_index_to_index": { + "git_buf_is_binary": { "type": "function", - "file": "diff.h", - "line": 873, - "lineto": 878, + "file": "git2/deprecated.h", + "line": 248, + "lineto": 248, "args": [ { - "name": "diff", - "type": "git_diff **", - "comment": "Output pointer to a git_diff pointer to be allocated." - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "The repository containing the indexes." - }, - { - "name": "old_index", - "type": "git_index *", - "comment": "A git_index object to diff from." - }, - { - "name": "new_index", - "type": "git_index *", - "comment": "A git_index object to diff to." - }, - { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Structure with options to influence diff or NULL for defaults." + "name": "buf", + "type": "const git_buf *", + "comment": "Buffer to check" } ], - "argline": "git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts", - "sig": "git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *", + "argline": "const git_buf *buf", + "sig": "const git_buf *", "return": { "type": "int", - "comment": null + "comment": " 1 if buffer looks like non-text data" }, - "description": "Create a diff with the difference between two index objects.
\n", - "comments": "The first index will be used for the "old_file" side of the delta and the second index will be used for the "new_file" side of the delta.
\n", - "group": "diff" + "description": "Check quickly if buffer looks like it contains binary data
\n", + "comments": "", + "group": "buf" }, - "git_diff_merge": { + "git_buf_contains_nul": { "type": "function", - "file": "diff.h", - "line": 893, - "lineto": 895, + "file": "git2/deprecated.h", + "line": 256, + "lineto": 256, "args": [ { - "name": "onto", - "type": "git_diff *", - "comment": "Diff to merge into." - }, - { - "name": "from", - "type": "const git_diff *", - "comment": "Diff to merge." + "name": "buf", + "type": "const git_buf *", + "comment": "Buffer to check" } ], - "argline": "git_diff *onto, const git_diff *from", - "sig": "git_diff *::const git_diff *", + "argline": "const git_buf *buf", + "sig": "const git_buf *", "return": { "type": "int", - "comment": null + "comment": " 1 if buffer contains a NUL byte" }, - "description": "Merge one diff into another.
\n", - "comments": "This merges items from the "from" list into the "onto" list. The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be "merged" to appear as if the old version was from the "onto" list and the new version is from the "from" list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).
\n", - "group": "diff" + "description": "Check quickly if buffer contains a NUL byte
\n", + "comments": "", + "group": "buf" }, - "git_diff_find_similar": { + "git_buf_free": { + "type": "function", + "file": "git2/deprecated.h", + "line": 268, + "lineto": 268, + "args": [{ "name": "buffer", "type": "git_buf *", "comment": null }], + "argline": "git_buf *buffer", + "sig": "git_buf *", + "return": { "type": "void", "comment": null }, + "description": "Free the memory referred to by the git_buf. This is an alias of\n git_buf_dispose and is preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "buf" + }, + "git_diff_format_email": { "type": "function", - "file": "diff.h", - "line": 909, - "lineto": 911, + "file": "git2/deprecated.h", + "line": 374, + "lineto": 377, "args": [ + { "name": "out", "type": "git_buf *", "comment": null }, + { "name": "diff", "type": "git_diff *", "comment": null }, { - "name": "diff", - "type": "git_diff *", - "comment": "diff to run detection algorithms on" - }, - { - "name": "options", - "type": "const git_diff_find_options *", - "comment": "Control how detection should be run, NULL for defaults" + "name": "opts", + "type": "const git_diff_format_email_options *", + "comment": null } ], - "argline": "git_diff *diff, const git_diff_find_options *options", - "sig": "git_diff *::const git_diff_find_options *", - "return": { - "type": "int", - "comment": " 0 on success, -1 on failure" - }, - "description": "Transform a diff marking file renames, copies, etc.
\n", - "comments": "This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.
\n", - "group": "diff", - "examples": { - "diff.c": [ - "ex/HEAD/diff.html#git_diff_find_similar-8" - ] - } + "argline": "git_buf *out, git_diff *diff, const git_diff_format_email_options *opts", + "sig": "git_buf *::git_diff *::const git_diff_format_email_options *", + "return": { "type": "int", "comment": null }, + "description": "Create an e-mail ready patch from a diff.
\n", + "comments": "", + "group": "diff" }, - "git_diff_num_deltas": { + "git_diff_commit_as_email": { "type": "function", - "file": "diff.h", - "line": 929, - "lineto": 929, + "file": "git2/deprecated.h", + "line": 385, + "lineto": 392, "args": [ + { "name": "out", "type": "git_buf *", "comment": null }, + { "name": "repo", "type": "git_repository *", "comment": null }, + { "name": "commit", "type": "git_commit *", "comment": null }, + { "name": "patch_no", "type": "size_t", "comment": null }, + { "name": "total_patches", "type": "size_t", "comment": null }, + { "name": "flags", "type": "uint32_t", "comment": null }, { - "name": "diff", - "type": "const git_diff *", - "comment": "A git_diff generated by one of the above functions" + "name": "diff_opts", + "type": "const git_diff_options *", + "comment": null } ], - "argline": "const git_diff *diff", - "sig": "const git_diff *", - "return": { - "type": "size_t", - "comment": " Count of number of deltas in the list" - }, - "description": "Query how many diff records are there in a diff.
\n", + "argline": "git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, uint32_t flags, const git_diff_options *diff_opts", + "sig": "git_buf *::git_repository *::git_commit *::size_t::size_t::uint32_t::const git_diff_options *", + "return": { "type": "int", "comment": null }, + "description": "Create an e-mail ready patch for a commit.
\n", "comments": "", - "group": "diff", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_diff_num_deltas-28" - ] - } + "group": "diff" }, - "git_diff_num_deltas_of_type": { + "git_diff_format_email_options_init": { "type": "function", - "file": "diff.h", - "line": 942, - "lineto": 943, + "file": "git2/deprecated.h", + "line": 404, + "lineto": 406, "args": [ { - "name": "diff", - "type": "const git_diff *", - "comment": "A git_diff generated by one of the above functions" + "name": "opts", + "type": "git_diff_format_email_options *", + "comment": "The `git_blame_options` struct to initialize." }, { - "name": "type", - "type": "git_delta_t", - "comment": "A git_delta_t value to filter the count" + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`." } ], - "argline": "const git_diff *diff, git_delta_t type", - "sig": "const git_diff *::git_delta_t", + "argline": "git_diff_format_email_options *opts, unsigned int version", + "sig": "git_diff_format_email_options *::unsigned int", "return": { - "type": "size_t", - "comment": " Count of number of deltas matching delta_t type" + "type": "int", + "comment": " Zero on success; -1 on failure." }, - "description": "Query how many diff deltas are there in a diff filtered by type.
\n", - "comments": "This works just like git_diff_entrycount() with an extra parameter that is a git_delta_t and returns just the count of how many deltas match that particular type.
Initialize git_diff_format_email_options structure
\n", + "comments": "Initializes a git_diff_format_email_options with default values. Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.
Return the last git_error object that was generated for the\n current thread. This is an alias of git_error_last and is\n preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "giterr" + }, + "giterr_clear": { + "type": "function", + "file": "git2/deprecated.h", + "line": 515, + "lineto": 515, + "args": [], + "argline": "", + "sig": "", + "return": { "type": "void", "comment": null }, + "description": "Clear the last error. This is an alias of git_error_last and is\n preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "giterr" + }, + "giterr_set_str": { "type": "function", - "file": "diff.h", - "line": 962, - "lineto": 963, + "file": "git2/deprecated.h", + "line": 527, + "lineto": 527, + "args": [ + { "name": "error_class", "type": "int", "comment": null }, + { "name": "string", "type": "const char *", "comment": null } + ], + "argline": "int error_class, const char *string", + "sig": "int::const char *", + "return": { "type": "void", "comment": null }, + "description": "Sets the error message to the given string. This is an alias of\n git_error_set_str and is preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "giterr" + }, + "giterr_set_oom": { + "type": "function", + "file": "git2/deprecated.h", + "line": 539, + "lineto": 539, + "args": [], + "argline": "", + "sig": "", + "return": { "type": "void", "comment": null }, + "description": "Indicates that an out-of-memory situation occurred. This is an alias\n of git_error_set_oom and is preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "giterr" + }, + "git_object__size": { + "type": "function", + "file": "git2/deprecated.h", + "line": 666, + "lineto": 666, "args": [ { - "name": "diff", - "type": "const git_diff *", - "comment": "Diff list object" - }, - { - "name": "idx", - "type": "size_t", - "comment": "Index into diff list" + "name": "type", + "type": "git_object_t", + "comment": "object type to get its size" } ], - "argline": "const git_diff *diff, size_t idx", - "sig": "const git_diff *::size_t", - "return": { - "type": "const git_diff_delta *", - "comment": " Pointer to git_diff_delta (or NULL if `idx` out of range)" - }, - "description": "Return the diff delta for an entry in the diff list.
\n", - "comments": "The git_diff_delta pointer points to internal data and you do not have to release it when you are done with it. It will go away when the * git_diff (or any associated git_patch) goes away.
Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use git_diff_foreach or create a git_patch.
Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.
\n", + "comments": "For all the core types, this would the equivalent of calling sizeof(git_commit) if the core types were not opaque on the external API.
Check if deltas are sorted case sensitively or insensitively.
\n", + "description": "Ensure the remote name is well-formed.
\n", "comments": "", - "group": "diff" + "group": "remote" }, - "git_diff_foreach": { + "git_reference_is_valid_name": { "type": "function", - "file": "diff.h", - "line": 999, - "lineto": 1005, + "file": "git2/deprecated.h", + "line": 741, + "lineto": 741, "args": [ { - "name": "diff", - "type": "git_diff *", - "comment": "A git_diff generated by one of the above functions." - }, - { - "name": "file_cb", - "type": "git_diff_file_cb", - "comment": "Callback function to make per file in the diff." - }, - { - "name": "binary_cb", - "type": "git_diff_binary_cb", - "comment": "Optional callback to make for binary files." - }, - { - "name": "hunk_cb", - "type": "git_diff_hunk_cb", - "comment": "Optional callback to make per hunk of text diff. This\n callback is called to describe a range of lines in the\n diff. It will not be issued for binary files." - }, - { - "name": "line_cb", - "type": "git_diff_line_cb", - "comment": "Optional callback to make per line of diff text. This\n same callback will be made for context lines, added, and\n removed lines, and even for a deleted trailing newline." - }, - { - "name": "payload", - "type": "void *", - "comment": "Reference pointer that will be passed to your callbacks." + "name": "refname", + "type": "const char *", + "comment": "name to be checked." } ], - "argline": "git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload", - "sig": "git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *", + "argline": "const char *refname", + "sig": "const char *", "return": { "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" + "comment": " 1 if the reference name is acceptable; 0 if it isn't" }, - "description": "Loop over all deltas in a diff issuing callbacks.
\n", - "comments": "This will iterate through all of the files described in a diff. You should provide a file callback to learn about each file.
\n\nThe "hunk" and "line" callbacks are optional, and the text diff of the files will only be calculated if they are not NULL. Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.
\n\nReturning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.
\n", - "group": "diff" + "description": "Ensure the reference name is well-formed.
\n", + "comments": "Valid reference names must follow one of two patterns:
\n\nFree the memory referred to by the git_oidarray. This is an alias of\n git_oidarray_dispose and is preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "oidarray" + }, + "git_strarray_copy": { + "type": "function", + "file": "git2/deprecated.h", + "line": 991, + "lineto": 991, "args": [ - { - "name": "status", - "type": "git_delta_t", - "comment": "The git_delta_t value to look up" - } + { "name": "tgt", "type": "git_strarray *", "comment": "target" }, + { "name": "src", "type": "const git_strarray *", "comment": "source" } ], - "argline": "git_delta_t status", - "sig": "git_delta_t", + "argline": "git_strarray *tgt, const git_strarray *src", + "sig": "git_strarray *::const git_strarray *", "return": { - "type": "char", - "comment": " The single character label for that code" + "type": "int", + "comment": " 0 on success, \n<\n 0 on allocation failure" }, - "description": "Look up the single character abbreviation for a delta status code.
\n", - "comments": "When you run git diff --name-status it uses single letter codes in the output such as 'A' for added, 'D' for deleted, 'M' for modified, etc. This function converts a git_delta_t value into these letters for your own purposes. GIT_DELTA_UNTRACKED will return a space (i.e. ' ').
Copy a string array object from source to target.
\n", + "comments": "This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "strarray" }, - "git_diff_print": { + "git_strarray_free": { + "type": "function", + "file": "git2/deprecated.h", + "line": 1003, + "lineto": 1003, + "args": [{ "name": "array", "type": "git_strarray *", "comment": null }], + "argline": "git_strarray *array", + "sig": "git_strarray *", + "return": { "type": "void", "comment": null }, + "description": "Free the memory referred to by the git_strarray. This is an alias of\n git_strarray_dispose and is preserved for backward compatibility.
This function is deprecated, but there is no plan to remove this function at this time.
\n", + "group": "strarray" + }, + "git_blame_init_options": { + "type": "function", + "file": "git2/deprecated.h", + "line": 1035, + "lineto": 1035, + "args": [ + { "name": "opts", "type": "git_blame_options *", "comment": null }, + { "name": "version", "type": "unsigned int", "comment": null } + ], + "argline": "git_blame_options *opts, unsigned int version", + "sig": "git_blame_options *::unsigned int", + "return": { "type": "int", "comment": null }, + "description": "", + "comments": "These functions are retained for backward compatibility. The newer versions of these functions should be preferred in all new code.
\n\nThere is no plan to remove these backward compatibility functions at this time.
\n\n@{
\n", + "group": "blame" + }, + "git_describe_options_init": { "type": "function", - "file": "diff.h", - "line": 1043, - "lineto": 1047, + "file": "git2/describe.h", + "line": 91, + "lineto": 91, "args": [ { - "name": "diff", - "type": "git_diff *", - "comment": "A git_diff generated by one of the above functions." + "name": "opts", + "type": "git_describe_options *", + "comment": "The `git_describe_options` struct to initialize." }, { - "name": "format", - "type": "git_diff_format_t", - "comment": "A git_diff_format_t value to pick the text format." - }, + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_DESCRIBE_OPTIONS_VERSION`." + } + ], + "argline": "git_describe_options *opts, unsigned int version", + "sig": "git_describe_options *::unsigned int", + "return": { + "type": "int", + "comment": " Zero on success; -1 on failure." + }, + "description": "Initialize git_describe_options structure
\n", + "comments": "Initializes a git_describe_options with default values. Equivalent to creating an instance with GIT_DESCRIBE_OPTIONS_INIT.
Iterate over a diff generating formatted text output.
\n", - "comments": "Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.
\n", - "group": "diff", + "description": "Initialize git_describe_format_options structure
\n", + "comments": "Initializes a git_describe_format_options with default values. Equivalent to creating an instance with GIT_DESCRIBE_FORMAT_OPTIONS_INIT.
Describe a commit
\n", + "comments": "Perform the describe operation on the given committish object.
\n", + "group": "describe", + "examples": { + "describe.c": ["ex/v1.9.1/describe.html#git_describe_commit-3"] + } + }, + "git_describe_workdir": { + "type": "function", + "file": "git2/describe.h", + "line": 177, + "lineto": 180, + "args": [ { - "name": "new_as_path", - "type": "const char *", - "comment": "Treat new blob as if it had this filename; can be NULL" + "name": "out", + "type": "git_describe_result **", + "comment": "pointer to store the result. You must free this once\n you're done with it." }, { - "name": "options", - "type": "const git_diff_options *", - "comment": "Options for diff, or NULL for default options" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to perform the describe" }, { - "name": "file_cb", - "type": "git_diff_file_cb", - "comment": "Callback for \"file\"; made once if there is a diff; can be NULL" - }, + "name": "opts", + "type": "git_describe_options *", + "comment": "the lookup options (or NULL for defaults)" + } + ], + "argline": "git_describe_result **out, git_repository *repo, git_describe_options *opts", + "sig": "git_describe_result **::git_repository *::git_describe_options *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Describe a commit
\n", + "comments": "Perform the describe operation on the current commit and the worktree. After performing describe on HEAD, a status is run and the description is considered to be dirty if there are.
\n", + "group": "describe", + "examples": { + "describe.c": ["ex/v1.9.1/describe.html#git_describe_workdir-4"] + } + }, + "git_describe_format": { + "type": "function", + "file": "git2/describe.h", + "line": 191, + "lineto": 194, + "args": [ { - "name": "binary_cb", - "type": "git_diff_binary_cb", - "comment": "Callback for binary files; can be NULL" + "name": "out", + "type": "git_buf *", + "comment": "The buffer to store the result" }, { - "name": "hunk_cb", - "type": "git_diff_hunk_cb", - "comment": "Callback for each hunk in diff; can be NULL" + "name": "result", + "type": "const git_describe_result *", + "comment": "the result from `git_describe_commit()` or\n `git_describe_workdir()`." }, { - "name": "line_cb", - "type": "git_diff_line_cb", - "comment": "Callback for each line in diff; can be NULL" - }, + "name": "opts", + "type": "const git_describe_format_options *", + "comment": "the formatting options (or NULL for defaults)" + } + ], + "argline": "git_buf *out, const git_describe_result *result, const git_describe_format_options *opts", + "sig": "git_buf *::const git_describe_result *::const git_describe_format_options *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Print the describe result to a buffer
\n", + "comments": "", + "group": "describe", + "examples": { + "describe.c": ["ex/v1.9.1/describe.html#git_describe_format-5"] + } + }, + "git_describe_result_free": { + "type": "function", + "file": "git2/describe.h", + "line": 201, + "lineto": 201, + "args": [ { - "name": "payload", - "type": "void *", - "comment": "Payload passed to each callback function" + "name": "result", + "type": "git_describe_result *", + "comment": "The result to free." } ], - "argline": "const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload", - "sig": "const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" - }, - "description": "Directly run a diff on two blobs.
\n", - "comments": "Compared to a file, a blob lacks some contextual information. As such, the git_diff_file given to the callback will have some fake data; i.e. mode will be 0 and path will be NULL.
NULL is allowed for either old_blob or new_blob and will be treated as an empty blob, with the oid set to NULL in the git_diff_file data. Passing NULL for both blobs is a noop; no callbacks will be made at all.
We do run a binary content check on the blob content and if either blob looks like binary data, the git_diff_delta binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass GIT_DIFF_FORCE_TEXT of course).
Free the describe result.
\n", + "comments": "", + "group": "describe" }, - "git_diff_blob_to_buffer": { + "git_diff_options_init": { "type": "function", - "file": "diff.h", - "line": 1121, - "lineto": 1132, + "file": "git2/diff.h", + "line": 492, + "lineto": 494, "args": [ { - "name": "old_blob", - "type": "const git_blob *", - "comment": "Blob for old side of diff, or NULL for empty blob" + "name": "opts", + "type": "git_diff_options *", + "comment": "The `git_diff_options` struct to initialize." }, { - "name": "old_as_path", - "type": "const char *", - "comment": "Treat old blob as if it had this filename; can be NULL" - }, - { - "name": "buffer", - "type": "const char *", - "comment": "Raw data for new side of diff, or NULL for empty" - }, - { - "name": "buffer_len", - "type": "size_t", - "comment": "Length of raw data for new side of diff" - }, - { - "name": "buffer_as_path", - "type": "const char *", - "comment": "Treat buffer as if it had this filename; can be NULL" - }, - { - "name": "options", - "type": "const git_diff_options *", - "comment": "Options for diff, or NULL for default options" - }, - { - "name": "file_cb", - "type": "git_diff_file_cb", - "comment": "Callback for \"file\"; made once if there is a diff; can be NULL" - }, - { - "name": "binary_cb", - "type": "git_diff_binary_cb", - "comment": "Callback for binary files; can be NULL" - }, - { - "name": "hunk_cb", - "type": "git_diff_hunk_cb", - "comment": "Callback for each hunk in diff; can be NULL" - }, - { - "name": "line_cb", - "type": "git_diff_line_cb", - "comment": "Callback for each line in diff; can be NULL" - }, - { - "name": "payload", - "type": "void *", - "comment": "Payload passed to each callback function" + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_DIFF_OPTIONS_VERSION`." } ], - "argline": "const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload", - "sig": "const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *", + "argline": "git_diff_options *opts, unsigned int version", + "sig": "git_diff_options *::unsigned int", "return": { "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" + "comment": " Zero on success; -1 on failure." }, - "description": "Directly run a diff between a blob and a buffer.
\n", - "comments": "As with git_diff_blobs, comparing a blob and buffer lacks some context, so the git_diff_file parameters to the callbacks will be faked a la the rules for git_diff_blobs().
Passing NULL for old_blob will be treated as an empty blob (i.e. the file_cb will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added). Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.
Initialize git_diff_options structure
\n", + "comments": "Initializes a git_diff_options with default values. Equivalent to creating an instance with GIT_DIFF_OPTIONS_INIT.
Directly run a diff between two buffers.
\n", - "comments": "Even more than with git_diff_blobs, comparing two buffer lacks context, so the git_diff_file parameters to the callbacks will be faked a la the rules for git_diff_blobs().
Initialize git_diff_find_options structure
\n", + "comments": "Initializes a git_diff_find_options with default values. Equivalent to creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.
Accumulate diff statistics for all patches.
\n", + "argline": "git_diff *diff", + "sig": "git_diff *", + "return": { "type": "void", "comment": null }, + "description": "Deallocate a diff.
\n", "comments": "", "group": "diff", "examples": { - "diff.c": [ - "ex/HEAD/diff.html#git_diff_get_stats-10" + "diff.c": ["ex/v1.9.1/diff.html#git_diff_free-3"], + "log.c": [ + "ex/v1.9.1/log.html#git_diff_free-25", + "ex/v1.9.1/log.html#git_diff_free-26" ] } }, - "git_diff_stats_files_changed": { - "type": "function", - "file": "diff.h", - "line": 1213, - "lineto": 1214, - "args": [ - { - "name": "stats", - "type": "const git_diff_stats *", - "comment": "A `git_diff_stats` generated by one of the above functions." - } - ], - "argline": "const git_diff_stats *stats", - "sig": "const git_diff_stats *", - "return": { - "type": "size_t", - "comment": " total number of files changed in the diff" - }, - "description": "Get the total number of files changed in a diff
\n", - "comments": "", - "group": "diff" - }, - "git_diff_stats_insertions": { - "type": "function", - "file": "diff.h", - "line": 1222, - "lineto": 1223, - "args": [ - { - "name": "stats", - "type": "const git_diff_stats *", - "comment": "A `git_diff_stats` generated by one of the above functions." - } - ], - "argline": "const git_diff_stats *stats", - "sig": "const git_diff_stats *", - "return": { - "type": "size_t", - "comment": " total number of insertions in the diff" - }, - "description": "Get the total number of insertions in a diff
\n", - "comments": "", - "group": "diff" - }, - "git_diff_stats_deletions": { + "git_diff_tree_to_tree": { "type": "function", - "file": "diff.h", - "line": 1231, - "lineto": 1232, + "file": "git2/diff.h", + "line": 881, + "lineto": 886, "args": [ { - "name": "stats", - "type": "const git_diff_stats *", - "comment": "A `git_diff_stats` generated by one of the above functions." - } - ], - "argline": "const git_diff_stats *stats", - "sig": "const git_diff_stats *", - "return": { - "type": "size_t", - "comment": " total number of deletions in the diff" - }, - "description": "Get the total number of deletions in a diff
\n", - "comments": "", - "group": "diff" - }, - "git_diff_stats_to_buf": { - "type": "function", - "file": "diff.h", - "line": 1243, - "lineto": 1247, - "args": [ + "name": "diff", + "type": "git_diff **", + "comment": "Output pointer to a git_diff pointer to be allocated." + }, { - "name": "out", - "type": "git_buf *", - "comment": "buffer to store the formatted diff statistics in." + "name": "repo", + "type": "git_repository *", + "comment": "The repository containing the trees." }, { - "name": "stats", - "type": "const git_diff_stats *", - "comment": "A `git_diff_stats` generated by one of the above functions." + "name": "old_tree", + "type": "git_tree *", + "comment": "A git_tree object to diff from, or NULL for empty tree." }, { - "name": "format", - "type": "git_diff_stats_format_t", - "comment": "Formatting option." + "name": "new_tree", + "type": "git_tree *", + "comment": "A git_tree object to diff to, or NULL for empty tree." }, { - "name": "width", - "type": "size_t", - "comment": "Target width for output (only affects GIT_DIFF_STATS_FULL)" + "name": "opts", + "type": "const git_diff_options *", + "comment": "Structure with options to influence diff or NULL for defaults." } ], - "argline": "git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width", - "sig": "git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t", - "return": { - "type": "int", - "comment": " 0 on success; non-zero on error" - }, - "description": "Print diff statistics to a git_buf.
Create a diff with the difference between two tree objects.
\n", + "comments": "This is equivalent to git diff <old-tree> <new-tree>
The first tree will be used for the "old_file" side of the delta and the second tree will be used for the "new_file" side of the delta. You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the old_tree and new_tree.
Deallocate a git_diff_stats.
Create an e-mail ready patch from a diff.
\n", - "comments": "", - "group": "diff" + "argline": "git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts", + "sig": "git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Create a diff between a tree and repository index.
\n", + "comments": "This is equivalent to git diff --cached <treeish> or if you pass the HEAD tree, then like git diff --cached.
The tree you pass will be used for the "old_file" side of the delta, and the index will be used for the "new_file" side of the delta.
\n\nIf you pass NULL for the index, then the existing index of the repo will be used. In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.
Create an e-mail ready patch for a commit.
\n", - "comments": "Does not support creating patches for merge commits (yet).
\n", - "group": "diff" + "argline": "git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts", + "sig": "git_diff **::git_repository *::git_index *::const git_diff_options *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Create a diff between the repository index and the workdir directory.
\n", + "comments": "This matches the git diff command. See the note below on git_diff_tree_to_workdir for a discussion of the difference between git diff and git diff HEAD and how to emulate a git diff <treeish> using libgit2.
The index will be used for the "old_file" side of the delta, and the working directory will be used for the "new_file" side of the delta.
\n\nIf you pass NULL for the index, then the existing index of the repo will be used. In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.
Initializes a git_diff_format_email_options with default values.
Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.
\n", - "group": "diff" - }, - "giterr_last": { - "type": "function", - "file": "errors.h", - "line": 110, - "lineto": 110, - "args": [], - "argline": "", - "sig": "", - "return": { - "type": "const git_error *", - "comment": " A git_error object." - }, - "description": "Return the last git_error object that was generated for the\n current thread or NULL if no error has occurred.
Create a diff between a tree and the working directory.
\n", + "comments": "The tree you provide will be used for the "old_file" side of the delta, and the working directory will be used for the "new_file" side.
\n\nThis is not the same as git diff <treeish> or git diff-index <treeish>. Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index. Use git_diff_tree_to_workdir_with_index to emulate those commands.
To see difference between this and git_diff_tree_to_workdir_with_index, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified. The tree-to-workdir diff for that file is 'modified', but git diff would show status 'deleted' since there is a staged delete.
Clear the last library error that occurred for this thread.
\n", - "comments": "", - "group": "giterr" - }, - "giterr_set_str": { + "git_diff_tree_to_workdir_with_index": { "type": "function", - "file": "errors.h", - "line": 133, - "lineto": 133, + "file": "git2/diff.h", + "line": 986, + "lineto": 990, "args": [ { - "name": "error_class", - "type": "int", - "comment": "One of the `git_error_t` enum above describing the\n general subsystem that is responsible for the error." + "name": "diff", + "type": "git_diff **", + "comment": "A pointer to a git_diff pointer that will be allocated." }, { - "name": "string", - "type": "const char *", - "comment": "The formatted error message to keep" + "name": "repo", + "type": "git_repository *", + "comment": "The repository containing the tree." + }, + { + "name": "old_tree", + "type": "git_tree *", + "comment": "A git_tree object to diff from, or NULL for empty tree." + }, + { + "name": "opts", + "type": "const git_diff_options *", + "comment": "Structure with options to influence diff or NULL for defaults." } ], - "argline": "int error_class, const char *string", - "sig": "int::const char *", - "return": { - "type": "void", - "comment": null - }, - "description": "Set the error message string for this thread.
\n", - "comments": "This function is public so that custom ODB backends and the like can relay an error message through libgit2. Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.
\n\nThis error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.
\n", - "group": "giterr" - }, - "giterr_set_oom": { - "type": "function", - "file": "errors.h", - "line": 144, - "lineto": 144, - "args": [], - "argline": "", - "sig": "", - "return": { - "type": "void", - "comment": null - }, - "description": "Set the error message to a special value for memory allocation failure.
\n", - "comments": "The normal giterr_set_str() function attempts to strdup() the string that is passed in. This is not a good idea when the error in question is a memory allocation failure. That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.
Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.
\n", + "comments": "This emulates git diff <tree> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.
Load the filter list for a given path.
\n", - "comments": "This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.
\n", - "group": "filter" + "argline": "git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts", + "sig": "git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Create a diff with the difference between two index objects.
\n", + "comments": "The first index will be used for the "old_file" side of the delta and the second index will be used for the "new_file" side of the delta.
\n", + "group": "diff" }, - "git_filter_list_contains": { + "git_diff_merge": { "type": "function", - "file": "filter.h", - "line": 110, - "lineto": 112, + "file": "git2/diff.h", + "line": 1026, + "lineto": 1028, "args": [ { - "name": "filters", - "type": "git_filter_list *", - "comment": "A loaded git_filter_list (or NULL)" + "name": "onto", + "type": "git_diff *", + "comment": "Diff to merge into." }, { - "name": "name", - "type": "const char *", - "comment": "The name of the filter to query" - } - ], - "argline": "git_filter_list *filters, const char *name", - "sig": "git_filter_list *::const char *", - "return": { - "type": "int", - "comment": " 1 if the filter is in the list, 0 otherwise" - }, - "description": "Query the filter list to see if a given filter (by name) will run.\n The built-in filters "crlf" and "ident" can be queried, otherwise this\n is the name of the filter specified by the filter attribute.
\n", - "comments": "This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.
\n", - "group": "filter" + "name": "from", + "type": "const git_diff *", + "comment": "Diff to merge." + } + ], + "argline": "git_diff *onto, const git_diff *from", + "sig": "git_diff *::const git_diff *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Merge one diff into another.
\n", + "comments": "This merges items from the "from" list into the "onto" list. The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be "merged" to appear as if the old version was from the "onto" list and the new version is from the "from" list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).
\n", + "group": "diff" }, - "git_filter_list_apply_to_data": { + "git_diff_find_similar": { "type": "function", - "file": "filter.h", - "line": 134, - "lineto": 137, + "file": "git2/diff.h", + "line": 1042, + "lineto": 1044, "args": [ { - "name": "out", - "type": "git_buf *", - "comment": "Buffer to store the result of the filtering" - }, - { - "name": "filters", - "type": "git_filter_list *", - "comment": "A loaded git_filter_list (or NULL)" + "name": "diff", + "type": "git_diff *", + "comment": "diff to run detection algorithms on" }, { - "name": "in", - "type": "git_buf *", - "comment": "Buffer containing the data to filter" + "name": "options", + "type": "const git_diff_find_options *", + "comment": "Control how detection should be run, NULL for defaults" } ], - "argline": "git_buf *out, git_filter_list *filters, git_buf *in", - "sig": "git_buf *::git_filter_list *::git_buf *", - "return": { - "type": "int", - "comment": " 0 on success, an error code otherwise" - }, - "description": "Apply filter list to a data buffer.
\n", - "comments": "See git2/buffer.h for background on git_buf objects.
If the in buffer holds data allocated by libgit2 (i.e. in->asize is not zero), then it will be overwritten when applying the filters. If not, then it will be left untouched.
If there are no filters to apply (or filters is NULL), then the out buffer will reference the in buffer data (with asize set to zero) instead of allocating data. This keeps allocations to a minimum, but it means you have to be careful about freeing the in data since out may be pointing to it!
Transform a diff marking file renames, copies, etc.
\n", + "comments": "This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.
\n", + "group": "diff", + "examples": { "diff.c": ["ex/v1.9.1/diff.html#git_diff_find_similar-9"] } }, - "git_filter_list_apply_to_file": { + "git_diff_num_deltas": { "type": "function", - "file": "filter.h", - "line": 148, - "lineto": 152, + "file": "git2/diff.h", + "line": 1062, + "lineto": 1062, "args": [ { - "name": "out", - "type": "git_buf *", - "comment": "buffer into which to store the filtered file" - }, - { - "name": "filters", - "type": "git_filter_list *", - "comment": "the list of filters to apply" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to perform the filtering" - }, - { - "name": "path", - "type": "const char *", - "comment": "the path of the file to filter, a relative path will be\n taken as relative to the workdir" + "name": "diff", + "type": "const git_diff *", + "comment": "A git_diff generated by one of the above functions" } ], - "argline": "git_buf *out, git_filter_list *filters, git_repository *repo, const char *path", - "sig": "git_buf *::git_filter_list *::git_repository *::const char *", + "argline": "const git_diff *diff", + "sig": "const git_diff *", "return": { - "type": "int", - "comment": null + "type": "size_t", + "comment": " Count of number of deltas in the list" }, - "description": "Apply a filter list to the contents of a file on disk
\n", + "description": "Query how many diff records are there in a diff.
\n", "comments": "", - "group": "filter" + "group": "diff", + "examples": { "log.c": ["ex/v1.9.1/log.html#git_diff_num_deltas-29"] } }, - "git_filter_list_apply_to_blob": { + "git_diff_num_deltas_of_type": { "type": "function", - "file": "filter.h", - "line": 161, - "lineto": 164, + "file": "git2/diff.h", + "line": 1075, + "lineto": 1076, "args": [ { - "name": "out", - "type": "git_buf *", - "comment": "buffer into which to store the filtered file" - }, - { - "name": "filters", - "type": "git_filter_list *", - "comment": "the list of filters to apply" + "name": "diff", + "type": "const git_diff *", + "comment": "A git_diff generated by one of the above functions" }, { - "name": "blob", - "type": "git_blob *", - "comment": "the blob to filter" + "name": "type", + "type": "git_delta_t", + "comment": "A git_delta_t value to filter the count" } ], - "argline": "git_buf *out, git_filter_list *filters, git_blob *blob", - "sig": "git_buf *::git_filter_list *::git_blob *", + "argline": "const git_diff *diff, git_delta_t type", + "sig": "const git_diff *::git_delta_t", "return": { - "type": "int", - "comment": null + "type": "size_t", + "comment": " Count of number of deltas matching delta_t type" }, - "description": "Apply a filter list to the contents of a blob
\n", - "comments": "", - "group": "filter" + "description": "Query how many diff deltas are there in a diff filtered by type.
\n", + "comments": "This works just like git_diff_num_deltas() with an extra parameter that is a git_delta_t and returns just the count of how many deltas match that particular type.
Apply a filter list to an arbitrary buffer as a stream
\n", - "comments": "", - "group": "filter" + "description": "Return the diff delta for an entry in the diff list.
\n", + "comments": "The git_diff_delta pointer points to internal data and you do not have to release it when you are done with it. It will go away when the * git_diff (or any associated git_patch) goes away.
Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use git_diff_foreach or create a git_patch.
Apply a filter list to a file as a stream
\n", + "description": "Check if deltas are sorted case sensitively or insensitively.
\n", "comments": "", - "group": "filter" + "group": "diff" }, - "git_filter_list_stream_blob": { + "git_diff_foreach": { "type": "function", - "file": "filter.h", - "line": 200, - "lineto": 203, + "file": "git2/diff.h", + "line": 1132, + "lineto": 1138, "args": [ { - "name": "filters", - "type": "git_filter_list *", - "comment": "the list of filters to apply" + "name": "diff", + "type": "git_diff *", + "comment": "A git_diff generated by one of the above functions." }, { - "name": "blob", - "type": "git_blob *", - "comment": "the blob to filter" + "name": "file_cb", + "type": "git_diff_file_cb", + "comment": "Callback function to make per file in the diff." }, { - "name": "target", - "type": "git_writestream *", - "comment": "the stream into which the data will be written" + "name": "binary_cb", + "type": "git_diff_binary_cb", + "comment": "Optional callback to make for binary files." + }, + { + "name": "hunk_cb", + "type": "git_diff_hunk_cb", + "comment": "Optional callback to make per hunk of text diff. This\n callback is called to describe a range of lines in the\n diff. It will not be issued for binary files." + }, + { + "name": "line_cb", + "type": "git_diff_line_cb", + "comment": "Optional callback to make per line of diff text. This\n same callback will be made for context lines, added, and\n removed lines, and even for a deleted trailing newline." + }, + { + "name": "payload", + "type": "void *", + "comment": "Reference pointer that will be passed to your callbacks." } ], - "argline": "git_filter_list *filters, git_blob *blob, git_writestream *target", - "sig": "git_filter_list *::git_blob *::git_writestream *", + "argline": "git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload", + "sig": "git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Apply a filter list to a blob as a stream
\n", - "comments": "", - "group": "filter" + "description": "Loop over all deltas in a diff issuing callbacks.
\n", + "comments": "This will iterate through all of the files described in a diff. You should provide a file callback to learn about each file.
\n\nThe "hunk" and "line" callbacks are optional, and the text diff of the files will only be calculated if they are not NULL. Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.
\n\nReturning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.
\n", + "group": "diff" }, - "git_filter_list_free": { + "git_diff_status_char": { "type": "function", - "file": "filter.h", - "line": 210, - "lineto": 210, + "file": "git2/diff.h", + "line": 1151, + "lineto": 1151, "args": [ { - "name": "filters", - "type": "git_filter_list *", - "comment": "A git_filter_list created by `git_filter_list_load`" + "name": "status", + "type": "git_delta_t", + "comment": "The git_delta_t value to look up" } ], - "argline": "git_filter_list *filters", - "sig": "git_filter_list *", + "argline": "git_delta_t status", + "sig": "git_delta_t", "return": { - "type": "void", - "comment": null + "type": "char", + "comment": " The single character label for that code" }, - "description": "Free a git_filter_list
\n", - "comments": "", - "group": "filter" - }, - "git_libgit2_init": { - "type": "function", - "file": "global.h", - "line": 26, - "lineto": 26, - "args": [], - "argline": "", - "sig": "", - "return": { - "type": "int", - "comment": " the number of initializations of the library, or an error code." - }, - "description": "Init the global state
\n", - "comments": "This function must the called before any other libgit2 function in order to set up global state and threading.
\n\nThis function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.
\n", - "group": "libgit2", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_libgit2_init-8" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_libgit2_init-10" - ], - "describe.c": [ - "ex/HEAD/describe.html#git_libgit2_init-4" - ], - "diff.c": [ - "ex/HEAD/diff.html#git_libgit2_init-13" - ], - "general.c": [ - "ex/HEAD/general.html#git_libgit2_init-28" - ], - "init.c": [ - "ex/HEAD/init.html#git_libgit2_init-2" - ], - "log.c": [ - "ex/HEAD/log.html#git_libgit2_init-30" - ], - "network/git2.c": [ - "ex/HEAD/network/git2.html#git_libgit2_init-3" - ], - "remote.c": [ - "ex/HEAD/remote.html#git_libgit2_init-2" - ], - "rev-parse.c": [ - "ex/HEAD/rev-parse.html#git_libgit2_init-1" - ], - "status.c": [ - "ex/HEAD/status.html#git_libgit2_init-1" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_libgit2_init-3" - ] - } - }, - "git_libgit2_shutdown": { - "type": "function", - "file": "global.h", - "line": 39, - "lineto": 39, - "args": [], - "argline": "", - "sig": "", - "return": { - "type": "int", - "comment": " the number of remaining initializations of the library, or an\n error code." - }, - "description": "Shutdown the global state
\n", - "comments": "Clean up the global state and threading context after calling it as many times as git_libgit2_init() was called - it will return the number of remainining initializations that have not been shutdown (after this one).
Look up the single character abbreviation for a delta status code.
\n", + "comments": "When you run git diff --name-status it uses single letter codes in the output such as 'A' for added, 'D' for deleted, 'M' for modified, etc. This function converts a git_delta_t value into these letters for your own purposes. GIT_DELTA_UNTRACKED will return a space (i.e. ' ').
Count the number of unique commits between two commit objects
\n", - "comments": "There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the ahead and behind values will be what git would report for the branches.
Iterate over a diff generating formatted text output.
\n", + "comments": "Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.
\n", + "group": "diff", + "examples": { + "diff.c": ["ex/v1.9.1/diff.html#git_diff_print-10"], + "log.c": ["ex/v1.9.1/log.html#git_diff_print-30"] + } }, - "git_graph_descendant_of": { + "git_diff_to_buf": { "type": "function", - "file": "graph.h", - "line": 48, - "lineto": 51, + "file": "git2/diff.h", + "line": 1193, + "lineto": 1196, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": null + "name": "out", + "type": "git_buf *", + "comment": "A pointer to a user-allocated git_buf that will\n contain the diff text" }, { - "name": "commit", - "type": "const git_oid *", - "comment": "a previously loaded commit." + "name": "diff", + "type": "git_diff *", + "comment": "A git_diff generated by one of the above functions." }, { - "name": "ancestor", - "type": "const git_oid *", - "comment": "a potential ancestor commit." + "name": "format", + "type": "git_diff_format_t", + "comment": "A git_diff_format_t value to pick the text format." } ], - "argline": "git_repository *repo, const git_oid *commit, const git_oid *ancestor", - "sig": "git_repository *::const git_oid *::const git_oid *", - "return": { - "type": "int", - "comment": " 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise." - }, - "description": "Determine if a commit is the descendant of another commit.
\n", + "argline": "git_buf *out, git_diff *diff, git_diff_format_t format", + "sig": "git_buf *::git_diff *::git_diff_format_t", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Produce the complete formatted text output from a diff into a\n buffer.
\n", "comments": "", - "group": "graph" + "group": "diff" }, - "git_ignore_add_rule": { + "git_diff_blobs": { "type": "function", - "file": "ignore.h", - "line": 37, - "lineto": 39, + "file": "git2/diff.h", + "line": 1232, + "lineto": 1242, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "The repository to add ignore rules to." + "name": "old_blob", + "type": "const git_blob *", + "comment": "Blob for old side of diff, or NULL for empty blob" }, { - "name": "rules", + "name": "old_as_path", "type": "const char *", - "comment": "Text of rules, a la the contents of a .gitignore file.\n It is okay to have multiple rules in the text; if so,\n each rule should be terminated with a newline." - } - ], - "argline": "git_repository *repo, const char *rules", - "sig": "git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 on success" - }, - "description": "Add ignore rules for a repository.
\n", - "comments": "Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a "core.excludesfile" config value is set. The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist. This function allows you to add to that internal rules list.
\n\nExample usage:
\n\n error = git_ignore_add_rule(myrepo, "*.c/ with space");\n\n\nThis would add three rules to the ignores.
\n", - "group": "ignore" - }, - "git_ignore_clear_internal_rules": { - "type": "function", - "file": "ignore.h", - "line": 52, - "lineto": 53, - "args": [ + "comment": "Treat old blob as if it had this filename; can be NULL" + }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository to remove ignore rules from." + "name": "new_blob", + "type": "const git_blob *", + "comment": "Blob for new side of diff, or NULL for empty blob" + }, + { + "name": "new_as_path", + "type": "const char *", + "comment": "Treat new blob as if it had this filename; can be NULL" + }, + { + "name": "options", + "type": "const git_diff_options *", + "comment": "Options for diff, or NULL for default options" + }, + { + "name": "file_cb", + "type": "git_diff_file_cb", + "comment": "Callback for \"file\"; made once if there is a diff; can be NULL" + }, + { + "name": "binary_cb", + "type": "git_diff_binary_cb", + "comment": "Callback for binary files; can be NULL" + }, + { + "name": "hunk_cb", + "type": "git_diff_hunk_cb", + "comment": "Callback for each hunk in diff; can be NULL" + }, + { + "name": "line_cb", + "type": "git_diff_line_cb", + "comment": "Callback for each line in diff; can be NULL" + }, + { + "name": "payload", + "type": "void *", + "comment": "Payload passed to each callback function" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", + "argline": "const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload", + "sig": "const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *", "return": { "type": "int", - "comment": " 0 on success" + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Clear ignore rules that were explicitly added.
\n", - "comments": "Resets to the default internal ignore rules. This will not turn off rules in .gitignore files that actually exist in the filesystem.
\n\nThe default internal ignores ignore ".", ".." and ".git" entries.
\n", - "group": "ignore" + "description": "Directly run a diff on two blobs.
\n", + "comments": "Compared to a file, a blob lacks some contextual information. As such, the git_diff_file given to the callback will have some fake data; i.e. mode will be 0 and path will be NULL.
NULL is allowed for either old_blob or new_blob and will be treated as an empty blob, with the oid set to NULL in the git_diff_file data. Passing NULL for both blobs is a noop; no callbacks will be made at all.
We do run a binary content check on the blob content and if either blob looks like binary data, the git_diff_delta binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass GIT_DIFF_FORCE_TEXT of course).
Test if the ignore rules apply to a given path.
\n", - "comments": "This function checks the ignore rules to see if they would apply to the given file. This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.
\n\nOne way to think of this is if you were to do "git add ." on the directory containing the file, would it be added or not?
\n", - "group": "ignore" - }, - "git_index_open": { - "type": "function", - "file": "index.h", - "line": 203, - "lineto": 203, - "args": [ + "comment": "Raw data for new side of diff, or NULL for empty" + }, { - "name": "out", - "type": "git_index **", - "comment": "the pointer for the new index" + "name": "buffer_len", + "type": "size_t", + "comment": "Length of raw data for new side of diff" }, { - "name": "index_path", + "name": "buffer_as_path", "type": "const char *", - "comment": "the path to the index file in disk" + "comment": "Treat buffer as if it had this filename; can be NULL" + }, + { + "name": "options", + "type": "const git_diff_options *", + "comment": "Options for diff, or NULL for default options" + }, + { + "name": "file_cb", + "type": "git_diff_file_cb", + "comment": "Callback for \"file\"; made once if there is a diff; can be NULL" + }, + { + "name": "binary_cb", + "type": "git_diff_binary_cb", + "comment": "Callback for binary files; can be NULL" + }, + { + "name": "hunk_cb", + "type": "git_diff_hunk_cb", + "comment": "Callback for each hunk in diff; can be NULL" + }, + { + "name": "line_cb", + "type": "git_diff_line_cb", + "comment": "Callback for each line in diff; can be NULL" + }, + { + "name": "payload", + "type": "void *", + "comment": "Payload passed to each callback function" } ], - "argline": "git_index **out, const char *index_path", - "sig": "git_index **::const char *", + "argline": "const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload", + "sig": "const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Create a new bare Git index object as a memory representation\n of the Git index file in 'index_path', without a repository\n to back it.
\n", - "comments": "Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.
\n\nIf you need to access the index of an actual repository, use the git_repository_index wrapper.
The index must be freed once it's no longer in use.
\n", - "group": "index" + "description": "Directly run a diff between a blob and a buffer.
\n", + "comments": "As with git_diff_blobs, comparing a blob and buffer lacks some context, so the git_diff_file parameters to the callbacks will be faked a la the rules for git_diff_blobs().
Passing NULL for old_blob will be treated as an empty blob (i.e. the file_cb will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added). Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.
Create an in-memory index object.
\n", - "comments": "This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.
\n\nThe index must be freed once it's no longer in use.
\n", - "group": "index" + "description": "Directly run a diff between two buffers.
\n", + "comments": "Even more than with git_diff_blobs, comparing two buffer lacks context, so the git_diff_file parameters to the callbacks will be faked a la the rules for git_diff_blobs().
Free an existing index object.
\n", - "comments": "", - "group": "index", + "argline": "git_diff **out, const char *content, size_t content_len", + "sig": "git_diff **::const char *::size_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Read the contents of a git patch file into a git_diff object.
The diff object produced is similar to the one that would be produced if you actually produced it computationally by comparing two trees, however there may be subtle differences. For example, a patch file likely contains abbreviated object IDs, so the object IDs in a git_diff_delta produced by this function will also be abbreviated.
This function will only read patch files created by a git implementation, it will not read unified diffs produced by the diff program, nor any other types of patch files.
Get the repository this index relates to
\n", + "description": "Accumulate diff statistics for all patches.
\n", "comments": "", - "group": "index" + "group": "diff", + "examples": { "diff.c": ["ex/v1.9.1/diff.html#git_diff_get_stats-13"] } }, - "git_index_caps": { + "git_diff_stats_files_changed": { "type": "function", - "file": "index.h", - "line": 239, - "lineto": 239, + "file": "git2/diff.h", + "line": 1408, + "lineto": 1409, "args": [ { - "name": "index", - "type": "const git_index *", - "comment": "An existing index object" + "name": "stats", + "type": "const git_diff_stats *", + "comment": "A `git_diff_stats` generated by one of the above functions." } ], - "argline": "const git_index *index", - "sig": "const git_index *", + "argline": "const git_diff_stats *stats", + "sig": "const git_diff_stats *", "return": { - "type": "int", - "comment": " A combination of GIT_INDEXCAP values" + "type": "size_t", + "comment": " total number of files changed in the diff" }, - "description": "Read index capabilities flags.
\n", + "description": "Get the total number of files changed in a diff
\n", "comments": "", - "group": "index" + "group": "diff" }, - "git_index_set_caps": { + "git_diff_stats_insertions": { "type": "function", - "file": "index.h", - "line": 252, - "lineto": 252, + "file": "git2/diff.h", + "line": 1417, + "lineto": 1418, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "An existing index object" - }, - { - "name": "caps", - "type": "int", - "comment": "A combination of GIT_INDEXCAP values" + "name": "stats", + "type": "const git_diff_stats *", + "comment": "A `git_diff_stats` generated by one of the above functions." } ], - "argline": "git_index *index, int caps", - "sig": "git_index *::int", + "argline": "const git_diff_stats *stats", + "sig": "const git_diff_stats *", "return": { - "type": "int", - "comment": " 0 on success, -1 on failure" + "type": "size_t", + "comment": " total number of insertions in the diff" }, - "description": "Set index capabilities flags.
\n", - "comments": "If you pass GIT_INDEXCAP_FROM_OWNER for the caps, then the capabilities will be read from the config of the owner object, looking at core.ignorecase, core.filemode, core.symlinks.
Get the total number of insertions in a diff
\n", + "comments": "", + "group": "diff" }, - "git_index_read": { + "git_diff_stats_deletions": { "type": "function", - "file": "index.h", - "line": 271, - "lineto": 271, + "file": "git2/diff.h", + "line": 1426, + "lineto": 1427, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" - }, - { - "name": "force", - "type": "int", - "comment": "if true, always reload, vs. only read if file has changed" + "name": "stats", + "type": "const git_diff_stats *", + "comment": "A `git_diff_stats` generated by one of the above functions." } ], - "argline": "git_index *index, int force", - "sig": "git_index *::int", + "argline": "const git_diff_stats *stats", + "sig": "const git_diff_stats *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "size_t", + "comment": " total number of deletions in the diff" }, - "description": "Update the contents of an existing index object in memory by reading\n from the hard disk.
\n", - "comments": "If force is true, this performs a "hard" read that discards in-memory changes and always reloads the on-disk index data. If there is no on-disk version, the index will be cleared.
If force is false, this does a "soft" read that reloads the index data from disk only if it has changed since the last time it was loaded. Purely in-memory index data will be untouched. Be aware: if there are changes on disk, unwritten in-memory changes are discarded.
Get the total number of deletions in a diff
\n", + "comments": "", + "group": "diff" }, - "git_index_write": { + "git_diff_stats_to_buf": { "type": "function", - "file": "index.h", - "line": 280, - "lineto": 280, + "file": "git2/diff.h", + "line": 1438, + "lineto": 1442, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "out", + "type": "git_buf *", + "comment": "buffer to store the formatted diff statistics in." + }, + { + "name": "stats", + "type": "const git_diff_stats *", + "comment": "A `git_diff_stats` generated by one of the above functions." + }, + { + "name": "format", + "type": "git_diff_stats_format_t", + "comment": "Formatting option." + }, + { + "name": "width", + "type": "size_t", + "comment": "Target width for output (only affects GIT_DIFF_STATS_FULL)" } ], - "argline": "git_index *index", - "sig": "git_index *", + "argline": "git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width", + "sig": "git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success; non-zero on error" }, - "description": "Write an existing index object from memory back to disk\n using an atomic file lock.
\n", + "description": "Print diff statistics to a git_buf.
Get the full path to the index file on disk.
\n", + "argline": "git_diff_stats *stats", + "sig": "git_diff_stats *", + "return": { "type": "void", "comment": null }, + "description": "Deallocate a git_diff_stats.
Get the checksum of the index
\n", - "comments": "This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.
\n", - "group": "index" + "description": "Initialize git_diff_patchid_options structure
\n", + "comments": "Initializes a git_diff_patchid_options with default values. Equivalent to creating an instance with GIT_DIFF_PATCHID_OPTIONS_INIT.
Read a tree into the index file with stats
\n", - "comments": "The current index contents will be replaced by the specified tree.
\n", - "group": "index" + "description": "Calculate the patch ID for the given patch.
\n", + "comments": "Calculate a stable patch ID for the given patch by summing the hash of the file diffs, ignoring whitespace and line numbers. This can be used to derive whether two diffs are the same with a high probability.
\n\nCurrently, this function only calculates stable patch IDs, as defined in git-patch-id(1), and should in fact generate the same IDs as the upstream git project does.
\n", + "group": "diff" }, - "git_index_write_tree": { + "git_email_create_from_commit": { "type": "function", - "file": "index.h", - "line": 332, - "lineto": 332, + "file": "git2/email.h", + "line": 99, + "lineto": 102, "args": [ { "name": "out", - "type": "git_oid *", - "comment": "Pointer where to store the OID of the written tree" + "type": "git_buf *", + "comment": "buffer to store the e-mail patch in" }, { - "name": "index", - "type": "git_index *", - "comment": "Index to write" + "name": "commit", + "type": "git_commit *", + "comment": "commit to create a patch for" + }, + { + "name": "opts", + "type": "const git_email_create_options *", + "comment": "email creation options" } ], - "argline": "git_oid *out, git_index *index", - "sig": "git_oid *::git_index *", + "argline": "git_buf *out, git_commit *commit, const git_email_create_options *opts", + "sig": "git_buf *::git_commit *::const git_email_create_options *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a diff for a commit in mbox format for sending via email.\n The commit must not be a merge commit.
\n", + "comments": "", + "group": "email" + }, + "git_error_last": { + "type": "function", + "file": "git2/errors.h", + "line": 149, + "lineto": 149, + "args": [], + "argline": "", + "sig": "", "return": { - "type": "int", - "comment": " 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code" + "type": "const git_error *", + "comment": " A pointer to a `git_error` object that describes the error." }, - "description": "Write the index as a tree
\n", - "comments": "This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.
\n\nThe index instance cannot be bare, and needs to be associated to an existing repository.
\n\nThe index must not contain any file in conflict.
\n", - "group": "index", + "description": "Return the last git_error object that was generated for the\n current thread.
This function will never return NULL.
\n\nCallers should not rely on this to determine whether an error has occurred. For error checking, callers should examine the return codes of libgit2 functions.
\n\nThis call can only reliably report error messages when an error has occurred. (It may contain stale information if it is called after a different function that succeeds.)
\n\nThe memory for this object is managed by libgit2. It should not be freed.
\n", + "group": "error", "examples": { - "init.c": [ - "ex/HEAD/init.html#git_index_write_tree-5" + "checkout.c": [ + "ex/v1.9.1/checkout.html#git_error_last-11", + "ex/v1.9.1/checkout.html#git_error_last-12", + "ex/v1.9.1/checkout.html#git_error_last-13", + "ex/v1.9.1/checkout.html#git_error_last-14" + ], + "commit.c": ["ex/v1.9.1/commit.html#git_error_last-2"], + "config.c": [ + "ex/v1.9.1/config.html#git_error_last-6", + "ex/v1.9.1/config.html#git_error_last-7", + "ex/v1.9.1/config.html#git_error_last-8" + ], + "general.c": ["ex/v1.9.1/general.html#git_error_last-33"], + "merge.c": [ + "ex/v1.9.1/merge.html#git_error_last-8", + "ex/v1.9.1/merge.html#git_error_last-9" ] } }, - "git_index_write_tree_to": { + "git_filter_list_load": { "type": "function", - "file": "index.h", - "line": 349, - "lineto": 349, + "file": "git2/filter.h", + "line": 138, + "lineto": 144, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "Pointer where to store OID of the the written tree" - }, - { - "name": "index", - "type": "git_index *", - "comment": "Index to write" + "name": "filters", + "type": "git_filter_list **", + "comment": "Output newly created git_filter_list (or NULL)" }, { "name": "repo", "type": "git_repository *", - "comment": "Repository where to write the tree" + "comment": "Repository object that contains `path`" + }, + { + "name": "blob", + "type": "git_blob *", + "comment": "The blob to which the filter will be applied (if known)" + }, + { + "name": "path", + "type": "const char *", + "comment": "Relative path of the file to be filtered" + }, + { + "name": "mode", + "type": "git_filter_mode_t", + "comment": "Filtering direction (WT->ODB or ODB->WT)" + }, + { + "name": "flags", + "type": "uint32_t", + "comment": "Combination of `git_filter_flag_t` flags" } ], - "argline": "git_oid *out, git_index *index, git_repository *repo", - "sig": "git_oid *::git_index *::git_repository *", + "argline": "git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags", + "sig": "git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t", "return": { "type": "int", - "comment": " 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code" + "comment": " 0 on success (which could still return NULL if no filters are\n needed for the requested file), \n<\n0 on error" }, - "description": "Write the index as a tree to the given repository
\n", - "comments": "This method will do the same as git_index_write_tree, but letting the user choose the repository where the tree will be written.
The index must not contain any file in conflict.
\n", - "group": "index" + "description": "Load the filter list for a given path.
\n", + "comments": "This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.
\n", + "group": "filter" }, - "git_index_entrycount": { + "git_filter_list_load_ext": { "type": "function", - "file": "index.h", - "line": 368, - "lineto": 368, + "file": "git2/filter.h", + "line": 161, + "lineto": 167, "args": [ { - "name": "index", - "type": "const git_index *", - "comment": "an existing index object" + "name": "filters", + "type": "git_filter_list **", + "comment": "Output newly created git_filter_list (or NULL)" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "Repository object that contains `path`" + }, + { + "name": "blob", + "type": "git_blob *", + "comment": "The blob to which the filter will be applied (if known)" + }, + { + "name": "path", + "type": "const char *", + "comment": "Relative path of the file to be filtered" + }, + { + "name": "mode", + "type": "git_filter_mode_t", + "comment": "Filtering direction (WT->ODB or ODB->WT)" + }, + { + "name": "opts", + "type": "git_filter_options *", + "comment": "The `git_filter_options` to use when loading filters" } ], - "argline": "const git_index *index", - "sig": "const git_index *", + "argline": "git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, git_filter_options *opts", + "sig": "git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::git_filter_options *", "return": { - "type": "size_t", - "comment": " integer of count of current entries" + "type": "int", + "comment": " 0 on success (which could still return NULL if no filters are\n needed for the requested file), \n<\n0 on error" }, - "description": "Get the count of entries currently in the index
\n", - "comments": "", - "group": "index", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_index_entrycount-30" - ] - } + "description": "Load the filter list for a given path.
\n", + "comments": "This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.
\n", + "group": "filter" }, - "git_index_clear": { + "git_filter_list_contains": { "type": "function", - "file": "index.h", - "line": 379, - "lineto": 379, + "file": "git2/filter.h", + "line": 181, + "lineto": 183, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "filters", + "type": "git_filter_list *", + "comment": "A loaded git_filter_list (or NULL)" + }, + { + "name": "name", + "type": "const char *", + "comment": "The name of the filter to query" } ], - "argline": "git_index *index", - "sig": "git_index *", + "argline": "git_filter_list *filters, const char *name", + "sig": "git_filter_list *::const char *", "return": { "type": "int", - "comment": " 0 on success, error code \n<\n 0 on failure" + "comment": " 1 if the filter is in the list, 0 otherwise" }, - "description": "Clear the contents (all the entries) of an index object.
\n", - "comments": "This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.
\n", - "group": "index" + "description": "Query the filter list to see if a given filter (by name) will run.\n The built-in filters "crlf" and "ident" can be queried, otherwise this\n is the name of the filter specified by the filter attribute.
\n", + "comments": "This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.
\n", + "group": "filter" }, - "git_index_get_byindex": { + "git_filter_list_apply_to_buffer": { "type": "function", - "file": "index.h", - "line": 392, - "lineto": 393, + "file": "git2/filter.h", + "line": 194, + "lineto": 198, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "out", + "type": "git_buf *", + "comment": "Buffer to store the result of the filtering" }, { - "name": "n", + "name": "filters", + "type": "git_filter_list *", + "comment": "A loaded git_filter_list (or NULL)" + }, + { + "name": "in", + "type": "const char *", + "comment": "Buffer containing the data to filter" + }, + { + "name": "in_len", "type": "size_t", - "comment": "the position of the entry" + "comment": "The length of the input buffer" } ], - "argline": "git_index *index, size_t n", - "sig": "git_index *::size_t", + "argline": "git_buf *out, git_filter_list *filters, const char *in, size_t in_len", + "sig": "git_buf *::git_filter_list *::const char *::size_t", "return": { - "type": "const git_index_entry *", - "comment": " a pointer to the entry; NULL if out of bounds" + "type": "int", + "comment": " 0 on success, an error code otherwise" }, - "description": "Get a pointer to one of the entries in the index
\n", - "comments": "The entry is not modifiable and should not be freed. Because the git_index_entry struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Apply filter list to a data buffer.
\n", + "comments": "", + "group": "filter" }, - "git_index_get_bypath": { + "git_filter_list_apply_to_file": { "type": "function", - "file": "index.h", - "line": 407, - "lineto": 408, + "file": "git2/filter.h", + "line": 210, + "lineto": 214, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "out", + "type": "git_buf *", + "comment": "buffer into which to store the filtered file" }, { - "name": "path", - "type": "const char *", - "comment": "path to search" + "name": "filters", + "type": "git_filter_list *", + "comment": "the list of filters to apply" }, { - "name": "stage", - "type": "int", - "comment": "stage to search" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to perform the filtering" + }, + { + "name": "path", + "type": "const char *", + "comment": "the path of the file to filter, a relative path will be\n taken as relative to the workdir" } ], - "argline": "git_index *index, const char *path, int stage", - "sig": "git_index *::const char *::int", - "return": { - "type": "const git_index_entry *", - "comment": " a pointer to the entry; NULL if it was not found" - }, - "description": "Get a pointer to one of the entries in the index
\n", - "comments": "The entry is not modifiable and should not be freed. Because the git_index_entry struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Apply a filter list to the contents of a file on disk
\n", + "comments": "", + "group": "filter" }, - "git_index_remove": { + "git_filter_list_apply_to_blob": { "type": "function", - "file": "index.h", - "line": 418, - "lineto": 418, + "file": "git2/filter.h", + "line": 224, + "lineto": 227, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "out", + "type": "git_buf *", + "comment": "buffer into which to store the filtered file" }, { - "name": "path", - "type": "const char *", - "comment": "path to search" + "name": "filters", + "type": "git_filter_list *", + "comment": "the list of filters to apply" }, { - "name": "stage", - "type": "int", - "comment": "stage to search" + "name": "blob", + "type": "git_blob *", + "comment": "the blob to filter" } ], - "argline": "git_index *index, const char *path, int stage", - "sig": "git_index *::const char *::int", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Remove an entry from the index
\n", + "argline": "git_buf *out, git_filter_list *filters, git_blob *blob", + "sig": "git_buf *::git_filter_list *::git_blob *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Apply a filter list to the contents of a blob
\n", "comments": "", - "group": "index" + "group": "filter" }, - "git_index_remove_directory": { + "git_filter_list_stream_buffer": { "type": "function", - "file": "index.h", - "line": 428, - "lineto": 429, + "file": "git2/filter.h", + "line": 238, + "lineto": 242, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "filters", + "type": "git_filter_list *", + "comment": "the list of filters to apply" }, { - "name": "dir", + "name": "buffer", "type": "const char *", - "comment": "container directory path" + "comment": "the buffer to filter" }, { - "name": "stage", - "type": "int", - "comment": "stage to search" + "name": "len", + "type": "size_t", + "comment": "the size of the buffer" + }, + { + "name": "target", + "type": "git_writestream *", + "comment": "the stream into which the data will be written" } ], - "argline": "git_index *index, const char *dir, int stage", - "sig": "git_index *::const char *::int", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Remove all entries from the index under a given directory
\n", + "argline": "git_filter_list *filters, const char *buffer, size_t len, git_writestream *target", + "sig": "git_filter_list *::const char *::size_t::git_writestream *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Apply a filter list to an arbitrary buffer as a stream
\n", "comments": "", - "group": "index" + "group": "filter" }, - "git_index_add": { + "git_filter_list_stream_file": { "type": "function", - "file": "index.h", - "line": 445, - "lineto": 445, + "file": "git2/filter.h", + "line": 254, + "lineto": 258, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "filters", + "type": "git_filter_list *", + "comment": "the list of filters to apply" }, { - "name": "source_entry", - "type": "const git_index_entry *", - "comment": "new entry object" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to perform the filtering" + }, + { + "name": "path", + "type": "const char *", + "comment": "the path of the file to filter, a relative path will be\n taken as relative to the workdir" + }, + { + "name": "target", + "type": "git_writestream *", + "comment": "the stream into which the data will be written" } ], - "argline": "git_index *index, const git_index_entry *source_entry", - "sig": "git_index *::const git_index_entry *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Add or update an index entry from an in-memory struct
\n", - "comments": "If a previous index entry exists that has the same path and stage as the given 'source_entry', it will be replaced. Otherwise, the 'source_entry' will be added.
\n\nA full copy (including the 'path' string) of the given 'source_entry' will be inserted on the index.
\n", - "group": "index" + "argline": "git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target", + "sig": "git_filter_list *::git_repository *::const char *::git_writestream *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Apply a filter list to a file as a stream
\n", + "comments": "", + "group": "filter" }, - "git_index_entry_stage": { + "git_filter_list_stream_blob": { "type": "function", - "file": "index.h", - "line": 457, - "lineto": 457, + "file": "git2/filter.h", + "line": 268, + "lineto": 271, "args": [ { - "name": "entry", - "type": "const git_index_entry *", - "comment": "The entry" + "name": "filters", + "type": "git_filter_list *", + "comment": "the list of filters to apply" + }, + { + "name": "blob", + "type": "git_blob *", + "comment": "the blob to filter" + }, + { + "name": "target", + "type": "git_writestream *", + "comment": "the stream into which the data will be written" } ], - "argline": "const git_index_entry *entry", - "sig": "const git_index_entry *", - "return": { - "type": "int", - "comment": " the stage number" - }, - "description": "Return the stage number from a git index entry
\n", - "comments": "This entry is calculated from the entry's flag attribute like this:
\n\n(entry->flags & GIT_IDXENTRY_STAGEMASK) >> GIT_IDXENTRY_STAGESHIFT\n\n",
- "group": "index"
+ "argline": "git_filter_list *filters, git_blob *blob, git_writestream *target",
+ "sig": "git_filter_list *::git_blob *::git_writestream *",
+ "return": { "type": "int", "comment": " 0 or an error code." },
+ "description": "Apply a filter list to a blob as a stream
\n", + "comments": "", + "group": "filter" }, - "git_index_entry_is_conflict": { + "git_filter_list_free": { "type": "function", - "file": "index.h", - "line": 466, - "lineto": 466, + "file": "git2/filter.h", + "line": 278, + "lineto": 278, "args": [ { - "name": "entry", - "type": "const git_index_entry *", - "comment": "The entry" + "name": "filters", + "type": "git_filter_list *", + "comment": "A git_filter_list created by `git_filter_list_load`" } ], - "argline": "const git_index_entry *entry", - "sig": "const git_index_entry *", + "argline": "git_filter_list *filters", + "sig": "git_filter_list *", + "return": { "type": "void", "comment": null }, + "description": "Free a git_filter_list
\n", + "comments": "", + "group": "filter" + }, + "git_libgit2_init": { + "type": "function", + "file": "git2/global.h", + "line": 32, + "lineto": 32, + "args": [], + "argline": "", + "sig": "", "return": { "type": "int", - "comment": " 1 if the entry is a conflict entry, 0 otherwise" + "comment": " the number of initializations of the library, or an error code." }, - "description": "Return whether the given index entry is a conflict (has a high stage\n entry). This is simply shorthand for git_index_entry_stage > 0.
Init the global state
\n", + "comments": "This function must be called before any other libgit2 function in order to set up global state and threading.
\n\nThis function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.
\n", + "group": "libgit2", + "examples": { + "general.c": ["ex/v1.9.1/general.html#git_libgit2_init-34"] + } }, - "git_index_add_bypath": { + "git_libgit2_shutdown": { "type": "function", - "file": "index.h", - "line": 497, - "lineto": 497, - "args": [ - { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" - }, - { - "name": "path", - "type": "const char *", - "comment": "filename to add" - } - ], - "argline": "git_index *index, const char *path", - "sig": "git_index *::const char *", + "file": "git2/global.h", + "line": 45, + "lineto": 45, + "args": [], + "argline": "", + "sig": "", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " the number of remaining initializations of the library, or an\n error code." }, - "description": "Add or update an index entry from a file on disk
\n", - "comments": "The file path must be relative to the repository's working folder and must be readable.
This method will fail in bare index instances.
\n\nThis forces the file to be added to the index, not looking at gitignore rules. Those rules can be evaluated through the git_status APIs (in status.h) before calling this.
\n\nIf this file currently is the result of a merge conflict, this file will no longer be marked as conflicting. The data about the conflict will be moved to the "resolve undo" (REUC) section.
\n", - "group": "index" + "description": "Shutdown the global state
\n", + "comments": "Clean up the global state and threading context after calling it as many times as git_libgit2_init() was called - it will return the number of remainining initializations that have not been shutdown (after this one).
Add or update an index entry from a buffer in memory
\n", - "comments": "This method will create a blob in the repository that owns the index and then add the index entry to the index. The path of the entry represents the position of the blob relative to the repository's root folder.
If a previous index entry exists that has the same path as the given 'entry', it will be replaced. Otherwise, the 'entry' will be added. The id and the file_size of the 'entry' are updated with the real value of the blob.
This forces the file to be added to the index, not looking at gitignore rules. Those rules can be evaluated through the git_status APIs (in status.h) before calling this.
\n\nIf this file currently is the result of a merge conflict, this file will no longer be marked as conflicting. The data about the conflict will be moved to the "resolve undo" (REUC) section.
\n", - "group": "index" + "argline": "size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream", + "sig": "size_t *::size_t *::git_repository *::const git_oid *::const git_oid *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Count the number of unique commits between two commit objects
\n", + "comments": "There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the ahead and behind values will be what git would report for the branches.
Remove an index entry corresponding to a file on disk
\n", - "comments": "The file path must be relative to the repository's working folder. It may exist.
If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting. The data about the conflict will be moved to the "resolve undo" (REUC) section.
\n", - "group": "index" + "description": "Determine if a commit is the descendant of another commit.
\n", + "comments": "Note that a commit is not considered a descendant of itself, in contrast to git merge-base --is-ancestor.
Add or update index entries matching files in the working directory.
\n", - "comments": "This method will fail in bare index instances.
\n\nThe pathspec is a list of file names or shell glob patterns that will matched against files in the repository's working directory. Each file that matches will be added to the index (either updating an existing entry or adding a new entry). You can disable glob expansion and force exact matching with the GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH flag.
Files that are ignored will be skipped (unlike git_index_add_bypath). If a file is already tracked in the index, then it will be updated even if it is ignored. Pass the GIT_INDEX_ADD_FORCE flag to skip the checking of ignore rules.
To emulate git add -A and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the GIT_INDEX_ADD_CHECK_PATHSPEC flag. This checks that each entry in the pathspec that is an exact match to a filename on disk is either not ignored or already in the index. If this check fails, the function will return GIT_EINVALIDSPEC.
To emulate git add -A with the "dry-run" option, just use a callback function that always returns a positive value. See below for details.
If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting. The data about the conflicts will be moved to the "resolve undo" (REUC) section.
\n\nIf you provide a callback function, it will be invoked on each matching item in the working directory immediately before it is added to / updated in the index. Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.
\n", - "group": "index" + "description": "Determine if a commit is reachable from any of a list of commits by\n following parent edges.
\n", + "comments": "", + "group": "graph" }, - "git_index_remove_all": { + "git_ignore_add_rule": { "type": "function", - "file": "index.h", - "line": 614, - "lineto": 618, + "file": "git2/ignore.h", + "line": 46, + "lineto": 48, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "An existing index object" - }, - { - "name": "pathspec", - "type": "const git_strarray *", - "comment": "array of path patterns" - }, - { - "name": "callback", - "type": "git_index_matched_path_cb", - "comment": "notification callback for each removed path (also\n gets index of matching pathspec entry); can be NULL;\n return 0 to add, >0 to skip, \n<\n0 to abort scan." + "name": "repo", + "type": "git_repository *", + "comment": "The repository to add ignore rules to." }, { - "name": "payload", - "type": "void *", - "comment": "payload passed through to callback function" + "name": "rules", + "type": "const char *", + "comment": "Text of rules, the contents to add on a .gitignore file.\n It is okay to have multiple rules in the text; if so,\n each rule should be terminated with a newline." } ], - "argline": "git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload", - "sig": "git_index *::const git_strarray *::git_index_matched_path_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, negative callback return value, or error code" - }, - "description": "Remove all matching index entries.
\n", - "comments": "If you provide a callback function, it will be invoked on each matching item in the index immediately before it is removed. Return 0 to remove the item, > 0 to skip the item, and < 0 to abort the scan.
\n", - "group": "index" + "argline": "git_repository *repo, const char *rules", + "sig": "git_repository *::const char *", + "return": { "type": "int", "comment": " 0 on success" }, + "description": "Add ignore rules for a repository.
\n", + "comments": "Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a "core.excludesfile" config value is set. The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist. This function allows you to add to that internal rules list.
\n\nExample usage:
\n\n error = git_ignore_add_rule(myrepo, "*.c/ with space");\n\n\nThis would add three rules to the ignores.
\n", + "group": "ignore" }, - "git_index_update_all": { + "git_ignore_clear_internal_rules": { "type": "function", - "file": "index.h", - "line": 643, - "lineto": 647, + "file": "git2/ignore.h", + "line": 61, + "lineto": 62, "args": [ { - "name": "index", - "type": "git_index *", - "comment": "An existing index object" - }, - { - "name": "pathspec", - "type": "const git_strarray *", - "comment": "array of path patterns" - }, - { - "name": "callback", - "type": "git_index_matched_path_cb", - "comment": "notification callback for each updated path (also\n gets index of matching pathspec entry); can be NULL;\n return 0 to add, >0 to skip, \n<\n0 to abort scan." - }, - { - "name": "payload", - "type": "void *", - "comment": "payload passed through to callback function" + "name": "repo", + "type": "git_repository *", + "comment": "The repository to remove ignore rules from." } ], - "argline": "git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload", - "sig": "git_index *::const git_strarray *::git_index_matched_path_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, negative callback return value, or error code" - }, - "description": "Update all index entries to match the working directory
\n", - "comments": "This method will fail in bare index instances.
\n\nThis scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).
\n\nIf you provide a callback function, it will be invoked on each matching item in the index immediately before it is updated (either refreshed or removed depending on working directory state). Return 0 to proceed with updating the item, > 0 to skip the item, and < 0 to abort the scan.
\n", - "group": "index" + "argline": "git_repository *repo", + "sig": "git_repository *", + "return": { "type": "int", "comment": " 0 on success" }, + "description": "Clear ignore rules that were explicitly added.
\n", + "comments": "Resets to the default internal ignore rules. This will not turn off rules in .gitignore files that actually exist in the filesystem.
\n\nThe default internal ignores ignore ".", ".." and ".git" entries.
\n", + "group": "ignore" }, - "git_index_find": { + "git_ignore_path_is_ignored": { "type": "function", - "file": "index.h", - "line": 658, - "lineto": 658, + "file": "git2/ignore.h", + "line": 80, + "lineto": 83, "args": [ { - "name": "at_pos", - "type": "size_t *", - "comment": "the address to which the position of the index entry is written (optional)" + "name": "ignored", + "type": "int *", + "comment": "boolean returning 0 if the file is not ignored, 1 if it is" }, { - "name": "index", - "type": "git_index *", - "comment": "an existing index object" + "name": "repo", + "type": "git_repository *", + "comment": "a repository object" }, { "name": "path", "type": "const char *", - "comment": "path to search" + "comment": "the file to check ignores for, relative to the repo's workdir." } ], - "argline": "size_t *at_pos, git_index *index, const char *path", - "sig": "size_t *::git_index *::const char *", + "argline": "int *ignored, git_repository *repo, const char *path", + "sig": "int *::git_repository *::const char *", "return": { "type": "int", - "comment": " a zero-based position in the index if found; GIT_ENOTFOUND otherwise" + "comment": " 0 if ignore rules could be processed for the file (regardless\n of whether it exists or not), or an error \n<\n 0 if they could not." }, - "description": "Find the first position of any entries which point to given\n path in the Git index.
\n", - "comments": "", - "group": "index" + "description": "Test if the ignore rules apply to a given path.
\n", + "comments": "This function checks the ignore rules to see if they would apply to the given file. This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.
\n\nOne way to think of this is if you were to do "git check-ignore --no-index" on the given file, would it be shown or not?
\n", + "group": "ignore" }, - "git_index_find_prefix": { + "git_index_open": { "type": "function", - "file": "index.h", - "line": 669, - "lineto": 669, + "file": "git2/index.h", + "line": 278, + "lineto": 278, "args": [ { - "name": "at_pos", - "type": "size_t *", - "comment": "the address to which the position of the index entry is written (optional)" + "name": "index_out", + "type": "git_index **", + "comment": "the pointer for the new index" }, + { + "name": "index_path", + "type": "const char *", + "comment": "the path to the index file in disk" + } + ], + "argline": "git_index **index_out, const char *index_path", + "sig": "git_index **::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a new bare Git index object as a memory representation\n of the Git index file in 'index_path', without a repository\n to back it.
\n", + "comments": "Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.
\n\nIf you need to access the index of an actual repository, use the git_repository_index wrapper.
The index must be freed once it's no longer in use.
\n", + "group": "index" + }, + "git_index_new": { + "type": "function", + "file": "git2/index.h", + "line": 291, + "lineto": 291, + "args": [ + { + "name": "index_out", + "type": "git_index **", + "comment": "the pointer for the new index" + } + ], + "argline": "git_index **index_out", + "sig": "git_index **", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create an in-memory index object.
\n", + "comments": "This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.
\n\nThe index must be freed once it's no longer in use.
\n", + "group": "index" + }, + "git_index_free": { + "type": "function", + "file": "git2/index.h", + "line": 300, + "lineto": 300, + "args": [ { "name": "index", "type": "git_index *", "comment": "an existing index object" - }, - { - "name": "prefix", - "type": "const char *", - "comment": "the prefix to search for" } ], - "argline": "size_t *at_pos, git_index *index, const char *prefix", - "sig": "size_t *::git_index *::const char *", + "argline": "git_index *index", + "sig": "git_index *", + "return": { "type": "void", "comment": null }, + "description": "Free an existing index object.
\n", + "comments": "", + "group": "index", + "examples": { + "add.c": ["ex/v1.9.1/add.html#git_index_free-1"], + "commit.c": ["ex/v1.9.1/commit.html#git_index_free-3"], + "general.c": ["ex/v1.9.1/general.html#git_index_free-35"], + "init.c": ["ex/v1.9.1/init.html#git_index_free-2"], + "ls-files.c": ["ex/v1.9.1/ls-files.html#git_index_free-1"] + } + }, + "git_index_owner": { + "type": "function", + "file": "git2/index.h", + "line": 308, + "lineto": 308, + "args": [ + { "name": "index", "type": "const git_index *", "comment": "The index" } + ], + "argline": "const git_index *index", + "sig": "const git_index *", "return": { - "type": "int", - "comment": " 0 with valid value in at_pos; an error code otherwise" + "type": "git_repository *", + "comment": " A pointer to the repository" }, - "description": "Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a '/'.
\n", + "description": "Get the repository this index relates to
\n", "comments": "", "group": "index" }, - "git_index_conflict_add": { + "git_index_caps": { "type": "function", - "file": "index.h", - "line": 694, - "lineto": 698, + "file": "git2/index.h", + "line": 316, + "lineto": 316, "args": [ { "name": "index", - "type": "git_index *", - "comment": "an existing index object" - }, - { - "name": "ancestor_entry", - "type": "const git_index_entry *", - "comment": "the entry data for the ancestor of the conflict" - }, - { - "name": "our_entry", - "type": "const git_index_entry *", - "comment": "the entry data for our side of the merge conflict" - }, - { - "name": "their_entry", - "type": "const git_index_entry *", - "comment": "the entry data for their side of the merge conflict" + "type": "const git_index *", + "comment": "An existing index object" } ], - "argline": "git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry", - "sig": "git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *", + "argline": "const git_index *index", + "sig": "const git_index *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " A combination of GIT_INDEX_CAPABILITY values" }, - "description": "Add or update index entries to represent a conflict. Any staged\n entries that exist at the given paths will be removed.
\n", - "comments": "The entries are the entries from the tree included in the merge. Any entry may be null to indicate that that file was not present in the trees during the merge. For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.
\n", + "description": "Read index capabilities flags.
\n", + "comments": "", "group": "index" }, - "git_index_conflict_get": { + "git_index_set_caps": { "type": "function", - "file": "index.h", - "line": 714, - "lineto": 719, + "file": "git2/index.h", + "line": 329, + "lineto": 329, "args": [ { - "name": "ancestor_out", - "type": "const git_index_entry **", - "comment": "Pointer to store the ancestor entry" + "name": "index", + "type": "git_index *", + "comment": "An existing index object" }, { - "name": "our_out", - "type": "const git_index_entry **", - "comment": "Pointer to store the our entry" - }, + "name": "caps", + "type": "int", + "comment": "A combination of GIT_INDEX_CAPABILITY values" + } + ], + "argline": "git_index *index, int caps", + "sig": "git_index *::int", + "return": { "type": "int", "comment": " 0 on success, -1 on failure" }, + "description": "Set index capabilities flags.
\n", + "comments": "If you pass GIT_INDEX_CAPABILITY_FROM_OWNER for the caps, then capabilities will be read from the config of the owner object, looking at core.ignorecase, core.filemode, core.symlinks.
Get index on-disk version.
\n", + "comments": "Valid return values are 2, 3, or 4. If 3 is returned, an index with version 2 may be written instead, if the extension data in version 3 is not necessary.
\n", + "group": "index" + }, + "git_index_set_version": { + "type": "function", + "file": "git2/index.h", + "line": 354, + "lineto": 354, + "args": [ { "name": "index", "type": "git_index *", - "comment": "an existing index object" + "comment": "An existing index object" }, { - "name": "path", - "type": "const char *", - "comment": "path to search" + "name": "version", + "type": "unsigned int", + "comment": "The new version number" } ], - "argline": "const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path", - "sig": "const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Get the index entries that represent a conflict of a single file.
\n", - "comments": "The entries are not modifiable and should not be freed. Because the git_index_entry struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Set index on-disk version.
\n", + "comments": "Valid values are 2, 3, or 4. If 2 is given, git_index_write may write an index with version 3 instead, if necessary to accurately represent the index.
\n", "group": "index" }, - "git_index_conflict_remove": { + "git_index_read": { "type": "function", - "file": "index.h", - "line": 728, - "lineto": 728, + "file": "git2/index.h", + "line": 373, + "lineto": 373, "args": [ { "name": "index", @@ -8453,26 +8764,23 @@ "comment": "an existing index object" }, { - "name": "path", - "type": "const char *", - "comment": "path to remove conflicts for" + "name": "force", + "type": "int", + "comment": "if true, always reload, vs. only read if file has changed" } ], - "argline": "git_index *index, const char *path", - "sig": "git_index *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Removes the index entries that represent a conflict of a single file.
\n", - "comments": "", + "argline": "git_index *index, int force", + "sig": "git_index *::int", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Update the contents of an existing index object in memory by reading\n from the hard disk.
\n", + "comments": "If force is true, this performs a "hard" read that discards in-memory changes and always reloads the on-disk index data. If there is no on-disk version, the index will be cleared.
If force is false, this does a "soft" read that reloads the index data from disk only if it has changed since the last time it was loaded. Purely in-memory index data will be untouched. Be aware: if there are changes on disk, unwritten in-memory changes are discarded.
Remove all conflicts in the index (entries with a stage greater than 0).
\n", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write an existing index object from memory back to disk\n using an atomic file lock.
\n", "comments": "", - "group": "index" + "group": "index", + "examples": { + "add.c": ["ex/v1.9.1/add.html#git_index_write-2"], + "commit.c": ["ex/v1.9.1/commit.html#git_index_write-4"] + } }, - "git_index_has_conflicts": { + "git_index_path": { "type": "function", - "file": "index.h", - "line": 743, - "lineto": 743, + "file": "git2/index.h", + "line": 390, + "lineto": 390, "args": [ { "name": "index", "type": "const git_index *", - "comment": null + "comment": "an existing index object" } ], "argline": "const git_index *index", "sig": "const git_index *", "return": { - "type": "int", - "comment": " 1 if at least one conflict is found, 0 otherwise." + "type": "const char *", + "comment": " path to index file or NULL for in-memory index" }, - "description": "Determine if the index contains entries representing file conflicts.
\n", + "description": "Get the full path to the index file on disk.
\n", "comments": "", "group": "index" }, - "git_index_conflict_iterator_new": { + "git_index_checksum": { "type": "function", - "file": "index.h", - "line": 754, - "lineto": 756, + "file": "git2/index.h", + "line": 404, + "lineto": 404, "args": [ - { - "name": "iterator_out", - "type": "git_index_conflict_iterator **", - "comment": "The newly created conflict iterator" - }, { "name": "index", "type": "git_index *", - "comment": "The index to scan" + "comment": "an existing index object" } ], - "argline": "git_index_conflict_iterator **iterator_out, git_index *index", - "sig": "git_index_conflict_iterator **::git_index *", + "argline": "git_index *index", + "sig": "git_index *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const git_oid *", + "comment": " a pointer to the checksum of the index" }, - "description": "Create an iterator for the conflicts in the index.
\n", - "comments": "The index must not be modified while iterating; the results are undefined.
\n", + "description": "Get the checksum of the index
\n", + "comments": "This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.
\n", "group": "index" }, - "git_index_conflict_next": { + "git_index_read_tree": { "type": "function", - "file": "index.h", - "line": 768, - "lineto": 772, + "file": "git2/index.h", + "line": 416, + "lineto": 416, "args": [ { - "name": "ancestor_out", - "type": "const git_index_entry **", - "comment": "Pointer to store the ancestor side of the conflict" - }, - { - "name": "our_out", - "type": "const git_index_entry **", - "comment": "Pointer to store our side of the conflict" - }, - { - "name": "their_out", - "type": "const git_index_entry **", - "comment": "Pointer to store their side of the conflict" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "iterator", - "type": "git_index_conflict_iterator *", - "comment": null + "name": "tree", + "type": "const git_tree *", + "comment": "tree to read" } ], - "argline": "const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator", - "sig": "const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *", - "return": { - "type": "int", - "comment": " 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n (negative value)" - }, - "description": "Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.
\n", - "comments": "", + "argline": "git_index *index, const git_tree *tree", + "sig": "git_index *::const git_tree *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Read a tree into the index file with stats
\n", + "comments": "The current index contents will be replaced by the specified tree.
\n", "group": "index" }, - "git_index_conflict_iterator_free": { + "git_index_write_tree": { "type": "function", - "file": "index.h", - "line": 779, - "lineto": 780, + "file": "git2/index.h", + "line": 437, + "lineto": 437, "args": [ { - "name": "iterator", - "type": "git_index_conflict_iterator *", - "comment": "pointer to the iterator" - } + "name": "out", + "type": "git_oid *", + "comment": "Pointer where to store the OID of the written tree" + }, + { "name": "index", "type": "git_index *", "comment": "Index to write" } ], - "argline": "git_index_conflict_iterator *iterator", - "sig": "git_index_conflict_iterator *", + "argline": "git_oid *out, git_index *index", + "sig": "git_oid *::git_index *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code" }, - "description": "Frees a git_index_conflict_iterator.
Write the index as a tree
\n", + "comments": "This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.
\n\nThe index instance cannot be bare, and needs to be associated to an existing repository.
\n\nThe index must not contain any file in conflict.
\n", + "group": "index", + "examples": { + "commit.c": ["ex/v1.9.1/commit.html#git_index_write_tree-5"], + "init.c": ["ex/v1.9.1/init.html#git_index_write_tree-3"], + "merge.c": ["ex/v1.9.1/merge.html#git_index_write_tree-10"] + } }, - "git_indexer_new": { + "git_index_write_tree_to": { "type": "function", - "file": "indexer.h", - "line": 30, - "lineto": 36, + "file": "git2/index.h", + "line": 454, + "lineto": 454, "args": [ { "name": "out", - "type": "git_indexer **", - "comment": "where to store the indexer instance" - }, - { - "name": "path", - "type": "const char *", - "comment": "to the directory where the packfile should be stored" - }, - { - "name": "mode", - "type": "unsigned int", - "comment": "permissions to use creating packfile or 0 for defaults" - }, - { - "name": "odb", - "type": "git_odb *", - "comment": "object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)" - }, - { - "name": "progress_cb", - "type": "git_transfer_progress_cb", - "comment": "function to call with progress information" + "type": "git_oid *", + "comment": "Pointer where to store OID of the written tree" }, + { "name": "index", "type": "git_index *", "comment": "Index to write" }, { - "name": "progress_cb_payload", - "type": "void *", - "comment": "payload for the progress callback" + "name": "repo", + "type": "git_repository *", + "comment": "Repository where to write the tree" } ], - "argline": "git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload", - "sig": "git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *", + "argline": "git_oid *out, git_index *index, git_repository *repo", + "sig": "git_oid *::git_index *::git_repository *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code" }, - "description": "Create a new indexer instance
\n", - "comments": "", - "group": "indexer", - "examples": { - "network/index-pack.c": [ - "ex/HEAD/network/index-pack.html#git_indexer_new-1" - ] - } + "description": "Write the index as a tree to the given repository
\n", + "comments": "This method will do the same as git_index_write_tree, but letting the user choose the repository where the tree will be written.
The index must not contain any file in conflict.
\n", + "group": "index" }, - "git_indexer_append": { + "git_index_entrycount": { "type": "function", - "file": "indexer.h", - "line": 46, - "lineto": 46, + "file": "git2/index.h", + "line": 473, + "lineto": 473, "args": [ { - "name": "idx", - "type": "git_indexer *", - "comment": "the indexer" - }, - { - "name": "data", - "type": "const void *", - "comment": "the data to add" - }, - { - "name": "size", - "type": "size_t", - "comment": "the size of the data in bytes" - }, - { - "name": "stats", - "type": "git_transfer_progress *", - "comment": "stat storage" + "name": "index", + "type": "const git_index *", + "comment": "an existing index object" } ], - "argline": "git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats", - "sig": "git_indexer *::const void *::size_t::git_transfer_progress *", + "argline": "const git_index *index", + "sig": "const git_index *", "return": { - "type": "int", - "comment": null + "type": "size_t", + "comment": " integer of count of current entries" }, - "description": "Add data to the indexer
\n", + "description": "Get the count of entries currently in the index
\n", "comments": "", - "group": "indexer", + "group": "index", "examples": { - "network/index-pack.c": [ - "ex/HEAD/network/index-pack.html#git_indexer_append-2" - ] + "general.c": ["ex/v1.9.1/general.html#git_index_entrycount-36"], + "ls-files.c": ["ex/v1.9.1/ls-files.html#git_index_entrycount-2"] } }, - "git_indexer_commit": { + "git_index_clear": { "type": "function", - "file": "indexer.h", - "line": 55, - "lineto": 55, + "file": "git2/index.h", + "line": 484, + "lineto": 484, "args": [ { - "name": "idx", - "type": "git_indexer *", - "comment": "the indexer" - }, - { - "name": "stats", - "type": "git_transfer_progress *", - "comment": null + "name": "index", + "type": "git_index *", + "comment": "an existing index object" } ], - "argline": "git_indexer *idx, git_transfer_progress *stats", - "sig": "git_indexer *::git_transfer_progress *", + "argline": "git_index *index", + "sig": "git_index *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, error code \n<\n 0 on failure" }, - "description": "Finalize the pack and index
\n", - "comments": "Resolve any pending deltas and write out the index file
\n", - "group": "indexer", - "examples": { - "network/index-pack.c": [ - "ex/HEAD/network/index-pack.html#git_indexer_commit-3" - ] - } + "description": "Clear the contents (all the entries) of an index object.
\n", + "comments": "This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.
\n", + "group": "index" }, - "git_indexer_hash": { + "git_index_get_byindex": { "type": "function", - "file": "indexer.h", - "line": 65, - "lineto": 65, + "file": "git2/index.h", + "line": 497, + "lineto": 498, "args": [ { - "name": "idx", - "type": "const git_indexer *", - "comment": "the indexer instance" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" + }, + { + "name": "n", + "type": "size_t", + "comment": "the position of the entry" } ], - "argline": "const git_indexer *idx", - "sig": "const git_indexer *", + "argline": "git_index *index, size_t n", + "sig": "git_index *::size_t", "return": { - "type": "const git_oid *", - "comment": null + "type": "const git_index_entry *", + "comment": " a pointer to the entry; NULL if out of bounds" }, - "description": "Get the packfile's hash
\n", - "comments": "A packfile's name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.
\n", - "group": "indexer", + "description": "Get a pointer to one of the entries in the index
\n", + "comments": "The entry is not modifiable and should not be freed. Because the git_index_entry struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Free the indexer and its resources
\n", - "comments": "", - "group": "indexer", + "description": "Get a pointer to one of the entries in the index
\n", + "comments": "The entry is not modifiable and should not be freed. Because the git_index_entry struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Initializes a git_merge_file_input with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.
Remove an entry from the index
\n", "comments": "", - "group": "merge" + "group": "index" }, - "git_merge_file_init_options": { + "git_index_remove_directory": { "type": "function", - "file": "merge.h", - "line": 208, - "lineto": 210, + "file": "git2/index.h", + "line": 533, + "lineto": 534, "args": [ { - "name": "opts", - "type": "git_merge_file_options *", - "comment": "the `git_merge_file_options` instance to initialize." + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct; you should pass\n `GIT_MERGE_FILE_OPTIONS_VERSION` here." - } + "name": "dir", + "type": "const char *", + "comment": "container directory path" + }, + { "name": "stage", "type": "int", "comment": "stage to search" } ], - "argline": "git_merge_file_options *opts, unsigned int version", - "sig": "git_merge_file_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_merge_file_options with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.
Remove all entries from the index under a given directory
\n", "comments": "", - "group": "merge" + "group": "index" }, - "git_merge_init_options": { + "git_index_add": { "type": "function", - "file": "merge.h", - "line": 304, - "lineto": 306, + "file": "git2/index.h", + "line": 550, + "lineto": 550, "args": [ { - "name": "opts", - "type": "git_merge_options *", - "comment": "the `git_merge_options` instance to initialize." + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct; you should pass\n `GIT_MERGE_OPTIONS_VERSION` here." + "name": "source_entry", + "type": "const git_index_entry *", + "comment": "new entry object" } ], - "argline": "git_merge_options *opts, unsigned int version", - "sig": "git_merge_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_merge_options with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.
Add or update an index entry from an in-memory struct
\n", + "comments": "If a previous index entry exists that has the same path and stage as the given 'source_entry', it will be replaced. Otherwise, the 'source_entry' will be added.
\n\nA full copy (including the 'path' string) of the given 'source_entry' will be inserted on the index.
\n", + "group": "index" }, - "git_merge_analysis": { + "git_index_entry_stage": { "type": "function", - "file": "merge.h", - "line": 375, - "lineto": 380, + "file": "git2/index.h", + "line": 562, + "lineto": 562, "args": [ { - "name": "analysis_out", - "type": "git_merge_analysis_t *", - "comment": "analysis enumeration that the result is written into" - }, - { - "name": "preference_out", - "type": "git_merge_preference_t *", - "comment": null - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository to merge" - }, - { - "name": "their_heads", - "type": "const git_annotated_commit **", - "comment": "the heads to merge into" - }, + "name": "entry", + "type": "const git_index_entry *", + "comment": "The entry" + } + ], + "argline": "const git_index_entry *entry", + "sig": "const git_index_entry *", + "return": { "type": "int", "comment": " the stage number" }, + "description": "Return the stage number from a git index entry
\n", + "comments": "This entry is calculated from the entry's flag attribute like this:
\n\n(entry->flags & GIT_INDEX_ENTRY_STAGEMASK) >> GIT_INDEX_ENTRY_STAGESHIFT\n\n",
+ "group": "index"
+ },
+ "git_index_entry_is_conflict": {
+ "type": "function",
+ "file": "git2/index.h",
+ "line": 571,
+ "lineto": 571,
+ "args": [
{
- "name": "their_heads_len",
- "type": "size_t",
- "comment": "the number of heads to merge"
+ "name": "entry",
+ "type": "const git_index_entry *",
+ "comment": "The entry"
}
],
- "argline": "git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len",
- "sig": "git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t",
+ "argline": "const git_index_entry *entry",
+ "sig": "const git_index_entry *",
"return": {
"type": "int",
- "comment": " 0 on success or error code"
+ "comment": " 1 if the entry is a conflict entry, 0 otherwise"
},
- "description": "Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.
\n", + "description": "Return whether the given index entry is a conflict (has a high stage\n entry). This is simply shorthand for git_index_entry_stage > 0.
Create an iterator that will return every entry contained in the\n index at the time of creation. Entries are returned in order,\n sorted by path. This iterator is backed by a snapshot that allows\n callers to modify the index while iterating without affecting the\n iterator.
\n", + "comments": "", + "group": "index" + }, + "git_index_iterator_next": { + "type": "function", + "file": "git2/index.h", + "line": 603, + "lineto": 605, + "args": [ { - "name": "one", - "type": "const git_oid *", - "comment": "one of the commits" + "name": "out", + "type": "const git_index_entry **", + "comment": "Pointer to store the index entry in" }, { - "name": "two", - "type": "const git_oid *", - "comment": "the other commit" + "name": "iterator", + "type": "git_index_iterator *", + "comment": "The iterator" } ], - "argline": "git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two", - "sig": "git_oid *::git_repository *::const git_oid *::const git_oid *", + "argline": "const git_index_entry **out, git_index_iterator *iterator", + "sig": "const git_index_entry **::git_index_iterator *", "return": { "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if not found or error code" + "comment": " 0, GIT_ITEROVER on iteration completion or an error code" }, - "description": "Find a merge base between two commits
\n", + "description": "Return the next index entry in-order from the iterator.
\n", "comments": "", - "group": "merge", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_merge_base-32" - ], - "rev-parse.c": [ - "ex/HEAD/rev-parse.html#git_merge_base-3" - ] - } + "group": "index" }, - "git_merge_bases": { + "git_index_iterator_free": { "type": "function", - "file": "merge.h", - "line": 406, - "lineto": 410, + "file": "git2/index.h", + "line": 612, + "lineto": 612, "args": [ { - "name": "out", - "type": "git_oidarray *", - "comment": "array in which to store the resulting ids" + "name": "iterator", + "type": "git_index_iterator *", + "comment": "The iterator to free" + } + ], + "argline": "git_index_iterator *iterator", + "sig": "git_index_iterator *", + "return": { "type": "void", "comment": null }, + "description": "Free the index iterator
\n", + "comments": "", + "group": "index" + }, + "git_index_add_bypath": { + "type": "function", + "file": "git2/index.h", + "line": 643, + "lineto": 643, + "args": [ + { + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, + { "name": "path", "type": "const char *", "comment": "filename to add" } + ], + "argline": "git_index *index, const char *path", + "sig": "git_index *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Add or update an index entry from a file on disk
\n", + "comments": "The file path must be relative to the repository's working folder and must be readable.
This method will fail in bare index instances.
\n\nThis forces the file to be added to the index, not looking at gitignore rules. Those rules can be evaluated through the git_status APIs (in status.h) before calling this.
\n\nIf this file currently is the result of a merge conflict, this file will no longer be marked as conflicting. The data about the conflict will be moved to the "resolve undo" (REUC) section.
\n", + "group": "index" + }, + "git_index_add_from_buffer": { + "type": "function", + "file": "git2/index.h", + "line": 671, + "lineto": 674, + "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository where the commits exist" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "one", - "type": "const git_oid *", - "comment": "one of the commits" + "name": "entry", + "type": "const git_index_entry *", + "comment": "filename to add" }, { - "name": "two", - "type": "const git_oid *", - "comment": "the other commit" + "name": "buffer", + "type": "const void *", + "comment": "data to be written into the blob" + }, + { "name": "len", "type": "size_t", "comment": "length of the data" } + ], + "argline": "git_index *index, const git_index_entry *entry, const void *buffer, size_t len", + "sig": "git_index *::const git_index_entry *::const void *::size_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Add or update an index entry from a buffer in memory
\n", + "comments": "This method will create a blob in the repository that owns the index and then add the index entry to the index. The path of the entry represents the position of the blob relative to the repository's root folder.
If a previous index entry exists that has the same path as the given 'entry', it will be replaced. Otherwise, the 'entry' will be added.
\n\nThis forces the file to be added to the index, not looking at gitignore rules. Those rules can be evaluated through the git_status APIs (in status.h) before calling this.
\n\nIf this file currently is the result of a merge conflict, this file will no longer be marked as conflicting. The data about the conflict will be moved to the "resolve undo" (REUC) section.
\n", + "group": "index" + }, + "git_index_remove_bypath": { + "type": "function", + "file": "git2/index.h", + "line": 690, + "lineto": 690, + "args": [ + { + "name": "index", + "type": "git_index *", + "comment": "an existing index object" + }, + { + "name": "path", + "type": "const char *", + "comment": "filename to remove" } ], - "argline": "git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two", - "sig": "git_oidarray *::git_repository *::const git_oid *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if not found or error code" - }, - "description": "Find merge bases between two commits
\n", - "comments": "", - "group": "merge" + "argline": "git_index *index, const char *path", + "sig": "git_index *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Remove an index entry corresponding to a file on disk
\n", + "comments": "The file path must be relative to the repository's working folder. It may exist.
If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting. The data about the conflict will be moved to the "resolve undo" (REUC) section.
\n", + "group": "index" }, - "git_merge_base_many": { + "git_index_add_all": { "type": "function", - "file": "merge.h", - "line": 421, - "lineto": 425, + "file": "git2/index.h", + "line": 738, + "lineto": 743, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "the OID of a merge base considering all the commits" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "repo", - "type": "git_repository *", - "comment": "the repository where the commits exist" + "name": "pathspec", + "type": "const git_strarray *", + "comment": "array of path patterns" }, { - "name": "length", - "type": "size_t", - "comment": "The number of commits in the provided `input_array`" + "name": "flags", + "type": "unsigned int", + "comment": "combination of git_index_add_option_t flags" }, { - "name": "input_array", - "type": "const git_oid []", - "comment": "oids of the commits" + "name": "callback", + "type": "git_index_matched_path_cb", + "comment": "notification callback for each added/updated path (also\n gets index of matching pathspec entry); can be NULL;\n return 0 to add, >0 to skip, \n<\n0 to abort scan." + }, + { + "name": "payload", + "type": "void *", + "comment": "payload passed through to callback function" } ], - "argline": "git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array", - "sig": "git_oid *::git_repository *::size_t::const git_oid []", + "argline": "git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload", + "sig": "git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *", "return": { "type": "int", - "comment": " Zero on success; GIT_ENOTFOUND or -1 on failure." + "comment": " 0 on success, negative callback return value, or error code" }, - "description": "Find a merge base given a list of commits
\n", - "comments": "", - "group": "merge" + "description": "Add or update index entries matching files in the working directory.
\n", + "comments": "This method will fail in bare index instances.
\n\nThe pathspec is a list of file names or shell glob patterns that will be matched against files in the repository's working directory. Each file that matches will be added to the index (either updating an existing entry or adding a new entry). You can disable glob expansion and force exact matching with the GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH flag.
Files that are ignored will be skipped (unlike git_index_add_bypath). If a file is already tracked in the index, then it will be updated even if it is ignored. Pass the GIT_INDEX_ADD_FORCE flag to skip the checking of ignore rules.
To emulate git add -A and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the GIT_INDEX_ADD_CHECK_PATHSPEC flag. This checks that each entry in the pathspec that is an exact match to a filename on disk is either not ignored or already in the index. If this check fails, the function will return GIT_EINVALIDSPEC.
To emulate git add -A with the "dry-run" option, just use a callback function that always returns a positive value. See below for details.
If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting. The data about the conflicts will be moved to the "resolve undo" (REUC) section.
\n\nIf you provide a callback function, it will be invoked on each matching item in the working directory immediately before it is added to / updated in the index. Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.
\n", + "group": "index", + "examples": { "add.c": ["ex/v1.9.1/add.html#git_index_add_all-3"] } }, - "git_merge_bases_many": { + "git_index_remove_all": { "type": "function", - "file": "merge.h", - "line": 436, - "lineto": 440, + "file": "git2/index.h", + "line": 760, + "lineto": 764, "args": [ { - "name": "out", - "type": "git_oidarray *", - "comment": "array in which to store the resulting ids" + "name": "index", + "type": "git_index *", + "comment": "An existing index object" }, { - "name": "repo", - "type": "git_repository *", - "comment": "the repository where the commits exist" + "name": "pathspec", + "type": "const git_strarray *", + "comment": "array of path patterns" }, { - "name": "length", - "type": "size_t", - "comment": "The number of commits in the provided `input_array`" + "name": "callback", + "type": "git_index_matched_path_cb", + "comment": "notification callback for each removed path (also\n gets index of matching pathspec entry); can be NULL;\n return 0 to add, >0 to skip, \n<\n0 to abort scan." }, { - "name": "input_array", - "type": "const git_oid []", - "comment": "oids of the commits" + "name": "payload", + "type": "void *", + "comment": "payload passed through to callback function" } ], - "argline": "git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array", - "sig": "git_oidarray *::git_repository *::size_t::const git_oid []", + "argline": "git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload", + "sig": "git_index *::const git_strarray *::git_index_matched_path_cb::void *", "return": { "type": "int", - "comment": " Zero on success; GIT_ENOTFOUND or -1 on failure." + "comment": " 0 on success, negative callback return value, or error code" }, - "description": "Find all merge bases given a list of commits
\n", - "comments": "", - "group": "merge" + "description": "Remove all matching index entries.
\n", + "comments": "If you provide a callback function, it will be invoked on each matching item in the index immediately before it is removed. Return 0 to remove the item, > 0 to skip the item, and < 0 to abort the scan.
\n", + "group": "index" }, - "git_merge_base_octopus": { + "git_index_update_all": { "type": "function", - "file": "merge.h", - "line": 451, - "lineto": 455, + "file": "git2/index.h", + "line": 789, + "lineto": 793, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "the OID of a merge base considering all the commits" + "name": "index", + "type": "git_index *", + "comment": "An existing index object" }, { - "name": "repo", - "type": "git_repository *", - "comment": "the repository where the commits exist" + "name": "pathspec", + "type": "const git_strarray *", + "comment": "array of path patterns" }, { - "name": "length", - "type": "size_t", - "comment": "The number of commits in the provided `input_array`" + "name": "callback", + "type": "git_index_matched_path_cb", + "comment": "notification callback for each updated path (also\n gets index of matching pathspec entry); can be NULL;\n return 0 to add, >0 to skip, \n<\n0 to abort scan." }, { - "name": "input_array", - "type": "const git_oid []", - "comment": "oids of the commits" + "name": "payload", + "type": "void *", + "comment": "payload passed through to callback function" } ], - "argline": "git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array", - "sig": "git_oid *::git_repository *::size_t::const git_oid []", + "argline": "git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload", + "sig": "git_index *::const git_strarray *::git_index_matched_path_cb::void *", "return": { "type": "int", - "comment": " Zero on success; GIT_ENOTFOUND or -1 on failure." + "comment": " 0 on success, negative callback return value, or error code" }, - "description": "Find a merge base in preparation for an octopus merge
\n", - "comments": "", - "group": "merge" + "description": "Update all index entries to match the working directory
\n", + "comments": "This method will fail in bare index instances.
\n\nThis scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).
\n\nIf you provide a callback function, it will be invoked on each matching item in the index immediately before it is updated (either refreshed or removed depending on working directory state). Return 0 to proceed with updating the item, > 0 to skip the item, and < 0 to abort the scan.
\n", + "group": "index", + "examples": { "add.c": ["ex/v1.9.1/add.html#git_index_update_all-4"] } }, - "git_merge_file": { + "git_index_find": { "type": "function", - "file": "merge.h", - "line": 473, - "lineto": 478, + "file": "git2/index.h", + "line": 804, + "lineto": 804, "args": [ { - "name": "out", - "type": "git_merge_file_result *", - "comment": "The git_merge_file_result to be filled in" + "name": "at_pos", + "type": "size_t *", + "comment": "the address to which the position of the index entry is written (optional)" }, { - "name": "ancestor", - "type": "const git_merge_file_input *", - "comment": "The contents of the ancestor file" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, + { "name": "path", "type": "const char *", "comment": "path to search" } + ], + "argline": "size_t *at_pos, git_index *index, const char *path", + "sig": "size_t *::git_index *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Find the first position of any entries which point to given\n path in the Git index.
\n", + "comments": "", + "group": "index" + }, + "git_index_find_prefix": { + "type": "function", + "file": "git2/index.h", + "line": 815, + "lineto": 815, + "args": [ { - "name": "ours", - "type": "const git_merge_file_input *", - "comment": "The contents of the file in \"our\" side" + "name": "at_pos", + "type": "size_t *", + "comment": "the address to which the position of the index entry is written (optional)" }, { - "name": "theirs", - "type": "const git_merge_file_input *", - "comment": "The contents of the file in \"their\" side" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "opts", - "type": "const git_merge_file_options *", - "comment": "The merge file options or `NULL` for defaults" + "name": "prefix", + "type": "const char *", + "comment": "the prefix to search for" } ], - "argline": "git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts", - "sig": "git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *", - "return": { - "type": "int", - "comment": " 0 on success or error code" - }, - "description": "Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n git_merge_file_result that reflects the merge result. The\n git_merge_file_result must be freed with git_merge_file_result_free.
Note that this function does not reference a repository and any configuration must be passed as git_merge_file_options.
Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a '/'.
\n", + "comments": "", + "group": "index" }, - "git_merge_file_from_index": { + "git_index_conflict_add": { "type": "function", - "file": "merge.h", - "line": 494, - "lineto": 500, + "file": "git2/index.h", + "line": 840, + "lineto": 844, "args": [ { - "name": "out", - "type": "git_merge_file_result *", - "comment": "The git_merge_file_result to be filled in" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository" + "name": "ancestor_entry", + "type": "const git_index_entry *", + "comment": "the entry data for the ancestor of the conflict" }, { - "name": "ancestor", + "name": "our_entry", "type": "const git_index_entry *", - "comment": "The index entry for the ancestor file (stage level 1)" + "comment": "the entry data for our side of the merge conflict" }, { - "name": "ours", + "name": "their_entry", "type": "const git_index_entry *", - "comment": "The index entry for our file (stage level 2)" + "comment": "the entry data for their side of the merge conflict" + } + ], + "argline": "git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry", + "sig": "git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Add or update index entries to represent a conflict. Any staged\n entries that exist at the given paths will be removed.
\n", + "comments": "The entries are the entries from the tree included in the merge. Any entry may be null to indicate that that file was not present in the trees during the merge. For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.
\n", + "group": "index" + }, + "git_index_conflict_get": { + "type": "function", + "file": "git2/index.h", + "line": 860, + "lineto": 865, + "args": [ + { + "name": "ancestor_out", + "type": "const git_index_entry **", + "comment": "Pointer to store the ancestor entry" }, { - "name": "theirs", - "type": "const git_index_entry *", - "comment": "The index entry for their file (stage level 3)" + "name": "our_out", + "type": "const git_index_entry **", + "comment": "Pointer to store the our entry" }, { - "name": "opts", - "type": "const git_merge_file_options *", - "comment": "The merge file options or NULL" + "name": "their_out", + "type": "const git_index_entry **", + "comment": "Pointer to store the their entry" + }, + { + "name": "index", + "type": "git_index *", + "comment": "an existing index object" + }, + { "name": "path", "type": "const char *", "comment": "path to search" } + ], + "argline": "const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path", + "sig": "const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Get the index entries that represent a conflict of a single file.
\n", + "comments": "The entries are not modifiable and should not be freed. Because the git_index_entry struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a git_merge_file_result that\n reflects the merge result. The git_merge_file_result must be freed with\n git_merge_file_result_free.
Removes the index entries that represent a conflict of a single file.
\n", "comments": "", - "group": "merge" + "group": "index" }, - "git_merge_file_result_free": { + "git_index_conflict_cleanup": { "type": "function", - "file": "merge.h", - "line": 507, - "lineto": 507, + "file": "git2/index.h", + "line": 882, + "lineto": 882, "args": [ { - "name": "result", - "type": "git_merge_file_result *", - "comment": "The result to free or `NULL`" + "name": "index", + "type": "git_index *", + "comment": "an existing index object" } ], - "argline": "git_merge_file_result *result", - "sig": "git_merge_file_result *", + "argline": "git_index *index", + "sig": "git_index *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Remove all conflicts in the index (entries with a stage greater than 0).
\n", + "comments": "", + "group": "index" + }, + "git_index_has_conflicts": { + "type": "function", + "file": "git2/index.h", + "line": 890, + "lineto": 890, + "args": [ + { + "name": "index", + "type": "const git_index *", + "comment": "An existing index object." + } + ], + "argline": "const git_index *index", + "sig": "const git_index *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 1 if at least one conflict is found, 0 otherwise." }, - "description": "Frees a git_merge_file_result.
Determine if the index contains entries representing file conflicts.
\n", "comments": "", - "group": "merge" + "group": "index", + "examples": { + "merge.c": ["ex/v1.9.1/merge.html#git_index_has_conflicts-11"] + } }, - "git_merge_trees": { + "git_index_conflict_iterator_new": { "type": "function", - "file": "merge.h", - "line": 525, - "lineto": 531, + "file": "git2/index.h", + "line": 901, + "lineto": 903, "args": [ { - "name": "out", - "type": "git_index **", - "comment": "pointer to store the index result in" + "name": "iterator_out", + "type": "git_index_conflict_iterator **", + "comment": "The newly created conflict iterator" }, { - "name": "repo", - "type": "git_repository *", - "comment": "repository that contains the given trees" - }, + "name": "index", + "type": "git_index *", + "comment": "The index to scan" + } + ], + "argline": "git_index_conflict_iterator **iterator_out, git_index *index", + "sig": "git_index_conflict_iterator **::git_index *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create an iterator for the conflicts in the index.
\n", + "comments": "The index must not be modified while iterating; the results are undefined.
\n", + "group": "index", + "examples": { + "merge.c": ["ex/v1.9.1/merge.html#git_index_conflict_iterator_new-12"] + } + }, + "git_index_conflict_next": { + "type": "function", + "file": "git2/index.h", + "line": 916, + "lineto": 920, + "args": [ { - "name": "ancestor_tree", - "type": "const git_tree *", - "comment": "the common ancestor between the trees (or null if none)" + "name": "ancestor_out", + "type": "const git_index_entry **", + "comment": "Pointer to store the ancestor side of the conflict" }, { - "name": "our_tree", - "type": "const git_tree *", - "comment": "the tree that reflects the destination tree" + "name": "our_out", + "type": "const git_index_entry **", + "comment": "Pointer to store our side of the conflict" }, { - "name": "their_tree", - "type": "const git_tree *", - "comment": "the tree to merge in to `our_tree`" + "name": "their_out", + "type": "const git_index_entry **", + "comment": "Pointer to store their side of the conflict" }, { - "name": "opts", - "type": "const git_merge_options *", - "comment": "the merge tree options (or null for defaults)" + "name": "iterator", + "type": "git_index_conflict_iterator *", + "comment": "The conflict iterator." } ], - "argline": "git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts", - "sig": "git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *", + "argline": "const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator", + "sig": "const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *", "return": { "type": "int", - "comment": " 0 on success or error code" + "comment": " 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n (negative value)" }, - "description": "Merge two trees, producing a git_index that reflects the result of\n the merge. The index may be written as-is to the working directory\n or checked out. If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.
The returned index must be freed explicitly with git_index_free.
Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.
\n", + "comments": "", + "group": "index", + "examples": { + "merge.c": ["ex/v1.9.1/merge.html#git_index_conflict_next-13"] + } }, - "git_merge_commits": { + "git_index_conflict_iterator_free": { "type": "function", - "file": "merge.h", - "line": 548, - "lineto": 553, + "file": "git2/index.h", + "line": 927, + "lineto": 928, "args": [ { - "name": "out", - "type": "git_index **", - "comment": "pointer to store the index result in" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "repository that contains the given trees" - }, - { - "name": "our_commit", - "type": "const git_commit *", - "comment": "the commit that reflects the destination tree" - }, - { - "name": "their_commit", - "type": "const git_commit *", - "comment": "the commit to merge in to `our_commit`" - }, - { - "name": "opts", - "type": "const git_merge_options *", - "comment": "the merge tree options (or null for defaults)" + "name": "iterator", + "type": "git_index_conflict_iterator *", + "comment": "pointer to the iterator" } ], - "argline": "git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts", - "sig": "git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *", - "return": { - "type": "int", - "comment": " 0 on success or error code" - }, - "description": "Merge two commits, producing a git_index that reflects the result of\n the merge. The index may be written as-is to the working directory\n or checked out. If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.
The returned index must be freed explicitly with git_index_free.
Frees a git_index_conflict_iterator.
Merges the given commit(s) into HEAD, writing the results into the working\n directory. Any changes are staged for commit and any conflicts are written\n to the index. Callers should inspect the repository's index after this\n completes, resolve any conflicts and prepare a commit.
\n", - "comments": "For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling git_repository_state_cleanup().
Initializes a git_indexer_options with default values. Equivalent to\n creating an instance with GIT_INDEXER_OPTIONS_INIT.
Clean up message from excess whitespace and make sure that the last line\n ends with a '
\n\n'.
\n", - "comments": "Optionally, can remove lines starting with a "#".
\n", - "group": "message" + "argline": "git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_indexer_options *opts", + "sig": "git_indexer **::const char *::unsigned int::git_odb *::git_indexer_options *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Create a new indexer instance
\n", + "comments": "", + "group": "indexer" }, - "git_note_iterator_new": { + "git_indexer_append": { "type": "function", - "file": "notes.h", - "line": 49, - "lineto": 52, + "file": "git2/indexer.h", + "line": 164, + "lineto": 164, "args": [ + { "name": "idx", "type": "git_indexer *", "comment": "the indexer" }, { - "name": "out", - "type": "git_note_iterator **", - "comment": "pointer to the iterator" + "name": "data", + "type": "const void *", + "comment": "the data to add" }, { - "name": "repo", - "type": "git_repository *", - "comment": "repository where to look up the note" + "name": "size", + "type": "size_t", + "comment": "the size of the data in bytes" }, { - "name": "notes_ref", - "type": "const char *", - "comment": "canonical name of the reference to use (optional); defaults to\n \"refs/notes/commits\"" + "name": "stats", + "type": "git_indexer_progress *", + "comment": "stat storage" } ], - "argline": "git_note_iterator **out, git_repository *repo, const char *notes_ref", - "sig": "git_note_iterator **::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Creates a new iterator for notes
\n", - "comments": "The iterator must be freed manually by the user.
\n", - "group": "note" + "argline": "git_indexer *idx, const void *data, size_t size, git_indexer_progress *stats", + "sig": "git_indexer *::const void *::size_t::git_indexer_progress *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Add data to the indexer
\n", + "comments": "", + "group": "indexer" }, - "git_note_iterator_free": { + "git_indexer_commit": { "type": "function", - "file": "notes.h", - "line": 59, - "lineto": 59, + "file": "git2/indexer.h", + "line": 175, + "lineto": 175, "args": [ + { "name": "idx", "type": "git_indexer *", "comment": "the indexer" }, { - "name": "it", - "type": "git_note_iterator *", - "comment": "pointer to the iterator" + "name": "stats", + "type": "git_indexer_progress *", + "comment": "Stat storage." } ], - "argline": "git_note_iterator *it", - "sig": "git_note_iterator *", - "return": { - "type": "void", - "comment": null - }, - "description": "Frees an git_note_iterator
\n", - "comments": "", - "group": "note" + "argline": "git_indexer *idx, git_indexer_progress *stats", + "sig": "git_indexer *::git_indexer_progress *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Finalize the pack and index
\n", + "comments": "Resolve any pending deltas and write out the index file
\n", + "group": "indexer" }, - "git_note_next": { + "git_indexer_hash": { "type": "function", - "file": "notes.h", - "line": 72, - "lineto": 75, + "file": "git2/indexer.h", + "line": 188, + "lineto": 188, "args": [ { - "name": "note_id", - "type": "git_oid *", - "comment": "id of blob containing the message" - }, - { - "name": "annotated_id", - "type": "git_oid *", - "comment": "id of the git object being annotated" - }, - { - "name": "it", - "type": "git_note_iterator *", - "comment": "pointer to the iterator" + "name": "idx", + "type": "const git_indexer *", + "comment": "the indexer instance" } ], - "argline": "git_oid *note_id, git_oid *annotated_id, git_note_iterator *it", - "sig": "git_oid *::git_oid *::git_note_iterator *", + "argline": "const git_indexer *idx", + "sig": "const git_indexer *", "return": { - "type": "int", - "comment": " 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n (negative value)" + "type": "const git_oid *", + "comment": " the packfile's hash" }, - "description": "Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value
\n", - "comments": "", - "group": "note" + "description": "Get the packfile's hash
\n", + "comments": "A packfile's name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.
\n", + "group": "indexer" }, - "git_note_read": { + "git_indexer_name": { "type": "function", - "file": "notes.h", - "line": 91, - "lineto": 95, + "file": "git2/indexer.h", + "line": 200, + "lineto": 200, "args": [ { - "name": "out", - "type": "git_note **", - "comment": "pointer to the read note; NULL in case of error" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "repository where to look up the note" - }, - { - "name": "notes_ref", - "type": "const char *", - "comment": "canonical name of the reference to use (optional); defaults to\n \"refs/notes/commits\"" - }, - { - "name": "oid", - "type": "const git_oid *", - "comment": "OID of the git object to read the note from" + "name": "idx", + "type": "const git_indexer *", + "comment": "the indexer instance" } ], - "argline": "git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid", - "sig": "git_note **::git_repository *::const char *::const git_oid *", + "argline": "const git_indexer *idx", + "sig": "const git_indexer *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const char *", + "comment": " a NUL terminated string for the packfile name" }, - "description": "Read the note for an object
\n", - "comments": "The note must be freed manually by the user.
\n", - "group": "note" + "description": "Get the unique name for the resulting packfile.
\n", + "comments": "The packfile's name is derived from the packfile's content. This is only correct after the index has been finalized.
\n", + "group": "indexer" }, - "git_note_author": { + "git_indexer_free": { "type": "function", - "file": "notes.h", - "line": 103, - "lineto": 103, + "file": "git2/indexer.h", + "line": 207, + "lineto": 207, "args": [ { - "name": "note", - "type": "const git_note *", - "comment": "the note" + "name": "idx", + "type": "git_indexer *", + "comment": "the indexer to free" } ], - "argline": "const git_note *note", - "sig": "const git_note *", - "return": { - "type": "const git_signature *", - "comment": " the author" - }, - "description": "Get the note author
\n", + "argline": "git_indexer *idx", + "sig": "git_indexer *", + "return": { "type": "void", "comment": null }, + "description": "Free the indexer and its resources
\n", "comments": "", - "group": "note" + "group": "indexer" }, - "git_note_committer": { + "git_mailmap_new": { "type": "function", - "file": "notes.h", - "line": 111, - "lineto": 111, + "file": "git2/mailmap.h", + "line": 37, + "lineto": 37, "args": [ { - "name": "note", - "type": "const git_note *", - "comment": "the note" + "name": "out", + "type": "git_mailmap **", + "comment": "pointer to store the new mailmap" } ], - "argline": "const git_note *note", - "sig": "const git_note *", - "return": { - "type": "const git_signature *", - "comment": " the committer" - }, - "description": "Get the note committer
\n", - "comments": "", - "group": "note" + "argline": "git_mailmap **out", + "sig": "git_mailmap **", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Allocate a new mailmap object.
\n", + "comments": "This object is empty, so you'll have to add a mailmap file before you can do anything with it. The mailmap must be freed with 'git_mailmap_free'.
\n", + "group": "mailmap" }, - "git_note_message": { + "git_mailmap_free": { "type": "function", - "file": "notes.h", - "line": 120, - "lineto": 120, + "file": "git2/mailmap.h", + "line": 44, + "lineto": 44, "args": [ { - "name": "note", - "type": "const git_note *", - "comment": "the note" + "name": "mm", + "type": "git_mailmap *", + "comment": "the mailmap to free" } ], - "argline": "const git_note *note", - "sig": "const git_note *", - "return": { - "type": "const char *", - "comment": " the note message" - }, - "description": "Get the note message
\n", + "argline": "git_mailmap *mm", + "sig": "git_mailmap *", + "return": { "type": "void", "comment": null }, + "description": "Free the mailmap and its associated memory.
\n", "comments": "", - "group": "note" + "group": "mailmap" }, - "git_note_id": { + "git_mailmap_add_entry": { "type": "function", - "file": "notes.h", - "line": 129, - "lineto": 129, + "file": "git2/mailmap.h", + "line": 57, + "lineto": 59, "args": [ { - "name": "note", - "type": "const git_note *", - "comment": "the note" + "name": "mm", + "type": "git_mailmap *", + "comment": "mailmap to add the entry to" + }, + { + "name": "real_name", + "type": "const char *", + "comment": "the real name to use, or NULL" + }, + { + "name": "real_email", + "type": "const char *", + "comment": "the real email to use, or NULL" + }, + { + "name": "replace_name", + "type": "const char *", + "comment": "the name to replace, or NULL" + }, + { + "name": "replace_email", + "type": "const char *", + "comment": "the email to replace" } ], - "argline": "const git_note *note", - "sig": "const git_note *", - "return": { - "type": "const git_oid *", - "comment": " the note object's id" - }, - "description": "Get the note object's id
\n", + "argline": "git_mailmap *mm, const char *real_name, const char *real_email, const char *replace_name, const char *replace_email", + "sig": "git_mailmap *::const char *::const char *::const char *::const char *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Add a single entry to the given mailmap object. If the entry already exists,\n it will be replaced with the new entry.
\n", "comments": "", - "group": "note" + "group": "mailmap" }, - "git_note_create": { + "git_mailmap_from_buffer": { "type": "function", - "file": "notes.h", - "line": 146, - "lineto": 154, + "file": "git2/mailmap.h", + "line": 69, + "lineto": 70, "args": [ { "name": "out", - "type": "git_oid *", - "comment": "pointer to store the OID (optional); NULL in case of error" + "type": "git_mailmap **", + "comment": "pointer to store the new mailmap" }, { - "name": "repo", - "type": "git_repository *", - "comment": "repository where to store the note" + "name": "buf", + "type": "const char *", + "comment": "buffer to parse the mailmap from" }, { - "name": "notes_ref", - "type": "const char *", - "comment": "canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\"" + "name": "len", + "type": "size_t", + "comment": "the length of the input buffer" + } + ], + "argline": "git_mailmap **out, const char *buf, size_t len", + "sig": "git_mailmap **::const char *::size_t", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Create a new mailmap instance containing a single mailmap file
\n", + "comments": "", + "group": "mailmap" + }, + "git_mailmap_from_repository": { + "type": "function", + "file": "git2/mailmap.h", + "line": 86, + "lineto": 87, + "args": [ + { + "name": "out", + "type": "git_mailmap **", + "comment": "pointer to store the new mailmap" }, { - "name": "author", - "type": "const git_signature *", - "comment": "signature of the notes commit author" + "name": "repo", + "type": "git_repository *", + "comment": "repository to load mailmap information from" + } + ], + "argline": "git_mailmap **out, git_repository *repo", + "sig": "git_mailmap **::git_repository *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Create a new mailmap instance from a repository, loading mailmap files based\n on the repository's configuration.
\n", + "comments": "Mailmaps are loaded in the following order: 1. '.mailmap' in the root of the repository's working directory, if present. 2. The blob object identified by the 'mailmap.blob' config entry, if set. [NOTE: 'mailmap.blob' defaults to 'HEAD:.mailmap' in bare repositories] 3. The path in the 'mailmap.file' config entry, if set.
\n", + "group": "mailmap" + }, + "git_mailmap_resolve": { + "type": "function", + "file": "git2/mailmap.h", + "line": 101, + "lineto": 103, + "args": [ + { + "name": "real_name", + "type": "const char **", + "comment": "pointer to store the real name" }, { - "name": "committer", - "type": "const git_signature *", - "comment": "signature of the notes commit committer" + "name": "real_email", + "type": "const char **", + "comment": "pointer to store the real email" }, { - "name": "oid", - "type": "const git_oid *", - "comment": "OID of the git object to decorate" + "name": "mm", + "type": "const git_mailmap *", + "comment": "the mailmap to perform a lookup with (may be NULL)" }, { - "name": "note", + "name": "name", "type": "const char *", - "comment": "Content of the note to add for object oid" + "comment": "the name to look up" }, { - "name": "force", - "type": "int", - "comment": "Overwrite existing note" + "name": "email", + "type": "const char *", + "comment": "the email to look up" } ], - "argline": "git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force", - "sig": "git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Add a note for an object
\n", - "comments": "", - "group": "note" + "argline": "const char **real_name, const char **real_email, const git_mailmap *mm, const char *name, const char *email", + "sig": "const char **::const char **::const git_mailmap *::const char *::const char *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Resolve a name and email to the corresponding real name and email.
\n", + "comments": "The lifetime of the strings are tied to mm, name, and email parameters.
Resolve a signature to use real names and emails with a mailmap.
\n", + "comments": "Call git_signature_free() to free the data.
Remove the note for an object
\n", + "description": "Initializes a git_merge_file_input with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.
Free a git_note object
\n", - "comments": "", - "group": "note" + "description": "Initialize git_merge_file_options structure
\n", + "comments": "Initializes a git_merge_file_options with default values. Equivalent to creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.
Loop over all the notes within a specified namespace\n and issue a callback for each one.
\n", - "comments": "", - "group": "note" + "description": "Initialize git_merge_options structure
\n", + "comments": "Initializes a git_merge_options with default values. Equivalent to creating an instance with GIT_MERGE_OPTIONS_INIT.
Lookup a reference to one of the objects in a repository.
\n", - "comments": "The generated reference is owned by the repository and should be closed with the git_object_free method instead of free'd manually.
The 'type' parameter must match the type of the object in the odb; the method will fail otherwise. The special value 'GIT_OBJ_ANY' may be passed to let the method guess the object's type.
\n", - "group": "object", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_object_lookup-33" - ] - } + "argline": "git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len", + "sig": "git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.
\n", + "comments": "", + "group": "merge", + "examples": { "merge.c": ["ex/v1.9.1/merge.html#git_merge_analysis-15"] } }, - "git_object_lookup_prefix": { + "git_merge_analysis_for_ref": { "type": "function", - "file": "object.h", - "line": 75, - "lineto": 80, + "file": "git2/merge.h", + "line": 431, + "lineto": 437, "args": [ { - "name": "object_out", - "type": "git_object **", - "comment": "pointer where to store the looked-up object" + "name": "analysis_out", + "type": "git_merge_analysis_t *", + "comment": "analysis enumeration that the result is written into" + }, + { + "name": "preference_out", + "type": "git_merge_preference_t *", + "comment": "One of the `git_merge_preference_t` flag." }, { "name": "repo", "type": "git_repository *", - "comment": "the repository to look up the object" + "comment": "the repository to merge" }, { - "name": "id", - "type": "const git_oid *", - "comment": "a short identifier for the object" + "name": "our_ref", + "type": "git_reference *", + "comment": "the reference to perform the analysis from" }, { - "name": "len", - "type": "size_t", - "comment": "the length of the short identifier" + "name": "their_heads", + "type": "const git_annotated_commit **", + "comment": "the heads to merge into" }, { - "name": "type", - "type": "git_otype", - "comment": "the type of the object" + "name": "their_heads_len", + "type": "size_t", + "comment": "the number of heads to merge" } ], - "argline": "git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type", - "sig": "git_object **::git_repository *::const git_oid *::size_t::git_otype", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).
\n", - "comments": "The object obtained will be so that its identifier matches the first 'len' hexadecimal characters (packets of 4 bits) of the given 'id'. 'len' must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.
\n\nThe generated reference is owned by the repository and should be closed with the git_object_free method instead of free'd manually.
The 'type' parameter must match the type of the object in the odb; the method will fail otherwise. The special value 'GIT_OBJ_ANY' may be passed to let the method guess the object's type.
\n", - "group": "object" + "argline": "git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, git_reference *our_ref, const git_annotated_commit **their_heads, size_t their_heads_len", + "sig": "git_merge_analysis_t *::git_merge_preference_t *::git_repository *::git_reference *::const git_annotated_commit **::size_t", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Analyzes the given branch(es) and determines the opportunities for\n merging them into a reference.
\n", + "comments": "", + "group": "merge" }, - "git_object_lookup_bypath": { + "git_merge_base": { "type": "function", - "file": "object.h", - "line": 93, - "lineto": 97, + "file": "git2/merge.h", + "line": 448, + "lineto": 452, "args": [ { "name": "out", - "type": "git_object **", - "comment": "buffer that receives a pointer to the object (which must be freed\n by the caller)" + "type": "git_oid *", + "comment": "the OID of a merge base between 'one' and 'two'" }, { - "name": "treeish", - "type": "const git_object *", - "comment": "root object that can be peeled to a tree" + "name": "repo", + "type": "git_repository *", + "comment": "the repository where the commits exist" }, { - "name": "path", - "type": "const char *", - "comment": "relative path from the root object to the desired object" + "name": "one", + "type": "const git_oid *", + "comment": "one of the commits" }, { - "name": "type", - "type": "git_otype", - "comment": "type of object desired" + "name": "two", + "type": "const git_oid *", + "comment": "the other commit" } ], - "argline": "git_object **out, const git_object *treeish, const char *path, git_otype type", - "sig": "git_object **::const git_object *::const char *::git_otype", + "argline": "git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two", + "sig": "git_oid *::git_repository *::const git_oid *::const git_oid *", "return": { "type": "int", - "comment": " 0 on success, or an error code" + "comment": " 0 on success, GIT_ENOTFOUND if not found or error code" }, - "description": "Lookup an object that represents a tree entry.
\n", + "description": "Find a merge base between two commits
\n", "comments": "", - "group": "object" + "group": "merge", + "examples": { + "log.c": ["ex/v1.9.1/log.html#git_merge_base-31"], + "rev-parse.c": ["ex/v1.9.1/rev-parse.html#git_merge_base-1"] + } }, - "git_object_id": { + "git_merge_bases": { "type": "function", - "file": "object.h", - "line": 105, - "lineto": 105, + "file": "git2/merge.h", + "line": 463, + "lineto": 467, "args": [ { - "name": "obj", - "type": "const git_object *", - "comment": "the repository object" + "name": "out", + "type": "git_oidarray *", + "comment": "array in which to store the resulting ids" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repository where the commits exist" + }, + { + "name": "one", + "type": "const git_oid *", + "comment": "one of the commits" + }, + { + "name": "two", + "type": "const git_oid *", + "comment": "the other commit" } ], - "argline": "const git_object *obj", - "sig": "const git_object *", + "argline": "git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two", + "sig": "git_oidarray *::git_repository *::const git_oid *::const git_oid *", "return": { - "type": "const git_oid *", - "comment": " the SHA1 id" + "type": "int", + "comment": " 0 on success, GIT_ENOTFOUND if not found or error code" }, - "description": "Get the id (SHA1) of a repository object
\n", + "description": "Find merge bases between two commits
\n", "comments": "", - "group": "object", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_object_id-10", - "ex/HEAD/blame.html#git_object_id-11", - "ex/HEAD/blame.html#git_object_id-12", - "ex/HEAD/blame.html#git_object_id-13" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_object_id-12", - "ex/HEAD/cat-file.html#git_object_id-13" - ], - "log.c": [ - "ex/HEAD/log.html#git_object_id-34", - "ex/HEAD/log.html#git_object_id-35", - "ex/HEAD/log.html#git_object_id-36", - "ex/HEAD/log.html#git_object_id-37" - ], - "rev-parse.c": [ - "ex/HEAD/rev-parse.html#git_object_id-4", - "ex/HEAD/rev-parse.html#git_object_id-5", - "ex/HEAD/rev-parse.html#git_object_id-6", - "ex/HEAD/rev-parse.html#git_object_id-7", - "ex/HEAD/rev-parse.html#git_object_id-8" - ] - } + "group": "merge" }, - "git_object_short_id": { + "git_merge_base_many": { "type": "function", - "file": "object.h", - "line": 119, - "lineto": 119, + "file": "git2/merge.h", + "line": 478, + "lineto": 482, "args": [ { "name": "out", - "type": "git_buf *", - "comment": "Buffer to write string into" + "type": "git_oid *", + "comment": "the OID of a merge base considering all the commits" }, { - "name": "obj", - "type": "const git_object *", - "comment": "The object to get an ID for" - } - ], - "argline": "git_buf *out, const git_object *obj", - "sig": "git_buf *::const git_object *", - "return": { - "type": "int", - "comment": " 0 on success, \n<\n0 for error" - }, - "description": "Get a short abbreviated OID string for the object
\n", - "comments": "This starts at the "core.abbrev" length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).
\n", - "group": "object", - "examples": { - "tag.c": [ - "ex/HEAD/tag.html#git_object_short_id-5" - ] - } - }, - "git_object_type": { - "type": "function", - "file": "object.h", - "line": 127, - "lineto": 127, - "args": [ + "name": "repo", + "type": "git_repository *", + "comment": "the repository where the commits exist" + }, { - "name": "obj", - "type": "const git_object *", - "comment": "the repository object" + "name": "length", + "type": "size_t", + "comment": "The number of commits in the provided `input_array`" + }, + { + "name": "input_array", + "type": "const git_oid []", + "comment": "oids of the commits" } ], - "argline": "const git_object *obj", - "sig": "const git_object *", + "argline": "git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array", + "sig": "git_oid *::git_repository *::size_t::const git_oid []", "return": { - "type": "git_otype", - "comment": " the object's type" + "type": "int", + "comment": " Zero on success; GIT_ENOTFOUND or -1 on failure." }, - "description": "Get the object type of an object
\n", + "description": "Find a merge base given a list of commits
\n", "comments": "", - "group": "object", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_object_type-14", - "ex/HEAD/cat-file.html#git_object_type-15", - "ex/HEAD/cat-file.html#git_object_type-16" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_object_type-6" - ] - } + "group": "merge" }, - "git_object_owner": { + "git_merge_bases_many": { "type": "function", - "file": "object.h", - "line": 141, - "lineto": 141, + "file": "git2/merge.h", + "line": 524, + "lineto": 528, "args": [ { - "name": "obj", - "type": "const git_object *", - "comment": "the object" + "name": "out", + "type": "git_oidarray *", + "comment": "array in which to store the resulting ids" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repository where the commits exist" + }, + { + "name": "length", + "type": "size_t", + "comment": "The number of commits in the provided `input_array`" + }, + { + "name": "input_array", + "type": "const git_oid []", + "comment": "oids of the commits" } ], - "argline": "const git_object *obj", - "sig": "const git_object *", + "argline": "git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array", + "sig": "git_oidarray *::git_repository *::size_t::const git_oid []", "return": { - "type": "git_repository *", - "comment": " the repository who owns this object" + "type": "int", + "comment": " Zero on success; GIT_ENOTFOUND or -1 on failure." }, - "description": "Get the repository that owns this object
\n", - "comments": "Freeing or calling git_repository_close on the returned pointer will invalidate the actual object.
Any other operation may be run on the repository without affecting the object.
\n", - "group": "object" + "description": "Find all merge bases given a list of commits
\n", + "comments": "This behaves similar to git merge-base.
Given three commits a, b, and c, merge_base_many will compute a hypothetical commit m, which is a merge between b and c.
For example, with the following topology: text o---o---o---o---C / / o---o---o---B / / ---2---1---o---o---o---A
the result of merge_base_many given a, b, and c is 1. This is because the equivalent topology with the imaginary merge commit m between b and c is: text o---o---o---o---o / \\ / o---o---o---o---M / / ---2---1---o---o---o---A
and the result of merge_base_many given a and m is 1.
If you're looking to recieve the common ancestor between all the given commits, use merge_base_octopus.
Close an open object
\n", - "comments": "This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.
\n\nIMPORTANT: It is necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.
\n", - "group": "object", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_object_free-14", - "ex/HEAD/blame.html#git_object_free-15", - "ex/HEAD/blame.html#git_object_free-16", - "ex/HEAD/blame.html#git_object_free-17" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_object_free-17" - ], - "general.c": [ - "ex/HEAD/general.html#git_object_free-32" - ], - "log.c": [ - "ex/HEAD/log.html#git_object_free-38" - ], - "rev-parse.c": [ - "ex/HEAD/rev-parse.html#git_object_free-9", - "ex/HEAD/rev-parse.html#git_object_free-10", - "ex/HEAD/rev-parse.html#git_object_free-11" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_object_free-7", - "ex/HEAD/tag.html#git_object_free-8", - "ex/HEAD/tag.html#git_object_free-9", - "ex/HEAD/tag.html#git_object_free-10" - ] - } + "description": "Find a merge base in preparation for an octopus merge
\n", + "comments": "", + "group": "merge" }, - "git_object_type2string": { + "git_merge_file": { "type": "function", - "file": "object.h", - "line": 169, - "lineto": 169, + "file": "git2/merge.h", + "line": 561, + "lineto": 566, "args": [ { - "name": "type", - "type": "git_otype", - "comment": "object type to convert." + "name": "out", + "type": "git_merge_file_result *", + "comment": "The git_merge_file_result to be filled in" + }, + { + "name": "ancestor", + "type": "const git_merge_file_input *", + "comment": "The contents of the ancestor file" + }, + { + "name": "ours", + "type": "const git_merge_file_input *", + "comment": "The contents of the file in \"our\" side" + }, + { + "name": "theirs", + "type": "const git_merge_file_input *", + "comment": "The contents of the file in \"their\" side" + }, + { + "name": "opts", + "type": "const git_merge_file_options *", + "comment": "The merge file options or `NULL` for defaults" } ], - "argline": "git_otype type", - "sig": "git_otype", - "return": { - "type": "const char *", - "comment": " the corresponding string representation." - }, - "description": "Convert an object type to its string representation.
\n", - "comments": "The result is a pointer to a string in static memory and should not be free()'ed.
\n", - "group": "object", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_object_type2string-18", - "ex/HEAD/cat-file.html#git_object_type2string-19", - "ex/HEAD/cat-file.html#git_object_type2string-20", - "ex/HEAD/cat-file.html#git_object_type2string-21" - ], - "general.c": [ - "ex/HEAD/general.html#git_object_type2string-33" - ] - } + "argline": "git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts", + "sig": "git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n git_merge_file_result that reflects the merge result. The\n git_merge_file_result must be freed with git_merge_file_result_free.
Note that this function does not reference a repository and any configuration must be passed as git_merge_file_options.
Convert a string object type representation to it's git_otype.
\n", - "comments": "", - "group": "object" - }, - "git_object_typeisloose": { - "type": "function", - "file": "object.h", - "line": 186, - "lineto": 186, - "args": [ + "name": "out", + "type": "git_merge_file_result *", + "comment": "The git_merge_file_result to be filled in" + }, { - "name": "type", - "type": "git_otype", - "comment": "object type to test." + "name": "repo", + "type": "git_repository *", + "comment": "The repository" + }, + { + "name": "ancestor", + "type": "const git_index_entry *", + "comment": "The index entry for the ancestor file (stage level 1)" + }, + { + "name": "ours", + "type": "const git_index_entry *", + "comment": "The index entry for our file (stage level 2)" + }, + { + "name": "theirs", + "type": "const git_index_entry *", + "comment": "The index entry for their file (stage level 3)" + }, + { + "name": "opts", + "type": "const git_merge_file_options *", + "comment": "The merge file options or NULL" } ], - "argline": "git_otype type", - "sig": "git_otype", - "return": { - "type": "int", - "comment": " true if the type represents a valid loose object type,\n false otherwise." - }, - "description": "Determine if the given git_otype is a valid loose object type.
\n", + "argline": "git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts", + "sig": "git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a git_merge_file_result that\n reflects the merge result. The git_merge_file_result must be freed with\n git_merge_file_result_free.
Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.
\n", - "comments": "For all the core types, this would the equivalent of calling sizeof(git_commit) if the core types were not opaque on the external API.
Frees a git_merge_file_result.
Recursively peel an object until an object of the specified type is met.
\n", - "comments": "If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).
\n\nIf you pass GIT_OBJ_ANY as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.
If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.
\n\nYou must free the returned object.
\n", - "group": "object" + "argline": "git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts", + "sig": "git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Merge two trees, producing a git_index that reflects the result of\n the merge. The index may be written as-is to the working directory\n or checked out. If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.
The returned index must be freed explicitly with git_index_free.
Create an in-memory copy of a Git object. The copy must be\n explicitly free'd or it will leak.
\n", - "comments": "", - "group": "object" + "argline": "git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts", + "sig": "git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Merge two commits, producing a git_index that reflects the result of\n the merge. The index may be written as-is to the working directory\n or checked out. If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.
The returned index must be freed explicitly with git_index_free.
Create a new object database with no backends.
\n", - "comments": "Before the ODB can be used for read/writing, a custom database backend must be manually added using git_odb_add_backend()
Merges the given commit(s) into HEAD, writing the results into the working\n directory. Any changes are staged for commit and any conflicts are written\n to the index. Callers should inspect the repository's index after this\n completes, resolve any conflicts and prepare a commit.
\n", + "comments": "For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the user wishes to abort), you should clear this state by calling git_repository_state_cleanup().
Create a new object database and automatically add\n the two default backends:
\n", - "comments": "- git_odb_backend_loose: read and write loose object files from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles, assuming `objects_dir` as the Objects folder which contains a 'pack/' folder with the corresponding data\n\n",
- "group": "odb"
+ "argline": "git_buf *out, const char *message, int strip_comments, char comment_char",
+ "sig": "git_buf *::const char *::int::char",
+ "return": { "type": "int", "comment": " 0 or an error code." },
+ "description": "Clean up excess whitespace and make sure there is a trailing newline in the message.
\n", + "comments": "Optionally, it can remove lines which start with the comment character.
\n", + "group": "message" }, - "git_odb_add_disk_alternate": { + "git_message_trailers": { "type": "function", - "file": "odb.h", - "line": 74, - "lineto": 74, + "file": "git2/message.h", + "line": 73, + "lineto": 73, "args": [ { - "name": "odb", - "type": "git_odb *", - "comment": "database to add the backend to" + "name": "arr", + "type": "git_message_trailer_array *", + "comment": "A pre-allocated git_message_trailer_array struct to be filled in\n with any trailers found during parsing." }, { - "name": "path", + "name": "message", "type": "const char *", - "comment": "path to the objects folder for the alternate" + "comment": "The message to be parsed" } ], - "argline": "git_odb *odb, const char *path", - "sig": "git_odb *::const char *", + "argline": "git_message_trailer_array *arr, const char *message", + "sig": "git_message_trailer_array *::const char *", "return": { "type": "int", - "comment": " 0 on success; error code otherwise" + "comment": " 0 on success, or non-zero on error." }, - "description": "Add an on-disk alternate to an existing Object DB.
\n", - "comments": "Note that the added path must point to an objects, not to a full repository, to use it as an alternate store.
Alternate backends are always checked for objects after all the main backends have been exhausted.
\n\nWriting is disabled on alternate backends.
\n", - "group": "odb" + "description": "Parse trailers out of a message, filling the array pointed to by +arr+.
\n", + "comments": "Trailers are key/value pairs in the last paragraph of a message, not including any patches or conflicts that may be present.
\n", + "group": "message" }, - "git_odb_free": { + "git_message_trailer_array_free": { "type": "function", - "file": "odb.h", + "file": "git2/message.h", "line": 81, "lineto": 81, "args": [ { - "name": "db", - "type": "git_odb *", - "comment": "database pointer to close. If NULL no action is taken." + "name": "arr", + "type": "git_message_trailer_array *", + "comment": "The trailer to free." } ], - "argline": "git_odb *db", - "sig": "git_odb *", - "return": { - "type": "void", - "comment": null - }, - "description": "Close an open object database.
\n", + "argline": "git_message_trailer_array *arr", + "sig": "git_message_trailer_array *", + "return": { "type": "void", "comment": null }, + "description": "Clean's up any allocated memory in the git_message_trailer_array filled by\n a call to git_message_trailers.
\n", "comments": "", - "group": "odb", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_odb_free-22" - ] - } + "group": "message" }, - "git_odb_read": { + "git_note_iterator_free": { "type": "function", - "file": "odb.h", - "line": 100, - "lineto": 100, + "file": "git2/notes.h", + "line": 75, + "lineto": 75, "args": [ { - "name": "out", - "type": "git_odb_object **", - "comment": "pointer where to store the read object" - }, - { - "name": "db", - "type": "git_odb *", - "comment": "database to search for the object in." - }, - { - "name": "id", - "type": "const git_oid *", - "comment": "identity of the object to read." + "name": "it", + "type": "git_note_iterator *", + "comment": "pointer to the iterator" } ], - "argline": "git_odb_object **out, git_odb *db, const git_oid *id", - "sig": "git_odb_object **::git_odb *::const git_oid *", - "return": { - "type": "int", - "comment": " - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database." - }, - "description": "Read an object from the database.
\n", - "comments": "This method queries all available ODB backends trying to read the given OID.
\n\nThe returned object is reference counted and internally cached, so it should be closed by the user once it's no longer in use.
\n", - "group": "odb", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_odb_read-23" - ], - "general.c": [ - "ex/HEAD/general.html#git_odb_read-34" - ] - } + "argline": "git_note_iterator *it", + "sig": "git_note_iterator *", + "return": { "type": "void", "comment": null }, + "description": "Frees an git_note_iterator
\n", + "comments": "", + "group": "note" }, - "git_odb_read_prefix": { + "git_note_next": { "type": "function", - "file": "odb.h", - "line": 129, - "lineto": 129, + "file": "git2/notes.h", + "line": 88, + "lineto": 91, "args": [ { - "name": "out", - "type": "git_odb_object **", - "comment": "pointer where to store the read object" - }, - { - "name": "db", - "type": "git_odb *", - "comment": "database to search for the object in." + "name": "note_id", + "type": "git_oid *", + "comment": "id of blob containing the message" }, { - "name": "short_id", - "type": "const git_oid *", - "comment": "a prefix of the id of the object to read." + "name": "annotated_id", + "type": "git_oid *", + "comment": "id of the git object being annotated" }, { - "name": "len", - "type": "size_t", - "comment": "the length of the prefix" + "name": "it", + "type": "git_note_iterator *", + "comment": "pointer to the iterator" } ], - "argline": "git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len", - "sig": "git_odb_object **::git_odb *::const git_oid *::size_t", + "argline": "git_oid *note_id, git_oid *annotated_id, git_note_iterator *it", + "sig": "git_oid *::git_oid *::git_note_iterator *", "return": { "type": "int", - "comment": " - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)" + "comment": " 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n (negative value)" }, - "description": "Read an object from the database, given a prefix\n of its identifier.
\n", - "comments": "This method queries all available ODB backends trying to match the 'len' first hexadecimal characters of the 'short_id'. The remaining (GIT_OID_HEXSZ-len)*4 bits of 'short_id' must be 0s. 'len' must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.
\n\nThe returned object is reference counted and internally cached, so it should be closed by the user once it's no longer in use.
\n", - "group": "odb" + "description": "Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value
\n", + "comments": "", + "group": "note" }, - "git_odb_read_header": { + "git_object_lookup": { "type": "function", - "file": "odb.h", - "line": 149, - "lineto": 149, + "file": "git2/object.h", + "line": 45, + "lineto": 49, "args": [ { - "name": "len_out", - "type": "size_t *", - "comment": "pointer where to store the length" - }, - { - "name": "type_out", - "type": "git_otype *", - "comment": "pointer where to store the type" + "name": "object", + "type": "git_object **", + "comment": "pointer to the looked-up object" }, { - "name": "db", - "type": "git_odb *", - "comment": "database to search for the object in." + "name": "repo", + "type": "git_repository *", + "comment": "the repository to look up the object" }, { "name": "id", "type": "const git_oid *", - "comment": "identity of the object to read." - } - ], - "argline": "size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id", - "sig": "size_t *::git_otype *::git_odb *::const git_oid *", - "return": { - "type": "int", - "comment": " - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database." - }, - "description": "Read the header of an object from the database, without\n reading its full contents.
\n", - "comments": "The header includes the length and the type of an object.
\n\nNote that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.
\n", - "group": "odb" - }, - "git_odb_exists": { - "type": "function", - "file": "odb.h", - "line": 160, - "lineto": 160, - "args": [ - { - "name": "db", - "type": "git_odb *", - "comment": "database to be searched for the given object." + "comment": "the unique identifier for the object" }, { - "name": "id", - "type": "const git_oid *", - "comment": "the object to search for." + "name": "type", + "type": "git_object_t", + "comment": "the type of the object" } ], - "argline": "git_odb *db, const git_oid *id", - "sig": "git_odb *::const git_oid *", - "return": { - "type": "int", - "comment": " - 1, if the object was found\n - 0, otherwise" - }, - "description": "Determine if the given object can be found in the object database.
\n", - "comments": "", - "group": "odb" + "argline": "git_object **object, git_repository *repo, const git_oid *id, git_object_t type", + "sig": "git_object **::git_repository *::const git_oid *::git_object_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a reference to one of the objects in a repository.
\n", + "comments": "The generated reference is owned by the repository and should be closed with the git_object_free method instead of free'd manually.
The 'type' parameter must match the type of the object in the odb; the method will fail otherwise. The special value 'GIT_OBJECT_ANY' may be passed to let the method guess the object's type.
\n", + "group": "object", + "examples": { + "log.c": ["ex/v1.9.1/log.html#git_object_lookup-32"], + "merge.c": ["ex/v1.9.1/merge.html#git_object_lookup-17"] + } }, - "git_odb_exists_prefix": { + "git_object_lookup_prefix": { "type": "function", - "file": "odb.h", - "line": 173, - "lineto": 174, + "file": "git2/object.h", + "line": 78, + "lineto": 83, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "The full OID of the found object if just one is found." + "name": "object_out", + "type": "git_object **", + "comment": "pointer where to store the looked-up object" }, { - "name": "db", - "type": "git_odb *", - "comment": "The database to be searched for the given object." + "name": "repo", + "type": "git_repository *", + "comment": "the repository to look up the object" }, { - "name": "short_id", + "name": "id", "type": "const git_oid *", - "comment": "A prefix of the id of the object to read." + "comment": "a short identifier for the object" }, { "name": "len", "type": "size_t", - "comment": "The length of the prefix." + "comment": "the length of the short identifier" + }, + { + "name": "type", + "type": "git_object_t", + "comment": "the type of the object" } ], - "argline": "git_oid *out, git_odb *db, const git_oid *short_id, size_t len", - "sig": "git_oid *::git_odb *::const git_oid *::size_t", - "return": { - "type": "int", - "comment": " 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n matches were found, other value \n<\n 0 if there was a read error." - }, - "description": "Determine if an object can be found in the object database by an\n abbreviated object ID.
\n", - "comments": "", - "group": "odb" + "argline": "git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_object_t type", + "sig": "git_object **::git_repository *::const git_oid *::size_t::git_object_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).
\n", + "comments": "The object obtained will be so that its identifier matches the first 'len' hexadecimal characters (packets of 4 bits) of the given id. len must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.
The generated reference is owned by the repository and should be closed with the git_object_free method instead of free'd manually.
The type parameter must match the type of the object in the odb; the method will fail otherwise. The special value GIT_OBJECT_ANY may be passed to let the method guess the object's type.
Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type. The given array will be\n updated in place: for each abbreviated ID that is unique in the\n database, and of the given type (if specified), the full object ID,\n object ID length (GIT_OID_HEXSZ) and type will be written back to\n the array. For IDs that are not found (or are ambiguous), the\n array entry will be zeroed.
Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)
\n", - "group": "odb" + "argline": "git_object **out, const git_object *treeish, const char *path, git_object_t type", + "sig": "git_object **::const git_object *::const char *::git_object_t", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Lookup an object that represents a tree entry.
\n", + "comments": "", + "group": "object" }, - "git_odb_refresh": { + "git_object_id": { "type": "function", - "file": "odb.h", - "line": 238, - "lineto": 238, + "file": "git2/object.h", + "line": 108, + "lineto": 108, "args": [ { - "name": "db", - "type": "struct git_odb *", - "comment": "database to refresh" + "name": "obj", + "type": "const git_object *", + "comment": "the repository object" } ], - "argline": "struct git_odb *db", - "sig": "struct git_odb *", - "return": { - "type": "int", - "comment": " 0 on success, error code otherwise" - }, - "description": "Refresh the object database to load newly added files.
\n", - "comments": "If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.
\n\nUse this function when you're confident that an external application has tampered with the ODB.
\n\nNOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn't been loaded yet.
\n", - "group": "odb" + "argline": "const git_object *obj", + "sig": "const git_object *", + "return": { "type": "const git_oid *", "comment": " the SHA1 id" }, + "description": "Get the id (SHA1) of a repository object
\n", + "comments": "", + "group": "object", + "examples": { + "blame.c": [ + "ex/v1.9.1/blame.html#git_object_id-7", + "ex/v1.9.1/blame.html#git_object_id-8", + "ex/v1.9.1/blame.html#git_object_id-9", + "ex/v1.9.1/blame.html#git_object_id-10" + ], + "cat-file.c": [ + "ex/v1.9.1/cat-file.html#git_object_id-10", + "ex/v1.9.1/cat-file.html#git_object_id-11" + ], + "log.c": [ + "ex/v1.9.1/log.html#git_object_id-33", + "ex/v1.9.1/log.html#git_object_id-34", + "ex/v1.9.1/log.html#git_object_id-35", + "ex/v1.9.1/log.html#git_object_id-36" + ], + "rev-parse.c": [ + "ex/v1.9.1/rev-parse.html#git_object_id-2", + "ex/v1.9.1/rev-parse.html#git_object_id-3", + "ex/v1.9.1/rev-parse.html#git_object_id-4", + "ex/v1.9.1/rev-parse.html#git_object_id-5", + "ex/v1.9.1/rev-parse.html#git_object_id-6" + ] + } }, - "git_odb_foreach": { + "git_object_short_id": { "type": "function", - "file": "odb.h", - "line": 253, - "lineto": 253, + "file": "git2/object.h", + "line": 122, + "lineto": 122, "args": [ { - "name": "db", - "type": "git_odb *", - "comment": "database to use" + "name": "out", + "type": "git_buf *", + "comment": "Buffer to write string into" }, { - "name": "cb", - "type": "git_odb_foreach_cb", - "comment": "the callback to call for each object" - }, + "name": "obj", + "type": "const git_object *", + "comment": "The object to get an ID for" + } + ], + "argline": "git_buf *out, const git_object *obj", + "sig": "git_buf *::const git_object *", + "return": { "type": "int", "comment": " 0 on success, \n<\n0 for error" }, + "description": "Get a short abbreviated OID string for the object
\n", + "comments": "This starts at the "core.abbrev" length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).
\n", + "group": "object", + "examples": { "tag.c": ["ex/v1.9.1/tag.html#git_object_short_id-3"] } + }, + "git_object_type": { + "type": "function", + "file": "git2/object.h", + "line": 130, + "lineto": 130, + "args": [ { - "name": "payload", - "type": "void *", - "comment": "data to pass to the callback" + "name": "obj", + "type": "const git_object *", + "comment": "the repository object" } ], - "argline": "git_odb *db, git_odb_foreach_cb cb, void *payload", - "sig": "git_odb *::git_odb_foreach_cb::void *", + "argline": "const git_object *obj", + "sig": "const git_object *", + "return": { "type": "git_object_t", "comment": " the object's type" }, + "description": "Get the object type of an object
\n", + "comments": "", + "group": "object", + "examples": { + "cat-file.c": [ + "ex/v1.9.1/cat-file.html#git_object_type-12", + "ex/v1.9.1/cat-file.html#git_object_type-13", + "ex/v1.9.1/cat-file.html#git_object_type-14" + ], + "tag.c": ["ex/v1.9.1/tag.html#git_object_type-4"] + } + }, + "git_object_owner": { + "type": "function", + "file": "git2/object.h", + "line": 144, + "lineto": 144, + "args": [ + { "name": "obj", "type": "const git_object *", "comment": "the object" } + ], + "argline": "const git_object *obj", + "sig": "const git_object *", "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" + "type": "git_repository *", + "comment": " the repository who owns this object" }, - "description": "List all objects available in the database
\n", - "comments": "The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.
\n", - "group": "odb" + "description": "Get the repository that owns this object
\n", + "comments": "Freeing or calling git_repository_close on the returned pointer will invalidate the actual object.
Any other operation may be run on the repository without affecting the object.
\n", + "group": "object" }, - "git_odb_write": { + "git_object_free": { "type": "function", - "file": "odb.h", - "line": 273, - "lineto": 273, + "file": "git2/object.h", + "line": 161, + "lineto": 161, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "pointer to store the OID result of the write" - }, - { - "name": "odb", - "type": "git_odb *", - "comment": "object database where to store the object" - }, - { - "name": "data", - "type": "const void *", - "comment": "buffer with the data to store" - }, - { - "name": "len", - "type": "size_t", - "comment": "size of the buffer" - }, - { - "name": "type", - "type": "git_otype", - "comment": "type of the data to store" + "name": "object", + "type": "git_object *", + "comment": "the object to close" } ], - "argline": "git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type", - "sig": "git_oid *::git_odb *::const void *::size_t::git_otype", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Write an object directly into the ODB
\n", - "comments": "This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.
\n\nThis method is provided for compatibility with custom backends which are not able to support streaming writes
\n", - "group": "odb", + "argline": "git_object *object", + "sig": "git_object *", + "return": { "type": "void", "comment": null }, + "description": "Close an open object
\n", + "comments": "This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.
\n\nIMPORTANT: It is necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.
\n", + "group": "object", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_odb_write-35" + "blame.c": [ + "ex/v1.9.1/blame.html#git_object_free-11", + "ex/v1.9.1/blame.html#git_object_free-12", + "ex/v1.9.1/blame.html#git_object_free-13", + "ex/v1.9.1/blame.html#git_object_free-14" + ], + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_object_free-15"], + "commit.c": ["ex/v1.9.1/commit.html#git_object_free-6"], + "general.c": ["ex/v1.9.1/general.html#git_object_free-38"], + "log.c": ["ex/v1.9.1/log.html#git_object_free-37"], + "merge.c": ["ex/v1.9.1/merge.html#git_object_free-18"], + "rev-parse.c": [ + "ex/v1.9.1/rev-parse.html#git_object_free-7", + "ex/v1.9.1/rev-parse.html#git_object_free-8", + "ex/v1.9.1/rev-parse.html#git_object_free-9" + ], + "tag.c": [ + "ex/v1.9.1/tag.html#git_object_free-5", + "ex/v1.9.1/tag.html#git_object_free-6", + "ex/v1.9.1/tag.html#git_object_free-7", + "ex/v1.9.1/tag.html#git_object_free-8" ] } }, - "git_odb_open_wstream": { + "git_object_type2string": { "type": "function", - "file": "odb.h", - "line": 296, - "lineto": 296, + "file": "git2/object.h", + "line": 172, + "lineto": 172, "args": [ - { - "name": "out", - "type": "git_odb_stream **", - "comment": "pointer where to store the stream" - }, - { - "name": "db", - "type": "git_odb *", - "comment": "object database where the stream will write" - }, - { - "name": "size", - "type": "git_off_t", - "comment": "final size of the object that will be written" - }, { "name": "type", - "type": "git_otype", - "comment": "type of the object that will be written" + "type": "git_object_t", + "comment": "object type to convert." } ], - "argline": "git_odb_stream **out, git_odb *db, git_off_t size, git_otype type", - "sig": "git_odb_stream **::git_odb *::git_off_t::git_otype", + "argline": "git_object_t type", + "sig": "git_object_t", "return": { - "type": "int", - "comment": " 0 if the stream was created; error code otherwise" + "type": "const char *", + "comment": " the corresponding string representation." }, - "description": "Open a stream to write an object into the ODB
\n", - "comments": "The type and final length of the object must be specified when opening the stream.
\n\nThe returned stream will be of type GIT_STREAM_WRONLY, and it won't be effective until git_odb_stream_finalize_write is called and returns without an error
The stream must always be freed when done with git_odb_stream_free or will leak memory.
Convert an object type to its string representation.
\n", + "comments": "The result is a pointer to a string in static memory and should not be free()'ed.
\n", + "group": "object", + "examples": { + "cat-file.c": [ + "ex/v1.9.1/cat-file.html#git_object_type2string-16", + "ex/v1.9.1/cat-file.html#git_object_type2string-17", + "ex/v1.9.1/cat-file.html#git_object_type2string-18", + "ex/v1.9.1/cat-file.html#git_object_type2string-19" + ], + "general.c": [ + "ex/v1.9.1/general.html#git_object_type2string-39", + "ex/v1.9.1/general.html#git_object_type2string-40" + ] + } }, - "git_odb_stream_write": { + "git_object_string2type": { "type": "function", - "file": "odb.h", - "line": 309, - "lineto": 309, + "file": "git2/object.h", + "line": 180, + "lineto": 180, "args": [ { - "name": "stream", - "type": "git_odb_stream *", - "comment": "the stream" - }, - { - "name": "buffer", + "name": "str", "type": "const char *", - "comment": "the data to write" - }, - { - "name": "len", - "type": "size_t", - "comment": "the buffer's length" + "comment": "the string to convert." } ], - "argline": "git_odb_stream *stream, const char *buffer, size_t len", - "sig": "git_odb_stream *::const char *::size_t", + "argline": "const char *str", + "sig": "const char *", "return": { - "type": "int", - "comment": " 0 if the write succeeded; error code otherwise" + "type": "git_object_t", + "comment": " the corresponding git_object_t." }, - "description": "Write to an odb stream
\n", - "comments": "This method will fail if the total number of received bytes exceeds the size declared with git_odb_open_wstream()
Convert a string object type representation to it's git_object_t.
\n", + "comments": "", + "group": "object" }, - "git_odb_stream_finalize_write": { + "git_object_typeisloose": { "type": "function", - "file": "odb.h", - "line": 324, - "lineto": 324, + "file": "git2/object.h", + "line": 189, + "lineto": 189, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "pointer to store the resulting object's id" - }, - { - "name": "stream", - "type": "git_odb_stream *", - "comment": "the stream" + "name": "type", + "type": "git_object_t", + "comment": "object type to test." } ], - "argline": "git_oid *out, git_odb_stream *stream", - "sig": "git_oid *::git_odb_stream *", + "argline": "git_object_t type", + "sig": "git_object_t", "return": { "type": "int", - "comment": " 0 on success; an error code otherwise" + "comment": " true if the type represents a valid loose object type,\n false otherwise." }, - "description": "Finish writing to an odb stream
\n", - "comments": "The object will take its final name and will be available to the odb.
\n\nThis method will fail if the total number of received bytes differs from the size declared with git_odb_open_wstream()
Determine if the given git_object_t is a valid loose object type.
\n", + "comments": "", + "group": "object" }, - "git_odb_stream_read": { + "git_object_peel": { "type": "function", - "file": "odb.h", - "line": 331, - "lineto": 331, + "file": "git2/object.h", + "line": 214, + "lineto": 217, "args": [ { - "name": "stream", - "type": "git_odb_stream *", - "comment": null + "name": "peeled", + "type": "git_object **", + "comment": "Pointer to the peeled git_object" }, { - "name": "buffer", - "type": "char *", - "comment": null + "name": "object", + "type": "const git_object *", + "comment": "The object to be processed" }, { - "name": "len", - "type": "size_t", - "comment": null + "name": "target_type", + "type": "git_object_t", + "comment": "The type of the requested object (a GIT_OBJECT_ value)" } ], - "argline": "git_odb_stream *stream, char *buffer, size_t len", - "sig": "git_odb_stream *::char *::size_t", + "argline": "git_object **peeled, const git_object *object, git_object_t target_type", + "sig": "git_object **::const git_object *::git_object_t", "return": { "type": "int", - "comment": null + "comment": " 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code" }, - "description": "Read from an odb stream
\n", - "comments": "Most backends don't implement streaming reads
\n", - "group": "odb" + "description": "Recursively peel an object until an object of the specified type is met.
\n", + "comments": "If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).
\n\nIf you pass GIT_OBJECT_ANY as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.
If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.
\n\nYou must free the returned object.
\n", + "group": "object" }, - "git_odb_stream_free": { + "git_object_dup": { "type": "function", - "file": "odb.h", - "line": 338, - "lineto": 338, + "file": "git2/object.h", + "line": 227, + "lineto": 227, "args": [ { - "name": "stream", - "type": "git_odb_stream *", - "comment": "the stream to free" + "name": "dest", + "type": "git_object **", + "comment": "Pointer to store the copy of the object" + }, + { + "name": "source", + "type": "git_object *", + "comment": "Original object to copy" } ], - "argline": "git_odb_stream *stream", - "sig": "git_odb_stream *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free an odb stream
\n", + "argline": "git_object **dest, git_object *source", + "sig": "git_object **::git_object *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create an in-memory copy of a Git object. The copy must be\n explicitly free'd or it will leak.
\n", "comments": "", - "group": "odb" + "group": "object" }, - "git_odb_open_rstream": { + "git_object_rawcontent_is_valid": { "type": "function", - "file": "odb.h", - "line": 364, - "lineto": 364, + "file": "git2/object.h", + "line": 270, + "lineto": 274, "args": [ { - "name": "out", - "type": "git_odb_stream **", - "comment": "pointer where to store the stream" + "name": "valid", + "type": "int *", + "comment": "Output pointer to set with validity of the object content" }, { - "name": "db", - "type": "git_odb *", - "comment": "object database where the stream will read from" + "name": "buf", + "type": "const char *", + "comment": "The contents to validate" }, { - "name": "oid", - "type": "const git_oid *", - "comment": "oid of the object the stream will read from" + "name": "len", + "type": "size_t", + "comment": "The length of the buffer" + }, + { + "name": "object_type", + "type": "git_object_t", + "comment": "The type of the object in the buffer" } ], - "argline": "git_odb_stream **out, git_odb *db, const git_oid *oid", - "sig": "git_odb_stream **::git_odb *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 if the stream was created; error code otherwise" - }, - "description": "Open a stream to read an object from the ODB
\n", - "comments": "Note that most backends do not support streaming reads because they store their objects as compressed/delta'ed blobs.
\n\nIt's recommended to use git_odb_read instead, which is assured to work on all backends.
The returned stream will be of type GIT_STREAM_RDONLY and will have the following methods:
- stream->read: read `n` bytes from the stream - stream->free: free the stream\n\n\nThe stream must always be free'd or will leak memory.
\n", + "argline": "int *valid, const char *buf, size_t len, git_object_t object_type", + "sig": "int *::const char *::size_t::git_object_t", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Analyzes a buffer of raw object content and determines its validity.\n Tree, commit, and tag objects will be parsed and ensured that they\n are valid, parseable content. (Blobs are always valid by definition.)\n An error message will be set with an informative message if the object\n is not valid.
\n", + "comments": "", + "group": "object" + }, + "git_odb_new": { + "type": "function", + "file": "git2/odb.h", + "line": 102, + "lineto": 102, + "args": [ + { + "name": "odb", + "type": "git_odb **", + "comment": "location to store the database pointer, if opened." + } + ], + "argline": "git_odb **odb", + "sig": "git_odb **", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a new object database with no backends.
\n", + "comments": "Before the ODB can be used for read/writing, a custom database backend must be manually added using git_odb_add_backend()
Create a new object database and automatically add\n the two default backends:
\n", + "comments": "- git_odb_backend_loose: read and write loose object files from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles, assuming `objects_dir` as the Objects folder which contains a 'pack/' folder with the corresponding data\n\n",
+ "group": "odb"
+ },
+ "git_odb_add_disk_alternate": {
+ "type": "function",
+ "file": "git2/odb.h",
+ "line": 138,
+ "lineto": 138,
+ "args": [
{
- "name": "progress_cb",
- "type": "git_transfer_progress_cb",
- "comment": "function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."
+ "name": "odb",
+ "type": "git_odb *",
+ "comment": "database to add the backend to"
},
{
- "name": "progress_payload",
- "type": "void *",
- "comment": "payload for the progress callback"
+ "name": "path",
+ "type": "const char *",
+ "comment": "path to the objects folder for the alternate"
}
],
- "argline": "git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload",
- "sig": "git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *",
+ "argline": "git_odb *odb, const char *path",
+ "sig": "git_odb *::const char *",
"return": {
"type": "int",
- "comment": null
+ "comment": " 0 on success, error code otherwise"
},
- "description": "Open a stream for writing a pack file to the ODB.
\n", - "comments": "If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created). If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.
\n", + "description": "Add an on-disk alternate to an existing Object DB.
\n", + "comments": "Note that the added path must point to an objects, not to a full repository, to use it as an alternate store.
Alternate backends are always checked for objects after all the main backends have been exhausted.
\n\nWriting is disabled on alternate backends.
\n", "group": "odb" }, - "git_odb_hash": { + "git_odb_free": { "type": "function", - "file": "odb.h", - "line": 402, - "lineto": 402, + "file": "git2/odb.h", + "line": 145, + "lineto": 145, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "the resulting object-ID." - }, + "name": "db", + "type": "git_odb *", + "comment": "database pointer to close. If NULL no action is taken." + } + ], + "argline": "git_odb *db", + "sig": "git_odb *", + "return": { "type": "void", "comment": null }, + "description": "Close an open object database.
\n", + "comments": "", + "group": "odb", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_odb_free-20"], + "general.c": ["ex/v1.9.1/general.html#git_odb_free-41"] + } + }, + "git_odb_read": { + "type": "function", + "file": "git2/odb.h", + "line": 163, + "lineto": 163, + "args": [ { - "name": "data", - "type": "const void *", - "comment": "data to hash" + "name": "obj", + "type": "git_odb_object **", + "comment": "pointer where to store the read object" }, { - "name": "len", - "type": "size_t", - "comment": "size of the data" + "name": "db", + "type": "git_odb *", + "comment": "database to search for the object in." }, { - "name": "type", - "type": "git_otype", - "comment": "of the data to hash" + "name": "id", + "type": "const git_oid *", + "comment": "identity of the object to read." } ], - "argline": "git_oid *out, const void *data, size_t len, git_otype type", - "sig": "git_oid *::const void *::size_t::git_otype", + "argline": "git_odb_object **obj, git_odb *db, const git_oid *id", + "sig": "git_odb_object **::git_odb *::const git_oid *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the object was read, GIT_ENOTFOUND if the object is\n not in the database." }, - "description": "Determine the object-ID (sha1 hash) of a data buffer
\n", - "comments": "The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.
\n", - "group": "odb" + "description": "Read an object from the database.
\n", + "comments": "This method queries all available ODB backends trying to read the given OID.
\n\nThe returned object is reference counted and internally cached, so it should be closed by the user once it's no longer in use.
\n", + "group": "odb", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_odb_read-21"], + "general.c": ["ex/v1.9.1/general.html#git_odb_read-42"] + } }, - "git_odb_hashfile": { + "git_odb_read_prefix": { "type": "function", - "file": "odb.h", - "line": 417, - "lineto": 417, + "file": "git2/odb.h", + "line": 191, + "lineto": 191, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "oid structure the result is written into." + "name": "obj", + "type": "git_odb_object **", + "comment": "pointer where to store the read object" }, { - "name": "path", - "type": "const char *", - "comment": "file to read and determine object id for" + "name": "db", + "type": "git_odb *", + "comment": "database to search for the object in." }, { - "name": "type", - "type": "git_otype", - "comment": "the type of the object that will be hashed" + "name": "short_id", + "type": "const git_oid *", + "comment": "a prefix of the id of the object to read." + }, + { + "name": "len", + "type": "size_t", + "comment": "the length of the prefix" } ], - "argline": "git_oid *out, const char *path, git_otype type", - "sig": "git_oid *::const char *::git_otype", + "argline": "git_odb_object **obj, git_odb *db, const git_oid *short_id, size_t len", + "sig": "git_odb_object **::git_odb *::const git_oid *::size_t", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the object was read, GIT_ENOTFOUND if the object is not in the\n database. GIT_EAMBIGUOUS if the prefix is ambiguous\n (several objects match the prefix)" }, - "description": "Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git's git hash-object without\n the -w flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.
Read an object from the database, given a prefix\n of its identifier.
\n", + "comments": "This method queries all available ODB backends trying to match the 'len' first hexadecimal characters of the 'short_id'. The remaining (GIT_OID_SHA1_HEXSIZE-len)*4 bits of 'short_id' must be 0s. 'len' must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.
\n\nThe returned object is reference counted and internally cached, so it should be closed by the user once it's no longer in use.
\n", "group": "odb" }, - "git_odb_object_dup": { + "git_odb_read_header": { "type": "function", - "file": "odb.h", - "line": 431, - "lineto": 431, + "file": "git2/odb.h", + "line": 210, + "lineto": 210, "args": [ { - "name": "dest", - "type": "git_odb_object **", - "comment": "pointer where to store the copy" + "name": "len_out", + "type": "size_t *", + "comment": "pointer where to store the length" }, { - "name": "source", - "type": "git_odb_object *", - "comment": "object to copy" + "name": "type_out", + "type": "git_object_t *", + "comment": "pointer where to store the type" + }, + { + "name": "db", + "type": "git_odb *", + "comment": "database to search for the object in." + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "identity of the object to read." } ], - "argline": "git_odb_object **dest, git_odb_object *source", - "sig": "git_odb_object **::git_odb_object *", + "argline": "size_t *len_out, git_object_t *type_out, git_odb *db, const git_oid *id", + "sig": "size_t *::git_object_t *::git_odb *::const git_oid *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the object was read, GIT_ENOTFOUND if the object is not\n in the database." }, - "description": "Create a copy of an odb_object
\n", - "comments": "The returned copy must be manually freed with git_odb_object_free. Note that because of an implementation detail, the returned copy will be the same pointer as source: the object is internally refcounted, so the copy still needs to be freed twice.
Read the header of an object from the database, without\n reading its full contents.
\n", + "comments": "The header includes the length and the type of an object.
\n\nNote that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.
\n", "group": "odb" }, - "git_odb_object_free": { + "git_odb_exists": { "type": "function", - "file": "odb.h", - "line": 441, - "lineto": 441, + "file": "git2/odb.h", + "line": 219, + "lineto": 219, "args": [ { - "name": "object", - "type": "git_odb_object *", - "comment": "object to close" + "name": "db", + "type": "git_odb *", + "comment": "database to be searched for the given object." + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "the object to search for." } ], - "argline": "git_odb_object *object", - "sig": "git_odb_object *", + "argline": "git_odb *db, const git_oid *id", + "sig": "git_odb *::const git_oid *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 1 if the object was found, 0 otherwise" }, - "description": "Close an ODB object
\n", - "comments": "This method must always be called once a git_odb_object is no longer needed, otherwise memory will leak.
Determine if the given object can be found in the object database.
\n", + "comments": "", + "group": "odb" }, - "git_odb_object_id": { + "git_odb_exists_ext": { "type": "function", - "file": "odb.h", - "line": 451, - "lineto": 451, + "file": "git2/odb.h", + "line": 230, + "lineto": 230, "args": [ { - "name": "object", - "type": "git_odb_object *", - "comment": "the object" + "name": "db", + "type": "git_odb *", + "comment": "database to be searched for the given object." + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "the object to search for." + }, + { + "name": "flags", + "type": "unsigned int", + "comment": "flags affecting the lookup (see `git_odb_lookup_flags_t`)" } ], - "argline": "git_odb_object *object", - "sig": "git_odb_object *", + "argline": "git_odb *db, const git_oid *id, unsigned int flags", + "sig": "git_odb *::const git_oid *::unsigned int", "return": { - "type": "const git_oid *", - "comment": " a pointer to the OID" + "type": "int", + "comment": " 1 if the object was found, 0 otherwise" }, - "description": "Return the OID of an ODB object
\n", - "comments": "This is the OID from which the object was read from
\n", + "description": "Determine if the given object can be found in the object database, with\n extended options.
\n", + "comments": "", "group": "odb" }, - "git_odb_object_data": { + "git_odb_exists_prefix": { "type": "function", - "file": "odb.h", - "line": 464, - "lineto": 464, + "file": "git2/odb.h", + "line": 243, + "lineto": 244, "args": [ { - "name": "object", - "type": "git_odb_object *", - "comment": "the object" - } - ], - "argline": "git_odb_object *object", - "sig": "git_odb_object *", - "return": { - "type": "const void *", - "comment": " a pointer to the data" - }, - "description": "Return the data of an ODB object
\n", - "comments": "This is the uncompressed, raw data as read from the ODB, without the leading header.
\n\nThis pointer is owned by the object and shall not be free'd.
\n", - "group": "odb", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_odb_object_data-37" - ] - } - }, - "git_odb_object_size": { - "type": "function", - "file": "odb.h", - "line": 475, - "lineto": 475, - "args": [ - { - "name": "object", - "type": "git_odb_object *", - "comment": "the object" - } - ], - "argline": "git_odb_object *object", - "sig": "git_odb_object *", - "return": { - "type": "size_t", - "comment": " the size" - }, - "description": "Return the size of an ODB object
\n", - "comments": "This is the real size of the data buffer, not the actual size of the object.
Return the type of an ODB object
\n", - "comments": "", - "group": "odb", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_odb_object_type-39" - ] - } - }, - "git_odb_add_backend": { - "type": "function", - "file": "odb.h", - "line": 498, - "lineto": 498, - "args": [ + "name": "out", + "type": "git_oid *", + "comment": "The full OID of the found object if just one is found." + }, { - "name": "odb", + "name": "db", "type": "git_odb *", - "comment": "database to add the backend to" + "comment": "The database to be searched for the given object." }, { - "name": "backend", - "type": "git_odb_backend *", - "comment": "pointer to a git_odb_backend instance" + "name": "short_id", + "type": "const git_oid *", + "comment": "A prefix of the id of the object to read." }, { - "name": "priority", - "type": "int", - "comment": "Value for ordering the backends queue" + "name": "len", + "type": "size_t", + "comment": "The length of the prefix." } ], - "argline": "git_odb *odb, git_odb_backend *backend, int priority", - "sig": "git_odb *::git_odb_backend *::int", + "argline": "git_oid *out, git_odb *db, const git_oid *short_id, size_t len", + "sig": "git_oid *::git_odb *::const git_oid *::size_t", "return": { "type": "int", - "comment": " 0 on success; error code otherwise" + "comment": " 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n matches were found, other value \n<\n 0 if there was a read error." }, - "description": "Add a custom backend to an existing Object DB
\n", - "comments": "The backends are checked in relative ordering, based on the value of the priority parameter.
Read
Determine if an object can be found in the object database by an\n abbreviated object ID.
\n", + "comments": "", "group": "odb" }, - "git_odb_add_alternate": { + "git_odb_expand_ids": { "type": "function", - "file": "odb.h", - "line": 519, - "lineto": 519, + "file": "git2/odb.h", + "line": 286, + "lineto": 289, "args": [ { - "name": "odb", + "name": "db", "type": "git_odb *", - "comment": "database to add the backend to" + "comment": "The database to be searched for the given objects." }, { - "name": "backend", - "type": "git_odb_backend *", - "comment": "pointer to a git_odb_backend instance" + "name": "ids", + "type": "git_odb_expand_id *", + "comment": "An array of short object IDs to search for" }, { - "name": "priority", - "type": "int", - "comment": "Value for ordering the backends queue" + "name": "count", + "type": "size_t", + "comment": "The length of the `ids` array" } ], - "argline": "git_odb *odb, git_odb_backend *backend, int priority", - "sig": "git_odb *::git_odb_backend *::int", + "argline": "git_odb *db, git_odb_expand_id *ids, size_t count", + "sig": "git_odb *::git_odb_expand_id *::size_t", "return": { "type": "int", - "comment": " 0 on success; error code otherwise" + "comment": " 0 on success or an error code on failure" }, - "description": "Add a custom backend to an existing Object DB; this\n backend will work as an alternate.
\n", - "comments": "Alternate backends are always checked for objects after all the main backends have been exhausted.
\n\nThe backends are checked in relative ordering, based on the value of the priority parameter.
Writing is disabled on alternate backends.
\n\nRead
Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type.
\n", + "comments": "The given array will be updated in place: for each abbreviated ID that is unique in the database, and of the given type (if specified), the full object ID, object ID length (GIT_OID_SHA1_HEXSIZE) and type will be written back to the array. For IDs that are not found (or are ambiguous), the array entry will be zeroed.
Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)
\n", "group": "odb" }, - "git_odb_num_backends": { + "git_odb_refresh": { "type": "function", - "file": "odb.h", - "line": 527, - "lineto": 527, + "file": "git2/odb.h", + "line": 309, + "lineto": 309, "args": [ - { - "name": "odb", - "type": "git_odb *", - "comment": "object database" - } + { "name": "db", "type": "git_odb *", "comment": "database to refresh" } ], - "argline": "git_odb *odb", + "argline": "git_odb *db", "sig": "git_odb *", "return": { - "type": "size_t", - "comment": " number of backends in the ODB" + "type": "int", + "comment": " 0 on success, error code otherwise" }, - "description": "Get the number of ODB backend objects
\n", - "comments": "", + "description": "Refresh the object database to load newly added files.
\n", + "comments": "If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.
\n\nUse this function when you're confident that an external application has tampered with the ODB.
\n\nNOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn't been loaded yet.
\n", "group": "odb" }, - "git_odb_get_backend": { + "git_odb_foreach": { "type": "function", - "file": "odb.h", - "line": 537, - "lineto": 537, + "file": "git2/odb.h", + "line": 324, + "lineto": 327, "args": [ + { "name": "db", "type": "git_odb *", "comment": "database to use" }, { - "name": "out", - "type": "git_odb_backend **", - "comment": "output pointer to ODB backend at pos" - }, - { - "name": "odb", - "type": "git_odb *", - "comment": "object database" + "name": "cb", + "type": "git_odb_foreach_cb", + "comment": "the callback to call for each object" }, { - "name": "pos", - "type": "size_t", - "comment": "index into object database backend list" + "name": "payload", + "type": "void *", + "comment": "data to pass to the callback" } ], - "argline": "git_odb_backend **out, git_odb *odb, size_t pos", - "sig": "git_odb_backend **::git_odb *::size_t", + "argline": "git_odb *db, git_odb_foreach_cb cb, void *payload", + "sig": "git_odb *::git_odb_foreach_cb::void *", "return": { "type": "int", - "comment": " 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0" + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Lookup an ODB backend object by index
\n", - "comments": "", + "description": "List all objects available in the database
\n", + "comments": "The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.
\n", "group": "odb" }, - "git_odb_backend_pack": { + "git_odb_write": { "type": "function", - "file": "odb_backend.h", - "line": 34, - "lineto": 34, + "file": "git2/odb.h", + "line": 347, + "lineto": 347, "args": [ { "name": "out", - "type": "git_odb_backend **", - "comment": "location to store the odb backend pointer" + "type": "git_oid *", + "comment": "pointer to store the OID result of the write" }, { - "name": "objects_dir", - "type": "const char *", - "comment": "the Git repository's objects directory" + "name": "odb", + "type": "git_odb *", + "comment": "object database where to store the object" + }, + { + "name": "data", + "type": "const void *", + "comment": "`const unsigned char *` buffer with the data to store" + }, + { "name": "len", "type": "size_t", "comment": "size of the buffer" }, + { + "name": "type", + "type": "git_object_t", + "comment": "type of the data to store" } ], - "argline": "git_odb_backend **out, const char *objects_dir", - "sig": "git_odb_backend **::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Create a backend for the packfiles.
\n", - "comments": "", - "group": "odb" + "argline": "git_oid *out, git_odb *odb, const void *data, size_t len, git_object_t type", + "sig": "git_oid *::git_odb *::const void *::size_t::git_object_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write an object directly into the ODB
\n", + "comments": "This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.
\n\nThis method is provided for compatibility with custom backends which are not able to support streaming writes
\n", + "group": "odb", + "examples": { "general.c": ["ex/v1.9.1/general.html#git_odb_write-43"] } }, - "git_odb_backend_loose": { + "git_odb_open_wstream": { "type": "function", - "file": "odb_backend.h", - "line": 48, - "lineto": 54, + "file": "git2/odb.h", + "line": 370, + "lineto": 370, "args": [ { "name": "out", - "type": "git_odb_backend **", - "comment": "location to store the odb backend pointer" - }, - { - "name": "objects_dir", - "type": "const char *", - "comment": "the Git repository's objects directory" - }, - { - "name": "compression_level", - "type": "int", - "comment": "zlib compression level to use" + "type": "git_odb_stream **", + "comment": "pointer where to store the stream" }, { - "name": "do_fsync", - "type": "int", - "comment": "whether to do an fsync() after writing (currently ignored)" + "name": "db", + "type": "git_odb *", + "comment": "object database where the stream will write" }, { - "name": "dir_mode", - "type": "unsigned int", - "comment": "permissions to use creating a directory or 0 for defaults" + "name": "size", + "type": "git_object_size_t", + "comment": "final size of the object that will be written" }, { - "name": "file_mode", - "type": "unsigned int", - "comment": "permissions to use creating a file or 0 for defaults" + "name": "type", + "type": "git_object_t", + "comment": "type of the object that will be written" } ], - "argline": "git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode", - "sig": "git_odb_backend **::const char *::int::int::unsigned int::unsigned int", + "argline": "git_odb_stream **out, git_odb *db, git_object_size_t size, git_object_t type", + "sig": "git_odb_stream **::git_odb *::git_object_size_t::git_object_t", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the stream was created; error code otherwise" }, - "description": "Create a backend for loose objects
\n", - "comments": "", + "description": "Open a stream to write an object into the ODB
\n", + "comments": "The type and final length of the object must be specified when opening the stream.
\n\nThe returned stream will be of type GIT_STREAM_WRONLY, and it won't be effective until git_odb_stream_finalize_write is called and returns without an error
The stream must always be freed when done with git_odb_stream_free or will leak memory.
Create a backend out of a single packfile
\n", - "comments": "This can be useful for inspecting the contents of a single packfile.
\n", + "description": "Write to an odb stream
\n", + "comments": "This method will fail if the total number of received bytes exceeds the size declared with git_odb_open_wstream()
Parse a hex formatted object id into a git_oid.
\n", - "comments": "", - "group": "oid", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_oid_fromstr-40", - "ex/HEAD/general.html#git_oid_fromstr-41", - "ex/HEAD/general.html#git_oid_fromstr-42", - "ex/HEAD/general.html#git_oid_fromstr-43", - "ex/HEAD/general.html#git_oid_fromstr-44", - "ex/HEAD/general.html#git_oid_fromstr-45", - "ex/HEAD/general.html#git_oid_fromstr-46", - "ex/HEAD/general.html#git_oid_fromstr-47" - ] - } + "description": "Finish writing to an odb stream
\n", + "comments": "The object will take its final name and will be available to the odb.
\n\nThis method will fail if the total number of received bytes differs from the size declared with git_odb_open_wstream()
Parse a hex formatted null-terminated string into a git_oid.
\n", + "description": "Read from an odb stream
\n", + "comments": "Most backends don't implement streaming reads
\n", + "group": "odb" + }, + "git_odb_stream_free": { + "type": "function", + "file": "git2/odb.h", + "line": 417, + "lineto": 417, + "args": [ + { + "name": "stream", + "type": "git_odb_stream *", + "comment": "the stream to free" + } + ], + "argline": "git_odb_stream *stream", + "sig": "git_odb_stream *", + "return": { "type": "void", "comment": null }, + "description": "Free an odb stream
\n", "comments": "", - "group": "oid" + "group": "odb" }, - "git_oid_fromstrn": { + "git_odb_open_rstream": { "type": "function", - "file": "oid.h", - "line": 70, - "lineto": 70, + "file": "git2/odb.h", + "line": 445, + "lineto": 450, "args": [ { "name": "out", - "type": "git_oid *", - "comment": "oid structure the result is written into." + "type": "git_odb_stream **", + "comment": "pointer where to store the stream" }, { - "name": "str", - "type": "const char *", - "comment": "input hex string of at least size `length`" + "name": "len", + "type": "size_t *", + "comment": "pointer where to store the length of the object" }, { - "name": "length", - "type": "size_t", - "comment": "length of the input string" + "name": "type", + "type": "git_object_t *", + "comment": "pointer where to store the type of the object" + }, + { + "name": "db", + "type": "git_odb *", + "comment": "object database where the stream will read from" + }, + { + "name": "oid", + "type": "const git_oid *", + "comment": "oid of the object the stream will read from" } ], - "argline": "git_oid *out, const char *str, size_t length", - "sig": "git_oid *::const char *::size_t", + "argline": "git_odb_stream **out, size_t *len, git_object_t *type, git_odb *db, const git_oid *oid", + "sig": "git_odb_stream **::size_t *::git_object_t *::git_odb *::const git_oid *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the stream was created, error code otherwise" }, - "description": "Parse N characters of a hex formatted object id into a git_oid
\n", - "comments": "If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.
\n", - "group": "oid" + "description": "Open a stream to read an object from the ODB
\n", + "comments": "Note that most backends do not support streaming reads because they store their objects as compressed/delta'ed blobs.
\n\nIt's recommended to use git_odb_read instead, which is assured to work on all backends.
The returned stream will be of type GIT_STREAM_RDONLY and will have the following methods:
- stream->read: read `n` bytes from the stream - stream->free: free the stream\n\n\nThe stream must always be free'd or will leak memory.
\n", + "group": "odb" }, - "git_oid_fromraw": { + "git_odb_write_pack": { "type": "function", - "file": "oid.h", - "line": 78, - "lineto": 78, + "file": "git2/odb.h", + "line": 471, + "lineto": 475, "args": [ { "name": "out", - "type": "git_oid *", - "comment": "oid structure the result is written into." + "type": "git_odb_writepack **", + "comment": "pointer to the writepack functions" }, { - "name": "raw", - "type": "const unsigned char *", - "comment": "the raw input bytes to be copied." + "name": "db", + "type": "git_odb *", + "comment": "object database where the stream will read from" + }, + { + "name": "progress_cb", + "type": "git_indexer_progress_cb", + "comment": "function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected." + }, + { + "name": "progress_payload", + "type": "void *", + "comment": "payload for the progress callback" } ], - "argline": "git_oid *out, const unsigned char *raw", - "sig": "git_oid *::const unsigned char *", - "return": { - "type": "void", - "comment": null - }, - "description": "Copy an already raw oid into a git_oid structure.
\n", - "comments": "", - "group": "oid" + "argline": "git_odb_writepack **out, git_odb *db, git_indexer_progress_cb progress_cb, void *progress_payload", + "sig": "git_odb_writepack **::git_odb *::git_indexer_progress_cb::void *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Open a stream for writing a pack file to the ODB.
\n", + "comments": "If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created). If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.
\n", + "group": "odb" }, - "git_oid_fmt": { + "git_odb_write_multi_pack_index": { "type": "function", - "file": "oid.h", - "line": 90, - "lineto": 90, + "file": "git2/odb.h", + "line": 489, + "lineto": 490, "args": [ { - "name": "out", - "type": "char *", - "comment": "output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required." + "name": "db", + "type": "git_odb *", + "comment": "object database where the `multi-pack-index` file will be written." + } + ], + "argline": "git_odb *db", + "sig": "git_odb *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Write a multi-pack-index file from all the .pack files in the ODB.
If the ODB layer understands pack files, then this will create a file called multi-pack-index next to the .pack and .idx files, which will contain an index of all objects stored in .pack files. This will allow for O(log n) lookup for n objects (regardless of how many packfiles there exist).
Format a git_oid into a hex string.
\n", - "comments": "", - "group": "oid", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_oid_fmt-48", - "ex/HEAD/general.html#git_oid_fmt-49", - "ex/HEAD/general.html#git_oid_fmt-50", - "ex/HEAD/general.html#git_oid_fmt-51", - "ex/HEAD/general.html#git_oid_fmt-52" - ], - "network/fetch.c": [ - "ex/HEAD/network/fetch.html#git_oid_fmt-1", - "ex/HEAD/network/fetch.html#git_oid_fmt-2" - ], - "network/index-pack.c": [ - "ex/HEAD/network/index-pack.html#git_oid_fmt-6" - ], - "network/ls-remote.c": [ - "ex/HEAD/network/ls-remote.html#git_oid_fmt-1" - ] - } + "argline": "git_oid *oid, const void *data, size_t len, git_object_t object_type", + "sig": "git_oid *::const void *::size_t::git_object_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Determine the object-ID (sha1 or sha256 hash) of a data buffer
\n", + "comments": "The resulting OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.
\n", + "group": "odb" }, - "git_oid_nfmt": { + "git_odb_hashfile": { "type": "function", - "file": "oid.h", - "line": 101, - "lineto": 101, + "file": "git2/odb.h", + "line": 554, + "lineto": 554, "args": [ { - "name": "out", - "type": "char *", - "comment": "output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added." + "name": "oid", + "type": "git_oid *", + "comment": "oid structure the result is written into." }, { - "name": "n", - "type": "size_t", - "comment": "number of characters to write into out string" + "name": "path", + "type": "const char *", + "comment": "file to read and determine object id for" }, { - "name": "id", - "type": "const git_oid *", - "comment": "oid structure to format." + "name": "object_type", + "type": "git_object_t", + "comment": "of the data to hash" } ], - "argline": "char *out, size_t n, const git_oid *id", - "sig": "char *::size_t::const git_oid *", - "return": { - "type": "void", - "comment": null - }, - "description": "Format a git_oid into a partial hex string.
\n", + "argline": "git_oid *oid, const char *path, git_object_t object_type", + "sig": "git_oid *::const char *::git_object_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git's git hash-object without\n the -w flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.
Format a git_oid into a loose-object path string.
\n", - "comments": "The resulting string is "aa/...", where "aa" is the first two hex digits of the oid and "..." is the remaining 38 digits.
\n", - "group": "oid" + "argline": "git_odb_object **dest, git_odb_object *source", + "sig": "git_odb_object **::git_odb_object *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a copy of an odb_object
\n", + "comments": "The returned copy must be manually freed with git_odb_object_free. Note that because of an implementation detail, the returned copy will be the same pointer as source: the object is internally refcounted, so the copy still needs to be freed twice.
Format a git_oid into a statically allocated c-string.
\n", - "comments": "The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.
\n", - "group": "oid" + "argline": "git_odb_object *object", + "sig": "git_odb_object *", + "return": { "type": "void", "comment": null }, + "description": "Close an ODB object
\n", + "comments": "This method must always be called once a git_odb_object is no longer needed, otherwise memory will leak.
Format a git_oid into a buffer as a hex format c-string.
\n", - "comments": "If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).
\n\nIf there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.
\n", - "group": "oid", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_oid_tostr-18", - "ex/HEAD/blame.html#git_oid_tostr-19" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_oid_tostr-26", - "ex/HEAD/cat-file.html#git_oid_tostr-27", - "ex/HEAD/cat-file.html#git_oid_tostr-28", - "ex/HEAD/cat-file.html#git_oid_tostr-29", - "ex/HEAD/cat-file.html#git_oid_tostr-30" - ], - "log.c": [ - "ex/HEAD/log.html#git_oid_tostr-39", - "ex/HEAD/log.html#git_oid_tostr-40" - ], - "rev-parse.c": [ - "ex/HEAD/rev-parse.html#git_oid_tostr-12", - "ex/HEAD/rev-parse.html#git_oid_tostr-13", - "ex/HEAD/rev-parse.html#git_oid_tostr-14", - "ex/HEAD/rev-parse.html#git_oid_tostr-15" - ] - } + "description": "Return the OID of an ODB object
\n", + "comments": "This is the OID from which the object was read from
\n", + "group": "odb" }, - "git_oid_cpy": { + "git_odb_object_data": { "type": "function", - "file": "oid.h", - "line": 156, - "lineto": 156, + "file": "git2/odb.h", + "line": 603, + "lineto": 603, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "oid structure the result is written into." - }, - { - "name": "src", - "type": "const git_oid *", - "comment": "oid structure to copy from." + "name": "object", + "type": "git_odb_object *", + "comment": "the object" } ], - "argline": "git_oid *out, const git_oid *src", - "sig": "git_oid *::const git_oid *", + "argline": "git_odb_object *object", + "sig": "git_odb_object *", "return": { - "type": "void", - "comment": null + "type": "const void *", + "comment": " \n\n `const unsigned char *` a pointer to the data" }, - "description": "Copy an oid from one structure to another.
\n", - "comments": "", - "group": "oid", + "description": "Return the data of an ODB object
\n", + "comments": "This is the uncompressed, raw data as read from the ODB, without the leading header.
\n\nThis pointer is owned by the object and shall not be free'd.
\n", + "group": "odb", "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_oid_cpy-20", - "ex/HEAD/blame.html#git_oid_cpy-21", - "ex/HEAD/blame.html#git_oid_cpy-22" - ] + "general.c": ["ex/v1.9.1/general.html#git_odb_object_data-45"] } }, - "git_oid_cmp": { + "git_odb_object_size": { "type": "function", - "file": "oid.h", - "line": 165, - "lineto": 165, + "file": "git2/odb.h", + "line": 614, + "lineto": 614, "args": [ { - "name": "a", - "type": "const git_oid *", - "comment": "first oid structure." - }, + "name": "object", + "type": "git_odb_object *", + "comment": "the object" + } + ], + "argline": "git_odb_object *object", + "sig": "git_odb_object *", + "return": { "type": "size_t", "comment": " the size" }, + "description": "Return the size of an ODB object
\n", + "comments": "This is the real size of the data buffer, not the actual size of the object.
Compare two oid structures.
\n", + "argline": "git_odb_object *object", + "sig": "git_odb_object *", + "return": { "type": "git_object_t", "comment": " the type" }, + "description": "Return the type of an ODB object
\n", "comments": "", - "group": "oid" + "group": "odb", + "examples": { + "general.c": ["ex/v1.9.1/general.html#git_odb_object_type-47"] + } }, - "git_oid_equal": { + "git_odb_add_backend": { "type": "function", - "file": "oid.h", - "line": 174, - "lineto": 174, + "file": "git2/odb.h", + "line": 637, + "lineto": 637, "args": [ { - "name": "a", - "type": "const git_oid *", - "comment": "first oid structure." + "name": "odb", + "type": "git_odb *", + "comment": "database to add the backend to" }, { - "name": "b", - "type": "const git_oid *", - "comment": "second oid structure." + "name": "backend", + "type": "git_odb_backend *", + "comment": "pointer to a git_odb_backend instance" + }, + { + "name": "priority", + "type": "int", + "comment": "Value for ordering the backends queue" } ], - "argline": "const git_oid *a, const git_oid *b", - "sig": "const git_oid *::const git_oid *", + "argline": "git_odb *odb, git_odb_backend *backend, int priority", + "sig": "git_odb *::git_odb_backend *::int", "return": { "type": "int", - "comment": " true if equal, false otherwise" + "comment": " 0 on success, error code otherwise" }, - "description": "Compare two oid structures for equality
\n", - "comments": "", - "group": "oid" + "description": "Add a custom backend to an existing Object DB
\n", + "comments": "The backends are checked in relative ordering, based on the value of the priority parameter.
Read
Compare the first 'len' hexadecimal characters (packets of 4 bits)\n of two oid structures.
\n", - "comments": "", - "group": "oid" + "description": "Add a custom backend to an existing Object DB; this\n backend will work as an alternate.
\n", + "comments": "Alternate backends are always checked for objects after all the main backends have been exhausted.
\n\nThe backends are checked in relative ordering, based on the value of the priority parameter.
Writing is disabled on alternate backends.
\n\nRead
Check if an oid equals an hex formatted object id.
\n", + "description": "Get the number of ODB backend objects
\n", "comments": "", - "group": "oid" + "group": "odb" }, - "git_oid_strcmp": { + "git_odb_get_backend": { "type": "function", - "file": "oid.h", - "line": 204, - "lineto": 204, + "file": "git2/odb.h", + "line": 676, + "lineto": 676, "args": [ { - "name": "id", - "type": "const git_oid *", - "comment": "oid structure." + "name": "out", + "type": "git_odb_backend **", + "comment": "output pointer to ODB backend at pos" }, + { "name": "odb", "type": "git_odb *", "comment": "object database" }, { - "name": "str", - "type": "const char *", - "comment": "input hex string of an object id." + "name": "pos", + "type": "size_t", + "comment": "index into object database backend list" } ], - "argline": "const git_oid *id, const char *str", - "sig": "const git_oid *::const char *", + "argline": "git_odb_backend **out, git_odb *odb, size_t pos", + "sig": "git_odb_backend **::git_odb *::size_t", "return": { "type": "int", - "comment": " -1 if str is not valid, \n<\n0 if id sorts before str,\n 0 if id matches str, >0 if id sorts after str." + "comment": " 0 on success, GIT_ENOTFOUND if pos is invalid, other errors \n<\n 0" }, - "description": "Compare an oid to an hex formatted object id.
\n", + "description": "Lookup an ODB backend object by index
\n", "comments": "", - "group": "oid" + "group": "odb" }, - "git_oid_iszero": { + "git_odb_set_commit_graph": { "type": "function", - "file": "oid.h", - "line": 211, - "lineto": 211, + "file": "git2/odb.h", + "line": 691, + "lineto": 691, "args": [ + { "name": "odb", "type": "git_odb *", "comment": "object database" }, { - "name": "id", - "type": "const git_oid *", - "comment": null + "name": "cgraph", + "type": "git_commit_graph *", + "comment": "the git commit-graph" } ], - "argline": "const git_oid *id", - "sig": "const git_oid *", + "argline": "git_odb *odb, git_commit_graph *cgraph", + "sig": "git_odb *::git_commit_graph *", "return": { "type": "int", - "comment": " 1 if all zeros, 0 otherwise." + "comment": " 0 on success; error code otherwise" }, - "description": "Check is an oid is all zeros.
\n", - "comments": "", - "group": "oid", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_oid_iszero-23" - ], - "network/fetch.c": [ - "ex/HEAD/network/fetch.html#git_oid_iszero-3" - ] - } + "description": "Set the git commit-graph for the ODB.
\n", + "comments": "After a successful call, the ownership of the cgraph parameter will be transferred to libgit2, and the caller should not free it.
\n\nThe commit-graph can also be unset by explicitly passing NULL as the cgraph parameter.
\n", + "group": "odb" }, - "git_oid_shorten_new": { + "git_odb_backend_pack": { "type": "function", - "file": "oid.h", - "line": 232, - "lineto": 232, + "file": "git2/odb_backend.h", + "line": 142, + "lineto": 144, "args": [ { - "name": "min_length", - "type": "size_t", - "comment": "The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique." + "name": "out", + "type": "git_odb_backend **", + "comment": "location to store the odb backend pointer" + }, + { + "name": "objects_dir", + "type": "const char *", + "comment": "the Git repository's objects directory" } ], - "argline": "size_t min_length", - "sig": "size_t", - "return": { - "type": "git_oid_shorten *", - "comment": " a `git_oid_shorten` instance, NULL if OOM" - }, - "description": "Create a new OID shortener.
\n", - "comments": "The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.
\n\nE.g. look at the result of git log --abbrev.
Create a backend for a directory containing packfiles.
\n", + "comments": "", + "group": "odb" }, - "git_oid_shorten_add": { + "git_odb_backend_one_pack": { "type": "function", - "file": "oid.h", - "line": 258, - "lineto": 258, + "file": "git2/odb_backend.h", + "line": 156, + "lineto": 158, "args": [ { - "name": "os", - "type": "git_oid_shorten *", - "comment": "a `git_oid_shorten` instance" + "name": "out", + "type": "git_odb_backend **", + "comment": "location to store the odb backend pointer" }, { - "name": "text_id", + "name": "index_file", "type": "const char *", - "comment": "an OID in text form" + "comment": "path to the packfile's .idx file" } ], - "argline": "git_oid_shorten *os, const char *text_id", - "sig": "git_oid_shorten *::const char *", - "return": { - "type": "int", - "comment": " the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs." - }, - "description": "Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.
\n", - "comments": "The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.
\n\nFor performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.
\n\nAttempting to add more than those OIDs will result in a GITERR_INVALID error
\n", - "group": "oid" + "argline": "git_odb_backend **out, const char *index_file", + "sig": "git_odb_backend **::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a backend out of a single packfile
\n", + "comments": "This can be useful for inspecting the contents of a single packfile.
\n", + "group": "odb" }, - "git_oid_shorten_free": { + "git_odb_backend_loose": { "type": "function", - "file": "oid.h", - "line": 265, - "lineto": 265, + "file": "git2/odb_backend.h", + "line": 171, + "lineto": 177, "args": [ { - "name": "os", - "type": "git_oid_shorten *", - "comment": "a `git_oid_shorten` instance" + "name": "out", + "type": "git_odb_backend **", + "comment": "location to store the odb backend pointer" + }, + { + "name": "objects_dir", + "type": "const char *", + "comment": "the Git repository's objects directory" + }, + { + "name": "compression_level", + "type": "int", + "comment": "zlib compression level (0-9), or -1 for the default" + }, + { + "name": "do_fsync", + "type": "int", + "comment": "if non-zero, perform an fsync on write" + }, + { + "name": "dir_mode", + "type": "unsigned int", + "comment": "permission to use when creating directories, or 0 for default" + }, + { + "name": "file_mode", + "type": "unsigned int", + "comment": "permission to use when creating directories, or 0 for default" } ], - "argline": "git_oid_shorten *os", - "sig": "git_oid_shorten *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free an OID shortener instance
\n", + "argline": "git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode", + "sig": "git_odb_backend **::const char *::int::int::unsigned int::unsigned int", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a backend for loose objects
\n", "comments": "", - "group": "oid" + "group": "odb" }, - "git_oidarray_free": { + "git_oid_fromstr": { "type": "function", - "file": "oidarray.h", - "line": 34, - "lineto": 34, + "file": "git2/oid.h", + "line": 137, + "lineto": 137, "args": [ { - "name": "array", - "type": "git_oidarray *", - "comment": "git_oidarray from which to free oid data" + "name": "out", + "type": "git_oid *", + "comment": "oid structure the result is written into." + }, + { + "name": "str", + "type": "const char *", + "comment": "input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes for sha1,\n\t\t256 bytes for sha256)." } ], - "argline": "git_oidarray *array", - "sig": "git_oidarray *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free the OID array
\n", - "comments": "This method must (and must only) be called on git_oidarray objects where the array is allocated by the library. Not doing so, will result in a memory leak.
This does not free the git_oidarray itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).
Parse a hex formatted object id into a git_oid.
\n", + "comments": "The appropriate number of bytes for the given object ID type will be read from the string - 40 bytes for SHA1, 64 bytes for SHA256. The given string need not be NUL terminated.
\n", + "group": "oid", + "examples": { + "general.c": [ + "ex/v1.9.1/general.html#git_oid_fromstr-48", + "ex/v1.9.1/general.html#git_oid_fromstr-49", + "ex/v1.9.1/general.html#git_oid_fromstr-50", + "ex/v1.9.1/general.html#git_oid_fromstr-51", + "ex/v1.9.1/general.html#git_oid_fromstr-52", + "ex/v1.9.1/general.html#git_oid_fromstr-53", + "ex/v1.9.1/general.html#git_oid_fromstr-54", + "ex/v1.9.1/general.html#git_oid_fromstr-55", + "ex/v1.9.1/general.html#git_oid_fromstr-56", + "ex/v1.9.1/general.html#git_oid_fromstr-57", + "ex/v1.9.1/general.html#git_oid_fromstr-58", + "ex/v1.9.1/general.html#git_oid_fromstr-59", + "ex/v1.9.1/general.html#git_oid_fromstr-60", + "ex/v1.9.1/general.html#git_oid_fromstr-61", + "ex/v1.9.1/general.html#git_oid_fromstr-62", + "ex/v1.9.1/general.html#git_oid_fromstr-63" + ] + } }, - "git_packbuilder_new": { + "git_oid_fromstrp": { "type": "function", - "file": "pack.h", - "line": 64, - "lineto": 64, + "file": "git2/oid.h", + "line": 146, + "lineto": 146, "args": [ { "name": "out", - "type": "git_packbuilder **", - "comment": "The new packbuilder object" + "type": "git_oid *", + "comment": "oid structure the result is written into." }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository" + "name": "str", + "type": "const char *", + "comment": "input hex string; must be null-terminated." } ], - "argline": "git_packbuilder **out, git_repository *repo", - "sig": "git_packbuilder **::git_repository *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Initialize a new packbuilder
\n", + "argline": "git_oid *out, const char *str", + "sig": "git_oid *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Parse a hex formatted NUL-terminated string into a git_oid.
\n", "comments": "", - "group": "packbuilder" + "group": "oid" }, - "git_packbuilder_set_threads": { + "git_oid_fromstrn": { "type": "function", - "file": "pack.h", - "line": 77, - "lineto": 77, + "file": "git2/oid.h", + "line": 159, + "lineto": 159, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder" + "name": "out", + "type": "git_oid *", + "comment": "oid structure the result is written into." }, { - "name": "n", - "type": "unsigned int", - "comment": "Number of threads to spawn" + "name": "str", + "type": "const char *", + "comment": "input hex string of at least size `length`" + }, + { + "name": "length", + "type": "size_t", + "comment": "length of the input string" } ], - "argline": "git_packbuilder *pb, unsigned int n", - "sig": "git_packbuilder *::unsigned int", - "return": { - "type": "unsigned int", - "comment": " number of actual threads to be used" - }, - "description": "Set number of threads to spawn
\n", - "comments": "By default, libgit2 won't spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.
\n", - "group": "packbuilder" + "argline": "git_oid *out, const char *str, size_t length", + "sig": "git_oid *::const char *::size_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Parse N characters of a hex formatted object id into a git_oid.
\n", + "comments": "If N is odd, the last byte's high nibble will be read in and the low nibble set to zero.
\n", + "group": "oid" }, - "git_packbuilder_insert": { + "git_oid_fromraw": { "type": "function", - "file": "pack.h", - "line": 91, - "lineto": 91, + "file": "git2/oid.h", + "line": 168, + "lineto": 168, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder" - }, - { - "name": "id", - "type": "const git_oid *", - "comment": "The oid of the commit" + "name": "out", + "type": "git_oid *", + "comment": "oid structure the result is written into." }, { - "name": "name", - "type": "const char *", - "comment": "The name; might be NULL" + "name": "raw", + "type": "const unsigned char *", + "comment": "the raw input bytes to be copied." } ], - "argline": "git_packbuilder *pb, const git_oid *id, const char *name", - "sig": "git_packbuilder *::const git_oid *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Insert a single object
\n", - "comments": "For an optimal pack it's mandatory to insert objects in recency order, commits followed by trees and blobs.
\n", - "group": "packbuilder" + "argline": "git_oid *out, const unsigned char *raw", + "sig": "git_oid *::const unsigned char *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Copy an already raw oid into a git_oid structure.
\n", + "comments": "", + "group": "oid" }, - "git_packbuilder_insert_tree": { + "git_oid_fmt": { "type": "function", - "file": "pack.h", - "line": 103, - "lineto": 103, + "file": "git2/oid.h", + "line": 184, + "lineto": 184, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder" + "name": "out", + "type": "char *", + "comment": "output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes for SHA1,\n\t\t64 bytes for SHA256). Only the oid digits are written;\n\t\ta '\n\\\n0' terminator must be added by the caller if it is\n\t\trequired." }, { "name": "id", "type": "const git_oid *", - "comment": "The oid of the root tree" + "comment": "oid structure to format." } ], - "argline": "git_packbuilder *pb, const git_oid *id", - "sig": "git_packbuilder *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Insert a root tree object
\n", - "comments": "This will add the tree as well as all referenced trees and blobs.
\n", - "group": "packbuilder" - }, - "git_packbuilder_insert_commit": { - "type": "function", - "file": "pack.h", - "line": 115, - "lineto": 115, - "args": [ - { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder" + "argline": "char *out, const git_oid *id", + "sig": "char *::const git_oid *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Format a git_oid into a hex string.
\n", + "comments": "", + "group": "oid", + "examples": { + "fetch.c": [ + "ex/v1.9.1/fetch.html#git_oid_fmt-1", + "ex/v1.9.1/fetch.html#git_oid_fmt-2" + ], + "general.c": [ + "ex/v1.9.1/general.html#git_oid_fmt-64", + "ex/v1.9.1/general.html#git_oid_fmt-65", + "ex/v1.9.1/general.html#git_oid_fmt-66", + "ex/v1.9.1/general.html#git_oid_fmt-67", + "ex/v1.9.1/general.html#git_oid_fmt-68" + ], + "ls-remote.c": ["ex/v1.9.1/ls-remote.html#git_oid_fmt-1"] + } + }, + "git_oid_nfmt": { + "type": "function", + "file": "git2/oid.h", + "line": 196, + "lineto": 196, + "args": [ + { + "name": "out", + "type": "char *", + "comment": "output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_SHA1_HEXSIZE, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added." + }, + { + "name": "n", + "type": "size_t", + "comment": "number of characters to write into out string" }, { "name": "id", "type": "const git_oid *", - "comment": "The oid of the commit" + "comment": "oid structure to format." } ], - "argline": "git_packbuilder *pb, const git_oid *id", - "sig": "git_packbuilder *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Insert a commit object
\n", - "comments": "This will add a commit as well as the completed referenced tree.
\n", - "group": "packbuilder" + "argline": "char *out, size_t n, const git_oid *id", + "sig": "char *::size_t::const git_oid *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Format a git_oid into a partial hex string.
\n", + "comments": "", + "group": "oid" }, - "git_packbuilder_insert_walk": { + "git_oid_pathfmt": { "type": "function", - "file": "pack.h", - "line": 128, - "lineto": 128, + "file": "git2/oid.h", + "line": 213, + "lineto": 213, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "the packbuilder" + "name": "out", + "type": "char *", + "comment": "output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes for SHA1,\n\t\t65 bytes for SHA256). Only the oid digits are written;\n\t\ta '\n\\\n0' terminator must be added by the caller if it\n\t\tis required." }, { - "name": "walk", - "type": "git_revwalk *", - "comment": "the revwalk to use to fill the packbuilder" + "name": "id", + "type": "const git_oid *", + "comment": "oid structure to format." } ], - "argline": "git_packbuilder *pb, git_revwalk *walk", - "sig": "git_packbuilder *::git_revwalk *", + "argline": "char *out, const git_oid *id", + "sig": "char *::const git_oid *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Insert objects as given by the walk
\n", - "comments": "Those commits and all objects they reference will be inserted into the packbuilder.
\n", - "group": "packbuilder" + "description": "Format a git_oid into a loose-object path string.
\n", + "comments": "The resulting string is "aa/...", where "aa" is the first two hex digits of the oid and "..." is the remaining 38 digits.
\n", + "group": "oid" }, - "git_packbuilder_insert_recur": { + "git_oid_tostr_s": { "type": "function", - "file": "pack.h", - "line": 140, - "lineto": 140, + "file": "git2/oid.h", + "line": 226, + "lineto": 226, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "the packbuilder" - }, - { - "name": "id", + "name": "oid", "type": "const git_oid *", - "comment": "the id of the root object to insert" - }, - { - "name": "name", - "type": "const char *", - "comment": "optional name for the object" + "comment": "The oid structure to format" } ], - "argline": "git_packbuilder *pb, const git_oid *id, const char *name", - "sig": "git_packbuilder *::const git_oid *::const char *", + "argline": "const git_oid *oid", + "sig": "const git_oid *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "char *", + "comment": " the c-string or NULL on failure" }, - "description": "Recursively insert an object and its referenced objects
\n", - "comments": "Insert the object as well as any object it references.
\n", - "group": "packbuilder" + "description": "Format a git_oid into a statically allocated c-string.
\n", + "comments": "The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.
\n", + "group": "oid", + "examples": { + "merge.c": [ + "ex/v1.9.1/merge.html#git_oid_tostr_s-19", + "ex/v1.9.1/merge.html#git_oid_tostr_s-20" + ] + } }, - "git_packbuilder_write": { + "git_oid_tostr": { "type": "function", - "file": "pack.h", - "line": 164, - "lineto": 169, + "file": "git2/oid.h", + "line": 247, + "lineto": 247, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder" - }, - { - "name": "path", - "type": "const char *", - "comment": "to the directory where the packfile and index should be stored" - }, - { - "name": "mode", - "type": "unsigned int", - "comment": "permissions to use creating a packfile or 0 for defaults" + "name": "out", + "type": "char *", + "comment": "the buffer into which the oid string is output." }, { - "name": "progress_cb", - "type": "git_transfer_progress_cb", - "comment": "function to call with progress information from the indexer (optional)" + "name": "n", + "type": "size_t", + "comment": "the size of the out buffer." }, { - "name": "progress_cb_payload", - "type": "void *", - "comment": "payload for the progress callback (optional)" + "name": "id", + "type": "const git_oid *", + "comment": "the oid structure to format." } ], - "argline": "git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload", - "sig": "git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *", + "argline": "char *out, size_t n, const git_oid *id", + "sig": "char *::size_t::const git_oid *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "char *", + "comment": " the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string." }, - "description": "Write the new pack and corresponding index file to path.
\n", - "comments": "", - "group": "packbuilder" + "description": "Format a git_oid into a buffer as a hex format c-string.
\n", + "comments": "If the buffer is smaller than the size of a hex-formatted oid string plus an additional byte (GIT_OID_SHA_HEXSIZE + 1 for SHA1 or GIT_OID_SHA256_HEXSIZE + 1 for SHA256), then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).
\n\nIf there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.
\n", + "group": "oid", + "examples": { + "blame.c": [ + "ex/v1.9.1/blame.html#git_oid_tostr-15", + "ex/v1.9.1/blame.html#git_oid_tostr-16" + ], + "cat-file.c": [ + "ex/v1.9.1/cat-file.html#git_oid_tostr-24", + "ex/v1.9.1/cat-file.html#git_oid_tostr-25", + "ex/v1.9.1/cat-file.html#git_oid_tostr-26", + "ex/v1.9.1/cat-file.html#git_oid_tostr-27", + "ex/v1.9.1/cat-file.html#git_oid_tostr-28" + ], + "log.c": [ + "ex/v1.9.1/log.html#git_oid_tostr-38", + "ex/v1.9.1/log.html#git_oid_tostr-39" + ], + "rev-parse.c": [ + "ex/v1.9.1/rev-parse.html#git_oid_tostr-10", + "ex/v1.9.1/rev-parse.html#git_oid_tostr-11", + "ex/v1.9.1/rev-parse.html#git_oid_tostr-12", + "ex/v1.9.1/rev-parse.html#git_oid_tostr-13" + ] + } }, - "git_packbuilder_hash": { + "git_oid_cpy": { "type": "function", - "file": "pack.h", - "line": 179, - "lineto": 179, + "file": "git2/oid.h", + "line": 256, + "lineto": 256, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder object" + "name": "out", + "type": "git_oid *", + "comment": "oid structure the result is written into." + }, + { + "name": "src", + "type": "const git_oid *", + "comment": "oid structure to copy from." } ], - "argline": "git_packbuilder *pb", - "sig": "git_packbuilder *", - "return": { - "type": "const git_oid *", - "comment": null - }, - "description": "Get the packfile's hash
\n", - "comments": "A packfile's name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.
\n", - "group": "packbuilder" + "argline": "git_oid *out, const git_oid *src", + "sig": "git_oid *::const git_oid *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Copy an oid from one structure to another.
\n", + "comments": "", + "group": "oid", + "examples": { + "blame.c": [ + "ex/v1.9.1/blame.html#git_oid_cpy-17", + "ex/v1.9.1/blame.html#git_oid_cpy-18", + "ex/v1.9.1/blame.html#git_oid_cpy-19" + ] + } }, - "git_packbuilder_foreach": { + "git_oid_cmp": { "type": "function", - "file": "pack.h", - "line": 191, - "lineto": 191, + "file": "git2/oid.h", + "line": 265, + "lineto": 265, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "the packbuilder" - }, - { - "name": "cb", - "type": "git_packbuilder_foreach_cb", - "comment": "the callback to call with each packed object's buffer" + "name": "a", + "type": "const git_oid *", + "comment": "first oid structure." }, { - "name": "payload", - "type": "void *", - "comment": "the callback's data" + "name": "b", + "type": "const git_oid *", + "comment": "second oid structure." } ], - "argline": "git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload", - "sig": "git_packbuilder *::git_packbuilder_foreach_cb::void *", + "argline": "const git_oid *a, const git_oid *b", + "sig": "const git_oid *::const git_oid *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " \n<\n0, 0, >0 if a \n<\n b, a == b, a > b." }, - "description": "Create the new pack and pass each object to the callback
\n", + "description": "Compare two oid structures.
\n", "comments": "", - "group": "packbuilder" + "group": "oid" }, - "git_packbuilder_object_count": { + "git_oid_equal": { "type": "function", - "file": "pack.h", - "line": 199, - "lineto": 199, + "file": "git2/oid.h", + "line": 274, + "lineto": 274, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "the packbuilder" + "name": "a", + "type": "const git_oid *", + "comment": "first oid structure." + }, + { + "name": "b", + "type": "const git_oid *", + "comment": "second oid structure." } ], - "argline": "git_packbuilder *pb", - "sig": "git_packbuilder *", - "return": { - "type": "uint32_t", - "comment": " the number of objects in the packfile" - }, - "description": "Get the total number of objects the packbuilder will write out
\n", + "argline": "const git_oid *a, const git_oid *b", + "sig": "const git_oid *::const git_oid *", + "return": { "type": "int", "comment": " true if equal, false otherwise" }, + "description": "Compare two oid structures for equality
\n", "comments": "", - "group": "packbuilder" + "group": "oid" }, - "git_packbuilder_written": { + "git_oid_ncmp": { "type": "function", - "file": "pack.h", - "line": 207, - "lineto": 207, + "file": "git2/oid.h", + "line": 285, + "lineto": 285, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "the packbuilder" - } - ], - "argline": "git_packbuilder *pb", - "sig": "git_packbuilder *", - "return": { - "type": "uint32_t", - "comment": " the number of objects which have already been written" - }, - "description": "Get the number of objects the packbuilder has already written out
\n", + "name": "a", + "type": "const git_oid *", + "comment": "first oid structure." + }, + { + "name": "b", + "type": "const git_oid *", + "comment": "second oid structure." + }, + { + "name": "len", + "type": "size_t", + "comment": "the number of hex chars to compare" + } + ], + "argline": "const git_oid *a, const git_oid *b, size_t len", + "sig": "const git_oid *::const git_oid *::size_t", + "return": { "type": "int", "comment": " 0 in case of a match" }, + "description": "Compare the first 'len' hexadecimal characters (packets of 4 bits)\n of two oid structures.
\n", "comments": "", - "group": "packbuilder" + "group": "oid" }, - "git_packbuilder_set_callbacks": { + "git_oid_streq": { "type": "function", - "file": "pack.h", - "line": 226, - "lineto": 229, + "file": "git2/oid.h", + "line": 294, + "lineto": 294, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder object" - }, - { - "name": "progress_cb", - "type": "git_packbuilder_progress", - "comment": "Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected." + "name": "id", + "type": "const git_oid *", + "comment": "oid structure." }, { - "name": "progress_cb_payload", - "type": "void *", - "comment": "Payload for progress callback." + "name": "str", + "type": "const char *", + "comment": "input hex string of an object id." } ], - "argline": "git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload", - "sig": "git_packbuilder *::git_packbuilder_progress::void *", + "argline": "const git_oid *id, const char *str", + "sig": "const git_oid *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 in case of a match, -1 otherwise." }, - "description": "Set the callbacks for a packbuilder
\n", + "description": "Check if an oid equals an hex formatted object id.
\n", "comments": "", - "group": "packbuilder" + "group": "oid" }, - "git_packbuilder_free": { + "git_oid_strcmp": { "type": "function", - "file": "pack.h", - "line": 236, - "lineto": 236, + "file": "git2/oid.h", + "line": 304, + "lineto": 304, "args": [ { - "name": "pb", - "type": "git_packbuilder *", - "comment": "The packbuilder" + "name": "id", + "type": "const git_oid *", + "comment": "oid structure." + }, + { + "name": "str", + "type": "const char *", + "comment": "input hex string of an object id." } ], - "argline": "git_packbuilder *pb", - "sig": "git_packbuilder *", + "argline": "const git_oid *id, const char *str", + "sig": "const git_oid *::const char *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " -1 if str is not valid, \n<\n0 if id sorts before str,\n 0 if id matches str, >0 if id sorts after str." }, - "description": "Free the packbuilder and all associated data
\n", + "description": "Compare an oid to an hex formatted object id.
\n", "comments": "", - "group": "packbuilder" + "group": "oid" }, - "git_patch_from_diff": { + "git_oid_is_zero": { "type": "function", - "file": "patch.h", - "line": 51, - "lineto": 52, + "file": "git2/oid.h", + "line": 312, + "lineto": 312, "args": [ { - "name": "out", - "type": "git_patch **", - "comment": "Output parameter for the delta patch object" - }, - { - "name": "diff", - "type": "git_diff *", - "comment": "Diff list object" - }, + "name": "id", + "type": "const git_oid *", + "comment": "the object ID to check" + } + ], + "argline": "const git_oid *id", + "sig": "const git_oid *", + "return": { "type": "int", "comment": " 1 if all zeros, 0 otherwise." }, + "description": "Check is an oid is all zeros.
\n", + "comments": "", + "group": "oid", + "examples": { + "blame.c": ["ex/v1.9.1/blame.html#git_oid_is_zero-20"], + "fetch.c": ["ex/v1.9.1/fetch.html#git_oid_is_zero-3"] + } + }, + "git_oid_shorten_new": { + "type": "function", + "file": "git2/oid.h", + "line": 333, + "lineto": 333, + "args": [ { - "name": "idx", + "name": "min_length", "type": "size_t", - "comment": "Index into diff list" + "comment": "The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique." } ], - "argline": "git_patch **out, git_diff *diff, size_t idx", - "sig": "git_patch **::git_diff *::size_t", + "argline": "size_t min_length", + "sig": "size_t", "return": { - "type": "int", - "comment": " 0 on success, other value \n<\n 0 on error" + "type": "git_oid_shorten *", + "comment": " a `git_oid_shorten` instance, NULL if OOM" }, - "description": "Return a patch for an entry in the diff list.
\n", - "comments": "The git_patch is a newly created object contains the text diffs for the delta. You have to call git_patch_free() when you are done with it. You can use the patch object to loop over all the hunks and lines in the diff of the one delta.
For an unchanged file or a binary file, no git_patch will be created, the output will be set to NULL, and the binary flag will be set true in the git_diff_delta structure.
It is okay to pass NULL for either of the output parameters; if you pass NULL for the git_patch, then the text diff will not be calculated.
Create a new OID shortener.
\n", + "comments": "The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.
\n\nE.g. look at the result of git log --abbrev.
Directly generate a patch from the difference between two blobs.
\n", - "comments": "This is just like git_diff_blobs() except it generates a patch object for the difference instead of directly making callbacks. You can use the standard git_patch accessor functions to read the patch data, and you must call git_patch_free() on the patch when done.
Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.
\n", + "comments": "The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.
\n\nFor performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.
\n\nAttempting to add more than those OIDs will result in a GIT_ERROR_INVALID error
\n", + "group": "oid" }, - "git_patch_from_blob_and_buffer": { + "git_oid_shorten_free": { "type": "function", - "file": "patch.h", - "line": 95, - "lineto": 102, + "file": "git2/oid.h", + "line": 366, + "lineto": 366, "args": [ { - "name": "out", - "type": "git_patch **", - "comment": "The generated patch; NULL on error" - }, - { - "name": "old_blob", - "type": "const git_blob *", - "comment": "Blob for old side of diff, or NULL for empty blob" - }, + "name": "os", + "type": "git_oid_shorten *", + "comment": "a `git_oid_shorten` instance" + } + ], + "argline": "git_oid_shorten *os", + "sig": "git_oid_shorten *", + "return": { "type": "void", "comment": null }, + "description": "Free an OID shortener instance
\n", + "comments": "", + "group": "oid" + }, + "git_oidarray_dispose": { + "type": "function", + "file": "git2/oidarray.h", + "line": 38, + "lineto": 38, + "args": [ { - "name": "old_as_path", - "type": "const char *", - "comment": "Treat old blob as if it had this filename; can be NULL" - }, + "name": "array", + "type": "git_oidarray *", + "comment": "git_oidarray from which to free oid data" + } + ], + "argline": "git_oidarray *array", + "sig": "git_oidarray *", + "return": { "type": "void", "comment": null }, + "description": "Free the object IDs contained in an oid_array. This method should\n be called on git_oidarray objects that were provided by the\n library. Not doing so will result in a memory leak.
This does not free the git_oidarray itself, since the library will never allocate that object directly itself.
Initialize a new packbuilder
\n", + "comments": "", + "group": "packbuilder" + }, + "git_packbuilder_set_threads": { + "type": "function", + "file": "git2/pack.h", + "line": 78, + "lineto": 78, + "args": [ { - "name": "buffer_as_path", - "type": "const char *", - "comment": "Treat buffer as if it had this filename; can be NULL" + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" }, { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Options for diff, or NULL for default options" + "name": "n", + "type": "unsigned int", + "comment": "Number of threads to spawn" } ], - "argline": "git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts", - "sig": "git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *", + "argline": "git_packbuilder *pb, unsigned int n", + "sig": "git_packbuilder *::unsigned int", "return": { - "type": "int", - "comment": " 0 on success or error code \n<\n 0" + "type": "unsigned int", + "comment": " number of actual threads to be used" }, - "description": "Directly generate a patch from the difference between a blob and a buffer.
\n", - "comments": "This is just like git_diff_blob_to_buffer() except it generates a patch object for the difference instead of directly making callbacks. You can use the standard git_patch accessor functions to read the patch data, and you must call git_patch_free() on the patch when done.
Set number of threads to spawn
\n", + "comments": "By default, libgit2 won't spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.
\n", + "group": "packbuilder" }, - "git_patch_from_buffers": { + "git_packbuilder_insert": { "type": "function", - "file": "patch.h", - "line": 122, - "lineto": 130, + "file": "git2/pack.h", + "line": 92, + "lineto": 92, "args": [ { - "name": "out", - "type": "git_patch **", - "comment": "The generated patch; NULL on error" - }, - { - "name": "old_buffer", - "type": "const void *", - "comment": "Raw data for old side of diff, or NULL for empty" - }, - { - "name": "old_len", - "type": "size_t", - "comment": "Length of the raw data for old side of the diff" - }, - { - "name": "old_as_path", - "type": "const char *", - "comment": "Treat old buffer as if it had this filename; can be NULL" - }, - { - "name": "new_buffer", - "type": "const char *", - "comment": "Raw data for new side of diff, or NULL for empty" + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" }, { - "name": "new_len", - "type": "size_t", - "comment": "Length of raw data for new side of diff" + "name": "id", + "type": "const git_oid *", + "comment": "The oid of the commit" }, { - "name": "new_as_path", + "name": "name", "type": "const char *", - "comment": "Treat buffer as if it had this filename; can be NULL" - }, - { - "name": "opts", - "type": "const git_diff_options *", - "comment": "Options for diff, or NULL for default options" + "comment": "The name; might be NULL" } ], - "argline": "git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts", - "sig": "git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *", - "return": { - "type": "int", - "comment": " 0 on success or error code \n<\n 0" - }, - "description": "Directly generate a patch from the difference between two buffers.
\n", - "comments": "This is just like git_diff_buffers() except it generates a patch object for the difference instead of directly making callbacks. You can use the standard git_patch accessor functions to read the patch data, and you must call git_patch_free() on the patch when done.
Insert a single object
\n", + "comments": "For an optimal pack it's mandatory to insert objects in recency order, commits followed by trees and blobs.
\n", + "group": "packbuilder" }, - "git_patch_free": { + "git_packbuilder_insert_tree": { "type": "function", - "file": "patch.h", - "line": 135, - "lineto": 135, + "file": "git2/pack.h", + "line": 104, + "lineto": 104, "args": [ { - "name": "patch", - "type": "git_patch *", - "comment": null + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "The oid of the root tree" } ], - "argline": "git_patch *patch", - "sig": "git_patch *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free a git_patch object.
\n", - "comments": "", - "group": "patch" + "argline": "git_packbuilder *pb, const git_oid *id", + "sig": "git_packbuilder *::const git_oid *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Insert a root tree object
\n", + "comments": "This will add the tree as well as all referenced trees and blobs.
\n", + "group": "packbuilder" }, - "git_patch_get_delta": { + "git_packbuilder_insert_commit": { "type": "function", - "file": "patch.h", - "line": 141, - "lineto": 141, + "file": "git2/pack.h", + "line": 116, + "lineto": 116, "args": [ { - "name": "patch", - "type": "const git_patch *", - "comment": null + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "The oid of the commit" } ], - "argline": "const git_patch *patch", - "sig": "const git_patch *", - "return": { - "type": "const git_diff_delta *", - "comment": null - }, - "description": "Get the delta associated with a patch. This delta points to internal\n data and you do not have to release it when you are done with it.
\n", - "comments": "", - "group": "patch" + "argline": "git_packbuilder *pb, const git_oid *id", + "sig": "git_packbuilder *::const git_oid *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Insert a commit object
\n", + "comments": "This will add a commit as well as the completed referenced tree.
\n", + "group": "packbuilder" }, - "git_patch_num_hunks": { + "git_packbuilder_insert_walk": { "type": "function", - "file": "patch.h", - "line": 146, - "lineto": 146, + "file": "git2/pack.h", + "line": 129, + "lineto": 129, "args": [ { - "name": "patch", - "type": "const git_patch *", - "comment": null + "name": "pb", + "type": "git_packbuilder *", + "comment": "the packbuilder" + }, + { + "name": "walk", + "type": "git_revwalk *", + "comment": "the revwalk to use to fill the packbuilder" } ], - "argline": "const git_patch *patch", - "sig": "const git_patch *", - "return": { - "type": "size_t", - "comment": null - }, - "description": "Get the number of hunks in a patch
\n", - "comments": "", - "group": "patch" + "argline": "git_packbuilder *pb, git_revwalk *walk", + "sig": "git_packbuilder *::git_revwalk *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Insert objects as given by the walk
\n", + "comments": "Those commits and all objects they reference will be inserted into the packbuilder.
\n", + "group": "packbuilder" }, - "git_patch_line_stats": { + "git_packbuilder_insert_recur": { "type": "function", - "file": "patch.h", - "line": 164, - "lineto": 168, + "file": "git2/pack.h", + "line": 141, + "lineto": 141, "args": [ { - "name": "total_context", - "type": "size_t *", - "comment": "Count of context lines in output, can be NULL." + "name": "pb", + "type": "git_packbuilder *", + "comment": "the packbuilder" }, { - "name": "total_additions", - "type": "size_t *", - "comment": "Count of addition lines in output, can be NULL." + "name": "id", + "type": "const git_oid *", + "comment": "the id of the root object to insert" }, { - "name": "total_deletions", - "type": "size_t *", - "comment": "Count of deletion lines in output, can be NULL." + "name": "name", + "type": "const char *", + "comment": "optional name for the object" + } + ], + "argline": "git_packbuilder *pb, const git_oid *id, const char *name", + "sig": "git_packbuilder *::const git_oid *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Recursively insert an object and its referenced objects
\n", + "comments": "Insert the object as well as any object it references.
\n", + "group": "packbuilder" + }, + "git_packbuilder_write_buf": { + "type": "function", + "file": "git2/pack.h", + "line": 153, + "lineto": 153, + "args": [ + { + "name": "buf", + "type": "git_buf *", + "comment": "Buffer where to write the packfile" }, { - "name": "patch", - "type": "const git_patch *", - "comment": "The git_patch object" + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" } ], - "argline": "size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch", - "sig": "size_t *::size_t *::size_t *::const git_patch *", - "return": { - "type": "int", - "comment": " 0 on success, \n<\n0 on error" - }, - "description": "Get line counts of each type in a patch.
\n", - "comments": "This helps imitate a diff --numstat type of output. For that purpose, you only need the total_additions and total_deletions values, but we include the total_context line count in case you want the total number of lines of diff output that will be generated.
All outputs are optional. Pass NULL if you don't need a particular count.
\n", - "group": "patch" + "argline": "git_buf *buf, git_packbuilder *pb", + "sig": "git_buf *::git_packbuilder *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write the contents of the packfile to an in-memory buffer
\n", + "comments": "The contents of the buffer will become a valid packfile, even though there will be no attached index
\n", + "group": "packbuilder" }, - "git_patch_get_hunk": { + "git_packbuilder_write": { "type": "function", - "file": "patch.h", - "line": 183, - "lineto": 187, + "file": "git2/pack.h", + "line": 166, + "lineto": 171, "args": [ { - "name": "out", - "type": "const git_diff_hunk **", - "comment": "Output pointer to git_diff_hunk of hunk" + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" }, { - "name": "lines_in_hunk", - "type": "size_t *", - "comment": "Output count of total lines in this hunk" + "name": "path", + "type": "const char *", + "comment": "Path to the directory where the packfile and index should be stored, or NULL for default location" }, { - "name": "patch", - "type": "git_patch *", - "comment": "Input pointer to patch object" + "name": "mode", + "type": "unsigned int", + "comment": "permissions to use creating a packfile or 0 for defaults" }, { - "name": "hunk_idx", - "type": "size_t", - "comment": "Input index of hunk to get information about" + "name": "progress_cb", + "type": "git_indexer_progress_cb", + "comment": "function to call with progress information from the indexer (optional)" + }, + { + "name": "progress_cb_payload", + "type": "void *", + "comment": "payload for the progress callback (optional)" } ], - "argline": "const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx", - "sig": "const git_diff_hunk **::size_t *::git_patch *::size_t", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error" - }, - "description": "Get the information about a hunk in a patch
\n", - "comments": "Given a patch and a hunk index into the patch, this returns detailed information about that hunk. Any of the output pointers can be passed as NULL if you don't care about that particular piece of information.
\n", - "group": "patch" + "argline": "git_packbuilder *pb, const char *path, unsigned int mode, git_indexer_progress_cb progress_cb, void *progress_cb_payload", + "sig": "git_packbuilder *::const char *::unsigned int::git_indexer_progress_cb::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write the new pack and corresponding index file to path.
\n", + "comments": "", + "group": "packbuilder" }, - "git_patch_num_lines_in_hunk": { + "git_packbuilder_hash": { "type": "function", - "file": "patch.h", - "line": 196, - "lineto": 198, + "file": "git2/pack.h", + "line": 184, + "lineto": 184, "args": [ { - "name": "patch", - "type": "const git_patch *", - "comment": "The git_patch object" - }, + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder object" + } + ], + "argline": "git_packbuilder *pb", + "sig": "git_packbuilder *", + "return": { "type": "const git_oid *", "comment": " 0 or an error code" }, + "description": "Get the packfile's hash
\n", + "comments": "A packfile's name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.
\n", + "group": "packbuilder" + }, + "git_packbuilder_name": { + "type": "function", + "file": "git2/pack.h", + "line": 196, + "lineto": 196, + "args": [ { - "name": "hunk_idx", - "type": "size_t", - "comment": "Index of the hunk" + "name": "pb", + "type": "git_packbuilder *", + "comment": "the packbuilder instance" } ], - "argline": "const git_patch *patch, size_t hunk_idx", - "sig": "const git_patch *::size_t", + "argline": "git_packbuilder *pb", + "sig": "git_packbuilder *", "return": { - "type": "int", - "comment": " Number of lines in hunk or -1 if invalid hunk index" + "type": "const char *", + "comment": " a NUL terminated string for the packfile name" }, - "description": "Get the number of lines in a hunk.
\n", - "comments": "", - "group": "patch" + "description": "Get the unique name for the resulting packfile.
\n", + "comments": "The packfile's name is derived from the packfile's content. This is only correct after the packfile has been written.
\n", + "group": "packbuilder" }, - "git_patch_get_line_in_hunk": { + "git_packbuilder_foreach": { "type": "function", - "file": "patch.h", - "line": 214, + "file": "git2/pack.h", + "line": 218, "lineto": 218, "args": [ { - "name": "out", - "type": "const git_diff_line **", - "comment": "The git_diff_line data for this line" + "name": "pb", + "type": "git_packbuilder *", + "comment": "the packbuilder" }, { - "name": "patch", - "type": "git_patch *", - "comment": "The patch to look in" + "name": "cb", + "type": "git_packbuilder_foreach_cb", + "comment": "the callback to call with each packed object's buffer" }, { - "name": "hunk_idx", - "type": "size_t", - "comment": "The index of the hunk" - }, + "name": "payload", + "type": "void *", + "comment": "the callback's data" + } + ], + "argline": "git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload", + "sig": "git_packbuilder *::git_packbuilder_foreach_cb::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create the new pack and pass each object to the callback
\n", + "comments": "", + "group": "packbuilder" + }, + "git_packbuilder_object_count": { + "type": "function", + "file": "git2/pack.h", + "line": 226, + "lineto": 226, + "args": [ { - "name": "line_of_hunk", - "type": "size_t", - "comment": "The index of the line in the hunk" + "name": "pb", + "type": "git_packbuilder *", + "comment": "the packbuilder" } ], - "argline": "const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk", - "sig": "const git_diff_line **::git_patch *::size_t::size_t", + "argline": "git_packbuilder *pb", + "sig": "git_packbuilder *", "return": { - "type": "int", - "comment": " 0 on success, \n<\n0 on failure" + "type": "size_t", + "comment": " the number of objects in the packfile" }, - "description": "Get data about a line in a hunk of a patch.
\n", - "comments": "Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line. If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.
\n", - "group": "patch" + "description": "Get the total number of objects the packbuilder will write out
\n", + "comments": "", + "group": "packbuilder" }, - "git_patch_size": { + "git_packbuilder_written": { "type": "function", - "file": "patch.h", - "line": 236, - "lineto": 240, + "file": "git2/pack.h", + "line": 234, + "lineto": 234, "args": [ { - "name": "patch", - "type": "git_patch *", - "comment": "A git_patch representing changes to one file" - }, - { - "name": "include_context", - "type": "int", - "comment": "Include context lines in size if non-zero" - }, - { - "name": "include_hunk_headers", - "type": "int", - "comment": "Include hunk header lines if non-zero" - }, - { - "name": "include_file_headers", - "type": "int", - "comment": "Include file header lines if non-zero" + "name": "pb", + "type": "git_packbuilder *", + "comment": "the packbuilder" } ], - "argline": "git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers", - "sig": "git_patch *::int::int::int", + "argline": "git_packbuilder *pb", + "sig": "git_packbuilder *", "return": { "type": "size_t", - "comment": " The number of bytes of data" + "comment": " the number of objects which have already been written" }, - "description": "Look up size of patch diff data in bytes
\n", - "comments": "This returns the raw size of the patch data. This only includes the actual data from the lines of the diff, not the file or hunk headers.
\n\nIf you pass include_context as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if context_lines was 0).
Get the number of objects the packbuilder has already written out
\n", + "comments": "", + "group": "packbuilder" }, - "git_patch_print": { + "git_packbuilder_set_callbacks": { "type": "function", - "file": "patch.h", - "line": 254, - "lineto": 257, + "file": "git2/pack.h", + "line": 264, + "lineto": 267, "args": [ { - "name": "patch", - "type": "git_patch *", - "comment": "A git_patch representing changes to one file" + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder object" }, { - "name": "print_cb", - "type": "git_diff_line_cb", - "comment": "Callback function to output lines of the patch. Will be\n called for file headers, hunk headers, and diff lines." + "name": "progress_cb", + "type": "git_packbuilder_progress", + "comment": "Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected.\n When progress_cb returns an error, the pack building process will be\n aborted and the error will be returned from the invoked function.\n `pb` must then be freed." }, { - "name": "payload", + "name": "progress_cb_payload", "type": "void *", - "comment": "Reference pointer that will be passed to your callbacks." + "comment": "Payload for progress callback." } ], - "argline": "git_patch *patch, git_diff_line_cb print_cb, void *payload", - "sig": "git_patch *::git_diff_line_cb::void *", + "argline": "git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload", + "sig": "git_packbuilder *::git_packbuilder_progress::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Set the callbacks for a packbuilder
\n", + "comments": "", + "group": "packbuilder" + }, + "git_packbuilder_free": { + "type": "function", + "file": "git2/pack.h", + "line": 274, + "lineto": 274, + "args": [ + { + "name": "pb", + "type": "git_packbuilder *", + "comment": "The packbuilder" + } + ], + "argline": "git_packbuilder *pb", + "sig": "git_packbuilder *", + "return": { "type": "void", "comment": null }, + "description": "Free the packbuilder and all associated data
\n", + "comments": "", + "group": "packbuilder" + }, + "git_patch_owner": { + "type": "function", + "file": "git2/patch.h", + "line": 37, + "lineto": 37, + "args": [ + { "name": "patch", "type": "const git_patch *", "comment": "the patch" } + ], + "argline": "const git_patch *patch", + "sig": "const git_patch *", "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" + "type": "git_repository *", + "comment": " a pointer to the repository" }, - "description": "Serialize the patch to text via callback.
\n", - "comments": "Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.
\n", + "description": "Get the repository associated with this patch. May be NULL.
\n", + "comments": "", "group": "patch" }, - "git_patch_to_buf": { + "git_patch_from_diff": { "type": "function", - "file": "patch.h", - "line": 266, - "lineto": 268, + "file": "git2/patch.h", + "line": 59, + "lineto": 60, "args": [ { "name": "out", - "type": "git_buf *", - "comment": "The git_buf to be filled in" + "type": "git_patch **", + "comment": "Output parameter for the delta patch object" }, - { - "name": "patch", - "type": "git_patch *", - "comment": "A git_patch representing changes to one file" - } + { "name": "diff", "type": "git_diff *", "comment": "Diff list object" }, + { "name": "idx", "type": "size_t", "comment": "Index into diff list" } ], - "argline": "git_buf *out, git_patch *patch", - "sig": "git_buf *::git_patch *", + "argline": "git_patch **out, git_diff *diff, size_t idx", + "sig": "git_patch **::git_diff *::size_t", "return": { "type": "int", - "comment": " 0 on success, \n<\n0 on failure." + "comment": " 0 on success, other value \n<\n 0 on error" }, - "description": "Get the content of a patch as a single diff text.
\n", - "comments": "", + "description": "Return a patch for an entry in the diff list.
\n", + "comments": "The git_patch is a newly created object contains the text diffs for the delta. You have to call git_patch_free() when you are done with it. You can use the patch object to loop over all the hunks and lines in the diff of the one delta.
For an unchanged file or a binary file, no git_patch will be created, the output will be set to NULL, and the binary flag will be set true in the git_diff_delta structure.
It is okay to pass NULL for either of the output parameters; if you pass NULL for the git_patch, then the text diff will not be calculated.
Compile a pathspec
\n", - "comments": "", - "group": "pathspec", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_pathspec_new-41" - ] - } - }, - "git_pathspec_free": { - "type": "function", - "file": "pathspec.h", - "line": 73, - "lineto": 73, - "args": [ - { - "name": "ps", - "type": "git_pathspec *", - "comment": "The compiled pathspec" - } - ], - "argline": "git_pathspec *ps", - "sig": "git_pathspec *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free a pathspec
\n", - "comments": "", - "group": "pathspec", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_pathspec_free-42" - ] - } + "description": "Directly generate a patch from the difference between two blobs.
\n", + "comments": "This is just like git_diff_blobs() except it generates a patch object for the difference instead of directly making callbacks. You can use the standard git_patch accessor functions to read the patch data, and you must call git_patch_free() on the patch when done.
Try to match a path against a pathspec
\n", - "comments": "Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform. You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.
\n", - "group": "pathspec" - }, - "git_pathspec_match_workdir": { - "type": "function", - "file": "pathspec.h", - "line": 113, - "lineto": 117, - "args": [ + "comment": "Treat old blob as if it had this filename; can be NULL" + }, { - "name": "out", - "type": "git_pathspec_match_list **", - "comment": "Output list of matches; pass NULL to just get return value" + "name": "buffer", + "type": "const void *", + "comment": "Raw data for new side of diff, or NULL for empty" }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository in which to match; bare repo is an error" + "name": "buffer_len", + "type": "size_t", + "comment": "Length of raw data for new side of diff" }, { - "name": "flags", - "type": "uint32_t", - "comment": "Combination of git_pathspec_flag_t options to control match" + "name": "buffer_as_path", + "type": "const char *", + "comment": "Treat buffer as if it had this filename; can be NULL" }, { - "name": "ps", - "type": "git_pathspec *", - "comment": "Pathspec to be matched" + "name": "opts", + "type": "const git_diff_options *", + "comment": "Options for diff, or NULL for default options" } ], - "argline": "git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps", - "sig": "git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *", + "argline": "git_patch **out, const git_blob *old_blob, const char *old_as_path, const void *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts", + "sig": "git_patch **::const git_blob *::const char *::const void *::size_t::const char *::const git_diff_options *", "return": { "type": "int", - "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n the GIT_PATHSPEC_NO_MATCH_ERROR flag was given" + "comment": " 0 on success or error code \n<\n 0" }, - "description": "Match a pathspec against the working directory of a repository.
\n", - "comments": "This matches the pathspec against the current files in the working directory of the repository. It is an error to invoke this on a bare repo. This handles git ignores (i.e. ignored files will not be considered to match the pathspec unless the file is tracked in the index).
If out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Directly generate a patch from the difference between a blob and a buffer.
\n", + "comments": "This is just like git_diff_blob_to_buffer() except it generates a patch object for the difference instead of directly making callbacks. You can use the standard git_patch accessor functions to read the patch data, and you must call git_patch_free() on the patch when done.
Match a pathspec against entries in an index.
\n", - "comments": "This matches the pathspec against the files in the repository index.
\n\nNOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect. This behavior will be corrected in a future release.
\n\nIf out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Match a pathspec against files in a tree.
\n", - "comments": "This matches the pathspec against the files in the given tree.
\n\nIf out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Directly generate a patch from the difference between two buffers.
\n", + "comments": "This is just like git_diff_buffers() except it generates a patch object for the difference instead of directly making callbacks. You can use the standard git_patch accessor functions to read the patch data, and you must call git_patch_free() on the patch when done.
Match a pathspec against files in a diff list.
\n", - "comments": "This matches the pathspec against the files in the given diff list.
\n\nIf out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Free a git_patch object.
\n", + "comments": "", + "group": "patch", + "examples": { "diff.c": ["ex/v1.9.1/diff.html#git_patch_free-17"] } }, - "git_pathspec_match_list_free": { + "git_patch_get_delta": { "type": "function", - "file": "pathspec.h", - "line": 201, - "lineto": 201, + "file": "git2/patch.h", + "line": 154, + "lineto": 154, "args": [ { - "name": "m", - "type": "git_pathspec_match_list *", - "comment": "The git_pathspec_match_list to be freed" + "name": "patch", + "type": "const git_patch *", + "comment": "The patch in which to get the delta." } ], - "argline": "git_pathspec_match_list *m", - "sig": "git_pathspec_match_list *", + "argline": "const git_patch *patch", + "sig": "const git_patch *", "return": { - "type": "void", - "comment": null + "type": "const git_diff_delta *", + "comment": " The delta associated with the patch." }, - "description": "Free memory associates with a git_pathspec_match_list
\n", + "description": "Get the delta associated with a patch. This delta points to internal\n data and you do not have to release it when you are done with it.
\n", "comments": "", - "group": "pathspec" + "group": "patch" }, - "git_pathspec_match_list_entrycount": { + "git_patch_num_hunks": { "type": "function", - "file": "pathspec.h", - "line": 209, - "lineto": 210, + "file": "git2/patch.h", + "line": 162, + "lineto": 162, "args": [ { - "name": "m", - "type": "const git_pathspec_match_list *", - "comment": "The git_pathspec_match_list object" + "name": "patch", + "type": "const git_patch *", + "comment": "The patch in which to get the number of hunks." } ], - "argline": "const git_pathspec_match_list *m", - "sig": "const git_pathspec_match_list *", + "argline": "const git_patch *patch", + "sig": "const git_patch *", "return": { "type": "size_t", - "comment": " Number of items in match list" + "comment": " The number of hunks of the patch." }, - "description": "Get the number of items in a match list.
\n", + "description": "Get the number of hunks in a patch
\n", "comments": "", - "group": "pathspec" + "group": "patch" }, - "git_pathspec_match_list_entry": { + "git_patch_line_stats": { "type": "function", - "file": "pathspec.h", - "line": 222, - "lineto": 223, + "file": "git2/patch.h", + "line": 180, + "lineto": 184, "args": [ { - "name": "m", - "type": "const git_pathspec_match_list *", - "comment": "The git_pathspec_match_list object" + "name": "total_context", + "type": "size_t *", + "comment": "Count of context lines in output, can be NULL." }, { - "name": "pos", - "type": "size_t", - "comment": "The index into the list" - } - ], - "argline": "const git_pathspec_match_list *m, size_t pos", - "sig": "const git_pathspec_match_list *::size_t", - "return": { - "type": "const char *", - "comment": " The filename of the match" - }, - "description": "Get a matching filename by position.
\n", - "comments": "This routine cannot be used if the match list was generated by git_pathspec_match_diff. If so, it will always return NULL.
Get a matching diff delta by position.
\n", - "comments": "This routine can only be used if the match list was generated by git_pathspec_match_diff. Otherwise it will always return NULL.
Get line counts of each type in a patch.
\n", + "comments": "This helps imitate a diff --numstat type of output. For that purpose, you only need the total_additions and total_deletions values, but we include the total_context line count in case you want the total number of lines of diff output that will be generated.
All outputs are optional. Pass NULL if you don't need a particular count.
\n", + "group": "patch" }, - "git_pathspec_match_list_failed_entrycount": { + "git_patch_get_hunk": { "type": "function", - "file": "pathspec.h", - "line": 247, - "lineto": 248, + "file": "git2/patch.h", + "line": 199, + "lineto": 203, "args": [ { - "name": "m", - "type": "const git_pathspec_match_list *", - "comment": "The git_pathspec_match_list object" - } - ], - "argline": "const git_pathspec_match_list *m", - "sig": "const git_pathspec_match_list *", - "return": { - "type": "size_t", - "comment": " Number of items in original pathspec that had no matches" - }, - "description": "Get the number of pathspec items that did not match.
\n", - "comments": "This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.
\n", - "group": "pathspec" - }, - "git_pathspec_match_list_failed_entry": { - "type": "function", - "file": "pathspec.h", - "line": 259, - "lineto": 260, - "args": [ + "name": "out", + "type": "const git_diff_hunk **", + "comment": "Output pointer to git_diff_hunk of hunk" + }, { - "name": "m", - "type": "const git_pathspec_match_list *", - "comment": "The git_pathspec_match_list object" + "name": "lines_in_hunk", + "type": "size_t *", + "comment": "Output count of total lines in this hunk" }, { - "name": "pos", + "name": "patch", + "type": "git_patch *", + "comment": "Input pointer to patch object" + }, + { + "name": "hunk_idx", "type": "size_t", - "comment": "The index into the failed items" + "comment": "Input index of hunk to get information about" } ], - "argline": "const git_pathspec_match_list *m, size_t pos", - "sig": "const git_pathspec_match_list *::size_t", + "argline": "const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx", + "sig": "const git_diff_hunk **::size_t *::git_patch *::size_t", "return": { - "type": "const char *", - "comment": " The pathspec pattern that didn't match anything" + "type": "int", + "comment": " 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error" }, - "description": "Get an original pathspec string that had no matches.
\n", - "comments": "This will be return NULL for positions out of range.
\n", - "group": "pathspec" + "description": "Get the information about a hunk in a patch
\n", + "comments": "Given a patch and a hunk index into the patch, this returns detailed information about that hunk. Any of the output pointers can be passed as NULL if you don't care about that particular piece of information.
\n", + "group": "patch" }, - "git_proxy_init_options": { + "git_patch_num_lines_in_hunk": { "type": "function", - "file": "proxy.h", - "line": 88, - "lineto": 88, + "file": "git2/patch.h", + "line": 212, + "lineto": 214, "args": [ { - "name": "opts", - "type": "git_proxy_options *", - "comment": "the options struct to initialize" + "name": "patch", + "type": "const git_patch *", + "comment": "The git_patch object" }, - { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct, use `GIT_PROXY_OPTIONS_VERSION`" - } + { "name": "hunk_idx", "type": "size_t", "comment": "Index of the hunk" } ], - "argline": "git_proxy_options *opts, unsigned int version", - "sig": "git_proxy_options *::unsigned int", + "argline": "const git_patch *patch, size_t hunk_idx", + "sig": "const git_patch *::size_t", "return": { "type": "int", - "comment": null + "comment": " Number of lines in hunk or GIT_ENOTFOUND if invalid hunk index" }, - "description": "Initialize a proxy options structure
\n", + "description": "Get the number of lines in a hunk.
\n", "comments": "", - "group": "proxy" + "group": "patch" }, - "git_rebase_init_options": { + "git_patch_get_line_in_hunk": { "type": "function", - "file": "rebase.h", - "line": 156, - "lineto": 158, + "file": "git2/patch.h", + "line": 230, + "lineto": 234, "args": [ { - "name": "opts", - "type": "git_rebase_options *", - "comment": "the `git_rebase_options` instance to initialize." + "name": "out", + "type": "const git_diff_line **", + "comment": "The git_diff_line data for this line" }, { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct; you should pass\n `GIT_REBASE_OPTIONS_VERSION` here." + "name": "patch", + "type": "git_patch *", + "comment": "The patch to look in" + }, + { + "name": "hunk_idx", + "type": "size_t", + "comment": "The index of the hunk" + }, + { + "name": "line_of_hunk", + "type": "size_t", + "comment": "The index of the line in the hunk" } ], - "argline": "git_rebase_options *opts, unsigned int version", - "sig": "git_rebase_options *::unsigned int", + "argline": "const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk", + "sig": "const git_diff_line **::git_patch *::size_t::size_t", "return": { "type": "int", - "comment": " Zero on success; -1 on failure." + "comment": " 0 on success, \n<\n0 on failure" }, - "description": "Initializes a git_rebase_options with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.
Get data about a line in a hunk of a patch.
\n", + "comments": "Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line. If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.
\n", + "group": "patch" }, - "git_rebase_init": { + "git_patch_size": { "type": "function", - "file": "rebase.h", - "line": 177, - "lineto": 183, + "file": "git2/patch.h", + "line": 252, + "lineto": 256, "args": [ { - "name": "out", - "type": "git_rebase **", - "comment": "Pointer to store the rebase object" + "name": "patch", + "type": "git_patch *", + "comment": "A git_patch representing changes to one file" }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository to perform the rebase" + "name": "include_context", + "type": "int", + "comment": "Include context lines in size if non-zero" }, { - "name": "branch", - "type": "const git_annotated_commit *", - "comment": "The terminal commit to rebase, or NULL to rebase the\n current branch" + "name": "include_hunk_headers", + "type": "int", + "comment": "Include hunk header lines if non-zero" }, { - "name": "upstream", - "type": "const git_annotated_commit *", - "comment": "The commit to begin rebasing from, or NULL to rebase all\n reachable commits" + "name": "include_file_headers", + "type": "int", + "comment": "Include file header lines if non-zero" + } + ], + "argline": "git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers", + "sig": "git_patch *::int::int::int", + "return": { "type": "size_t", "comment": " The number of bytes of data" }, + "description": "Look up size of patch diff data in bytes
\n", + "comments": "This returns the raw size of the patch data. This only includes the actual data from the lines of the diff, not the file or hunk headers.
\n\nIf you pass include_context as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if context_lines was 0).
Initializes a rebase operation to rebase the changes in branch\n relative to upstream onto another branch. To begin the rebase\n process, call git_rebase_next. When you have finished with this\n object, call git_rebase_free.
Serialize the patch to text via callback.
\n", + "comments": "Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.
\n", + "group": "patch" }, - "git_rebase_open": { + "git_patch_to_buf": { "type": "function", - "file": "rebase.h", - "line": 194, - "lineto": 197, + "file": "git2/patch.h", + "line": 282, + "lineto": 284, "args": [ { "name": "out", - "type": "git_rebase **", - "comment": "Pointer to store the rebase object" + "type": "git_buf *", + "comment": "The git_buf to be filled in" }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository that has a rebase in-progress" - }, - { - "name": "opts", - "type": "const git_rebase_options *", - "comment": "Options to specify how rebase is performed" + "name": "patch", + "type": "git_patch *", + "comment": "A git_patch representing changes to one file" } ], - "argline": "git_rebase **out, git_repository *repo, const git_rebase_options *opts", - "sig": "git_rebase **::git_repository *::const git_rebase_options *", + "argline": "git_buf *out, git_patch *patch", + "sig": "git_buf *::git_patch *", "return": { "type": "int", - "comment": " Zero on success; -1 on failure." + "comment": " 0 on success, \n<\n0 on failure." }, - "description": "Opens an existing rebase that was previously started by either an\n invocation of git_rebase_init or by another client.
Get the content of a patch as a single diff text.
\n", "comments": "", - "group": "rebase" + "group": "patch", + "examples": { "diff.c": ["ex/v1.9.1/diff.html#git_patch_to_buf-18"] } }, - "git_rebase_operation_entrycount": { + "git_pathspec_new": { "type": "function", - "file": "rebase.h", - "line": 205, - "lineto": 205, + "file": "git2/pathspec.h", + "line": 89, + "lineto": 90, "args": [ { - "name": "rebase", - "type": "git_rebase *", - "comment": "The in-progress rebase" + "name": "out", + "type": "git_pathspec **", + "comment": "Output of the compiled pathspec" + }, + { + "name": "pathspec", + "type": "const git_strarray *", + "comment": "A git_strarray of the paths to match" } ], - "argline": "git_rebase *rebase", - "sig": "git_rebase *", + "argline": "git_pathspec **out, const git_strarray *pathspec", + "sig": "git_pathspec **::const git_strarray *", "return": { - "type": "size_t", - "comment": " The number of rebase operations in total" + "type": "int", + "comment": " 0 on success, \n<\n0 on failure" }, - "description": "Gets the count of rebase operations that are to be applied.
\n", + "description": "Compile a pathspec
\n", "comments": "", - "group": "rebase" + "group": "pathspec", + "examples": { "log.c": ["ex/v1.9.1/log.html#git_pathspec_new-40"] } }, - "git_rebase_operation_current": { + "git_pathspec_free": { "type": "function", - "file": "rebase.h", - "line": 216, - "lineto": 216, + "file": "git2/pathspec.h", + "line": 97, + "lineto": 97, "args": [ { - "name": "rebase", - "type": "git_rebase *", - "comment": "The in-progress rebase" + "name": "ps", + "type": "git_pathspec *", + "comment": "The compiled pathspec" } ], - "argline": "git_rebase *rebase", - "sig": "git_rebase *", - "return": { - "type": "size_t", - "comment": " The index of the rebase operation currently being applied." - }, - "description": "Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called init but not yet next) then this returns\n GIT_REBASE_NO_OPERATION.
Free a pathspec
\n", "comments": "", - "group": "rebase" + "group": "pathspec", + "examples": { "log.c": ["ex/v1.9.1/log.html#git_pathspec_free-41"] } }, - "git_rebase_operation_byindex": { + "git_pathspec_matches_path": { "type": "function", - "file": "rebase.h", - "line": 225, - "lineto": 227, + "file": "git2/pathspec.h", + "line": 112, + "lineto": 113, "args": [ { - "name": "rebase", - "type": "git_rebase *", - "comment": "The in-progress rebase" + "name": "ps", + "type": "const git_pathspec *", + "comment": "The compiled pathspec" }, { - "name": "idx", - "type": "size_t", - "comment": "The index of the rebase operation to retrieve" + "name": "flags", + "type": "uint32_t", + "comment": "Combination of git_pathspec_flag_t options to control match" + }, + { + "name": "path", + "type": "const char *", + "comment": "The pathname to attempt to match" } ], - "argline": "git_rebase *rebase, size_t idx", - "sig": "git_rebase *::size_t", + "argline": "const git_pathspec *ps, uint32_t flags, const char *path", + "sig": "const git_pathspec *::uint32_t::const char *", "return": { - "type": "git_rebase_operation *", - "comment": " The rebase operation or NULL if `idx` was out of bounds" + "type": "int", + "comment": " 1 is path matches spec, 0 if it does not" }, - "description": "Gets the rebase operation specified by the given index.
\n", - "comments": "", - "group": "rebase" + "description": "Try to match a path against a pathspec
\n", + "comments": "Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform. You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.
\n", + "group": "pathspec" }, - "git_rebase_next": { + "git_pathspec_match_workdir": { "type": "function", - "file": "rebase.h", - "line": 240, - "lineto": 242, + "file": "git2/pathspec.h", + "line": 137, + "lineto": 141, "args": [ { - "name": "operation", - "type": "git_rebase_operation **", - "comment": "Pointer to store the rebase operation that is to be performed next" + "name": "out", + "type": "git_pathspec_match_list **", + "comment": "Output list of matches; pass NULL to just get return value" }, { - "name": "rebase", - "type": "git_rebase *", - "comment": "The rebase in progress" + "name": "repo", + "type": "git_repository *", + "comment": "The repository in which to match; bare repo is an error" + }, + { + "name": "flags", + "type": "uint32_t", + "comment": "Combination of git_pathspec_flag_t options to control match" + }, + { + "name": "ps", + "type": "git_pathspec *", + "comment": "Pathspec to be matched" } ], - "argline": "git_rebase_operation **operation, git_rebase *rebase", - "sig": "git_rebase_operation **::git_rebase *", + "argline": "git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps", + "sig": "git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *", "return": { "type": "int", - "comment": " Zero on success; -1 on failure." + "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n the GIT_PATHSPEC_NO_MATCH_ERROR flag was given" }, - "description": "Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes. If there are conflicts,\n you will need to address those before committing the changes.
\n", - "comments": "", - "group": "rebase" + "description": "Match a pathspec against the working directory of a repository.
\n", + "comments": "This matches the pathspec against the current files in the working directory of the repository. It is an error to invoke this on a bare repo. This handles git ignores (i.e. ignored files will not be considered to match the pathspec unless the file is tracked in the index).
If out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Gets the index produced by the last operation, which is the result\n of git_rebase_next and which will be committed by the next\n invocation of git_rebase_commit. This is useful for resolving\n conflicts in an in-memory rebase before committing them. You must\n call git_index_free when you are finished with this.
This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository's index.
\n", - "group": "rebase" + "description": "Match a pathspec against entries in an index.
\n", + "comments": "This matches the pathspec against the files in the repository index.
\n\nNOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect. This behavior will be corrected in a future release.
\n\nIf out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Commits the current patch. You must have resolved any conflicts that\n were introduced during the patch application from the git_rebase_next\n invocation.
Match a pathspec against files in a tree.
\n", + "comments": "This matches the pathspec against the files in the given tree.
\n\nIf out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.
\n", - "comments": "", - "group": "rebase" - }, - "git_rebase_finish": { - "type": "function", - "file": "rebase.h", - "line": 307, - "lineto": 309, - "args": [ + "name": "out", + "type": "git_pathspec_match_list **", + "comment": "Output list of matches; pass NULL to just get return value" + }, { - "name": "rebase", - "type": "git_rebase *", - "comment": "The rebase that is in-progress" + "name": "diff", + "type": "git_diff *", + "comment": "A generated diff list" }, { - "name": "signature", - "type": "const git_signature *", - "comment": "The identity that is finishing the rebase (optional)" + "name": "flags", + "type": "uint32_t", + "comment": "Combination of git_pathspec_flag_t options to control match" + }, + { + "name": "ps", + "type": "git_pathspec *", + "comment": "Pathspec to be matched" } ], - "argline": "git_rebase *rebase, const git_signature *signature", - "sig": "git_rebase *::const git_signature *", + "argline": "git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps", + "sig": "git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *", "return": { "type": "int", - "comment": " Zero on success; -1 on error" + "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n the GIT_PATHSPEC_NO_MATCH_ERROR flag is used" }, - "description": "Finishes a rebase that is currently in progress once all patches have\n been applied.
\n", + "description": "Match a pathspec against files in a diff list.
\n", + "comments": "This matches the pathspec against the files in the given diff list.
\n\nIf out is not NULL, this returns a git_patchspec_match_list. That contains the list of all matched filenames (unless you pass the GIT_PATHSPEC_FAILURES_ONLY flag) and may also contain the list of pathspecs with no match (if you used the GIT_PATHSPEC_FIND_FAILURES flag). You must call git_pathspec_match_list_free() on this object.
Free memory associates with a git_pathspec_match_list
\n", "comments": "", - "group": "rebase" + "group": "pathspec" }, - "git_rebase_free": { + "git_pathspec_match_list_entrycount": { "type": "function", - "file": "rebase.h", - "line": 316, - "lineto": 316, + "file": "git2/pathspec.h", + "line": 233, + "lineto": 234, "args": [ { - "name": "rebase", - "type": "git_rebase *", - "comment": "The rebase object" + "name": "m", + "type": "const git_pathspec_match_list *", + "comment": "The git_pathspec_match_list object" } ], - "argline": "git_rebase *rebase", - "sig": "git_rebase *", + "argline": "const git_pathspec_match_list *m", + "sig": "const git_pathspec_match_list *", "return": { - "type": "void", - "comment": null + "type": "size_t", + "comment": " Number of items in match list" }, - "description": "Frees the git_rebase object.
Get the number of items in a match list.
\n", "comments": "", - "group": "rebase" + "group": "pathspec" }, - "git_refdb_new": { + "git_pathspec_match_list_entry": { "type": "function", - "file": "refdb.h", - "line": 35, - "lineto": 35, + "file": "git2/pathspec.h", + "line": 246, + "lineto": 247, "args": [ { - "name": "out", - "type": "git_refdb **", - "comment": "location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed." + "name": "m", + "type": "const git_pathspec_match_list *", + "comment": "The git_pathspec_match_list object" }, { - "name": "repo", - "type": "git_repository *", - "comment": "the repository" + "name": "pos", + "type": "size_t", + "comment": "The index into the list" } ], - "argline": "git_refdb **out, git_repository *repo", - "sig": "git_refdb **::git_repository *", + "argline": "const git_pathspec_match_list *m, size_t pos", + "sig": "const git_pathspec_match_list *::size_t", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const char *", + "comment": " The filename of the match" }, - "description": "Create a new reference database with no backends.
\n", - "comments": "Before the Ref DB can be used for read/writing, a custom database backend must be manually set using git_refdb_set_backend()
Get a matching filename by position.
\n", + "comments": "This routine cannot be used if the match list was generated by git_pathspec_match_diff. If so, it will always return NULL.
Create a new reference database and automatically add\n the default backends:
\n", - "comments": "Get a matching diff delta by position.
\n", + "comments": "This routine can only be used if the match list was generated by git_pathspec_match_diff. Otherwise it will always return NULL.
Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific. For on-disk reference\n databases, for example, this may pack all loose references.
\n", - "comments": "", - "group": "refdb" + "description": "Get the number of pathspec items that did not match.
\n", + "comments": "This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.
\n", + "group": "pathspec" }, - "git_refdb_free": { + "git_pathspec_match_list_failed_entry": { "type": "function", - "file": "refdb.h", - "line": 63, - "lineto": 63, + "file": "git2/pathspec.h", + "line": 283, + "lineto": 284, "args": [ { - "name": "refdb", - "type": "git_refdb *", - "comment": "reference database pointer or NULL" + "name": "m", + "type": "const git_pathspec_match_list *", + "comment": "The git_pathspec_match_list object" + }, + { + "name": "pos", + "type": "size_t", + "comment": "The index into the failed items" } ], - "argline": "git_refdb *refdb", - "sig": "git_refdb *", + "argline": "const git_pathspec_match_list *m, size_t pos", + "sig": "const git_pathspec_match_list *::size_t", "return": { - "type": "void", - "comment": null + "type": "const char *", + "comment": " The pathspec pattern that didn't match anything" }, - "description": "Close an open reference database.
\n", - "comments": "", - "group": "refdb" + "description": "Get an original pathspec string that had no matches.
\n", + "comments": "This will be return NULL for positions out of range.
\n", + "group": "pathspec" }, - "git_reflog_read": { + "git_proxy_options_init": { "type": "function", - "file": "reflog.h", - "line": 38, - "lineto": 38, + "file": "git2/proxy.h", + "line": 103, + "lineto": 103, "args": [ { - "name": "out", - "type": "git_reflog **", - "comment": "pointer to reflog" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repostiory" + "name": "opts", + "type": "git_proxy_options *", + "comment": "The `git_proxy_options` struct to initialize." }, { - "name": "name", - "type": "const char *", - "comment": "reference to look up" + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_PROXY_OPTIONS_VERSION`." } ], - "argline": "git_reflog **out, git_repository *repo, const char *name", - "sig": "git_reflog **::git_repository *::const char *", + "argline": "git_proxy_options *opts, unsigned int version", + "sig": "git_proxy_options *::unsigned int", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " Zero on success; -1 on failure." }, - "description": "Read the reflog for the given reference
\n", - "comments": "If there is no reflog file for the given reference yet, an empty reflog object will be returned.
\n\nThe reflog must be freed manually by using git_reflog_free().
\n", - "group": "reflog" + "description": "Initialize git_proxy_options structure
\n", + "comments": "Initializes a git_proxy_options with default values. Equivalent to creating an instance with GIT_PROXY_OPTIONS_INIT.
Write an existing in-memory reflog object back to disk\n using an atomic file lock.
\n", - "comments": "", - "group": "reflog" + "description": "Initialize git_rebase_options structure
\n", + "comments": "Initializes a git_rebase_options with default values. Equivalent to creating an instance with GIT_REBASE_OPTIONS_INIT.
Add a new entry to the in-memory reflog.
\n", - "comments": "msg is optional and can be NULL.
Rename a reflog
\n", - "comments": "The reflog to be renamed is expected to already exist
\n\nThe new name will be checked for validity. See git_reference_create_symbolic() for rules about valid names.
Initializes a rebase operation to rebase the changes in branch\n relative to upstream onto another branch. To begin the rebase\n process, call git_rebase_next. When you have finished with this\n object, call git_rebase_free.
Delete the reflog for the given reference
\n", + "description": "Opens an existing rebase that was previously started by either an\n invocation of git_rebase_init or by another client.
Get the number of log entries in a reflog
\n", + "description": "Gets the original HEAD ref name for merge rebases.
Lookup an entry by its index
\n", - "comments": "Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.
\n", - "group": "reflog" + "description": "Gets the original HEAD id for merge rebases.
Remove an entry from the reflog by its index
\n", - "comments": "To ensure there's no gap in the log history, set rewrite_previous_entry param value to 1. When deleting entry n, member old_oid of entry n-1 (if any) will be updated with the value of member new_oid of entry n+1.
Gets the onto ref name for merge rebases.
Get the old oid
\n", + "argline": "git_rebase *rebase", + "sig": "git_rebase *", + "return": { "type": "const git_oid *", "comment": " The `onto` id" }, + "description": "Gets the onto id for merge rebases.
Get the new oid
\n", + "description": "Gets the count of rebase operations that are to be applied.
\n", "comments": "", - "group": "reflog" + "group": "rebase" }, - "git_reflog_entry_committer": { + "git_rebase_operation_current": { "type": "function", - "file": "reflog.h", - "line": 151, - "lineto": 151, + "file": "git2/rebase.h", + "line": 293, + "lineto": 293, "args": [ { - "name": "entry", - "type": "const git_reflog_entry *", - "comment": "a reflog entry" + "name": "rebase", + "type": "git_rebase *", + "comment": "The in-progress rebase" } ], - "argline": "const git_reflog_entry *entry", - "sig": "const git_reflog_entry *", + "argline": "git_rebase *rebase", + "sig": "git_rebase *", "return": { - "type": "const git_signature *", - "comment": " the committer" + "type": "size_t", + "comment": " The index of the rebase operation currently being applied." }, - "description": "Get the committer of this entry
\n", + "description": "Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called init but not yet next) then this returns\n GIT_REBASE_NO_OPERATION.
Get the log message
\n", + "description": "Gets the rebase operation specified by the given index.
\n", "comments": "", - "group": "reflog" + "group": "rebase" }, - "git_reflog_free": { + "git_rebase_next": { "type": "function", - "file": "reflog.h", - "line": 166, - "lineto": 166, + "file": "git2/rebase.h", + "line": 317, + "lineto": 319, "args": [ { - "name": "reflog", - "type": "git_reflog *", - "comment": "reflog to free" + "name": "operation", + "type": "git_rebase_operation **", + "comment": "Pointer to store the rebase operation that is to be performed next" + }, + { + "name": "rebase", + "type": "git_rebase *", + "comment": "The rebase in progress" } ], - "argline": "git_reflog *reflog", - "sig": "git_reflog *", + "argline": "git_rebase_operation **operation, git_rebase *rebase", + "sig": "git_rebase_operation **::git_rebase *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " Zero on success; -1 on failure." }, - "description": "Free the reflog
\n", + "description": "Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes. If there are conflicts,\n you will need to address those before committing the changes.
\n", "comments": "", - "group": "reflog" + "group": "rebase" }, - "git_reference_lookup": { + "git_rebase_inmemory_index": { "type": "function", - "file": "refs.h", - "line": 37, - "lineto": 37, + "file": "git2/rebase.h", + "line": 336, + "lineto": 338, "args": [ { - "name": "out", - "type": "git_reference **", - "comment": "pointer to the looked-up reference" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository to look up the reference" + "name": "index", + "type": "git_index **", + "comment": "The result index of the last operation." }, { - "name": "name", - "type": "const char *", - "comment": "the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)" + "name": "rebase", + "type": "git_rebase *", + "comment": "The in-progress rebase." } ], - "argline": "git_reference **out, git_repository *repo, const char *name", - "sig": "git_reference **::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code." - }, - "description": "Lookup a reference by name in a repository.
\n", - "comments": "The returned reference must be freed by the user.
\n\nThe name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
Gets the index produced by the last operation, which is the result\n of git_rebase_next and which will be committed by the next\n invocation of git_rebase_commit. This is useful for resolving\n conflicts in an in-memory rebase before committing them. You must\n call git_index_free when you are finished with this.
This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository's index.
\n", + "group": "rebase" }, - "git_reference_name_to_id": { + "git_rebase_commit": { "type": "function", - "file": "refs.h", - "line": 54, - "lineto": 55, + "file": "git2/rebase.h", + "line": 362, + "lineto": 368, "args": [ { - "name": "out", + "name": "id", "type": "git_oid *", - "comment": "Pointer to oid to be filled in" + "comment": "Pointer in which to store the OID of the newly created commit" }, { - "name": "repo", - "type": "git_repository *", - "comment": "The repository in which to look up the reference" + "name": "rebase", + "type": "git_rebase *", + "comment": "The rebase that is in-progress" }, { - "name": "name", - "type": "const char *", - "comment": "The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)" - } - ], - "argline": "git_oid *out, git_repository *repo, const char *name", - "sig": "git_oid *::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code." - }, - "description": "Lookup a reference by name and resolve immediately to OID.
\n", - "comments": "This function provides a quick way to resolve a reference name straight through to the object id that it refers to. This avoids having to allocate or free any git_reference objects for simple situations.
The name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
Lookup a reference by DWIMing its short name
\n", - "comments": "Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.
\n", - "group": "reference" + "description": "Commits the current patch. You must have resolved any conflicts that\n were introduced during the patch application from the git_rebase_next\n invocation.
Conditionally create a new symbolic reference.
\n", - "comments": "A symbolic reference is a reference name that refers to another reference name. If the other name moves, the symbolic name will move, too. As a simple example, the "HEAD" reference might refer to "refs/heads/master" while on the "master" branch of a repository.
\n\nThe symbolic reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n\nIt will return GIT_EMODIFIED if the reference's value at the time of updating does not match the one passed through current_value (i.e. if the ref has changed since the user read it).
Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.
\n", + "comments": "", + "group": "rebase" }, - "git_reference_symbolic_create": { + "git_rebase_finish": { "type": "function", - "file": "refs.h", - "line": 145, - "lineto": 145, + "file": "git2/rebase.h", + "line": 388, + "lineto": 390, "args": [ { - "name": "out", - "type": "git_reference **", - "comment": "Pointer to the newly created reference" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where that reference will live" - }, - { - "name": "name", - "type": "const char *", - "comment": "The name of the reference" - }, - { - "name": "target", - "type": "const char *", - "comment": "The target of the reference" + "name": "rebase", + "type": "git_rebase *", + "comment": "The rebase that is in-progress" }, { - "name": "force", - "type": "int", - "comment": "Overwrite existing references" - }, + "name": "signature", + "type": "const git_signature *", + "comment": "The identity that is finishing the rebase (optional)" + } + ], + "argline": "git_rebase *rebase, const git_signature *signature", + "sig": "git_rebase *::const git_signature *", + "return": { "type": "int", "comment": " Zero on success; -1 on error" }, + "description": "Finishes a rebase that is currently in progress once all patches have\n been applied.
\n", + "comments": "", + "group": "rebase" + }, + "git_rebase_free": { + "type": "function", + "file": "git2/rebase.h", + "line": 397, + "lineto": 397, + "args": [ { - "name": "log_message", - "type": "const char *", - "comment": "The one line long message to be appended to the reflog" + "name": "rebase", + "type": "git_rebase *", + "comment": "The rebase object" } ], - "argline": "git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message", - "sig": "git_reference **::git_repository *::const char *::const char *::int::const char *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code" - }, - "description": "Create a new symbolic reference.
\n", - "comments": "A symbolic reference is a reference name that refers to another reference name. If the other name moves, the symbolic name will move, too. As a simple example, the "HEAD" reference might refer to "refs/heads/master" while on the "master" branch of a repository.
\n\nThe symbolic reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n", - "group": "reference" + "argline": "git_rebase *rebase", + "sig": "git_rebase *", + "return": { "type": "void", "comment": null }, + "description": "Frees the git_rebase object.
Create a new reference database with no backends.
\n", + "comments": "Before the Ref DB can be used for read/writing, a custom database backend must be manually set using git_refdb_set_backend()
Create a new reference database and automatically add\n the default backends:
\n", + "comments": "Create a new direct reference.
\n", - "comments": "A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository. The id permanently refers to the object (although the reference itself can be moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0" refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.
\n\nThe direct reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.
\n", - "group": "reference" + "argline": "git_refdb *refdb", + "sig": "git_refdb *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific. For on-disk reference\n databases, for example, this may pack all loose references.
\n", + "comments": "", + "group": "refdb" }, - "git_reference_create_matching": { + "git_refdb_free": { "type": "function", - "file": "refs.h", - "line": 225, - "lineto": 225, + "file": "git2/refdb.h", + "line": 66, + "lineto": 66, + "args": [ + { + "name": "refdb", + "type": "git_refdb *", + "comment": "reference database pointer or NULL" + } + ], + "argline": "git_refdb *refdb", + "sig": "git_refdb *", + "return": { "type": "void", "comment": null }, + "description": "Close an open reference database.
\n", + "comments": "", + "group": "refdb" + }, + "git_reflog_read": { + "type": "function", + "file": "git2/reflog.h", + "line": 38, + "lineto": 38, "args": [ { "name": "out", - "type": "git_reference **", - "comment": "Pointer to the newly created reference" + "type": "git_reflog **", + "comment": "pointer to reflog" }, { "name": "repo", "type": "git_repository *", - "comment": "Repository where that reference will live" + "comment": "the repository" }, { "name": "name", "type": "const char *", - "comment": "The name of the reference" + "comment": "reference to look up" + } + ], + "argline": "git_reflog **out, git_repository *repo, const char *name", + "sig": "git_reflog **::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Read the reflog for the given reference
\n", + "comments": "If there is no reflog file for the given reference yet, an empty reflog object will be returned.
\n\nThe reflog must be freed manually by using git_reflog_free().
\n", + "group": "reflog" + }, + "git_reflog_write": { + "type": "function", + "file": "git2/reflog.h", + "line": 47, + "lineto": 47, + "args": [ + { + "name": "reflog", + "type": "git_reflog *", + "comment": "an existing reflog object" + } + ], + "argline": "git_reflog *reflog", + "sig": "git_reflog *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write an existing in-memory reflog object back to disk\n using an atomic file lock.
\n", + "comments": "", + "group": "reflog" + }, + "git_reflog_append": { + "type": "function", + "file": "git2/reflog.h", + "line": 60, + "lineto": 60, + "args": [ + { + "name": "reflog", + "type": "git_reflog *", + "comment": "an existing reflog object" }, { "name": "id", "type": "const git_oid *", - "comment": "The object id pointed to by the reference." + "comment": "the OID the reference is now pointing to" }, { - "name": "force", - "type": "int", - "comment": "Overwrite existing references" + "name": "committer", + "type": "const git_signature *", + "comment": "the signature of the committer" }, { - "name": "current_id", - "type": "const git_oid *", - "comment": "The expected value of the reference at the time of update" + "name": "msg", + "type": "const char *", + "comment": "the reflog message" + } + ], + "argline": "git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg", + "sig": "git_reflog *::const git_oid *::const git_signature *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Add a new entry to the in-memory reflog.
\n", + "comments": "msg is optional and can be NULL.
Conditionally create new direct reference
\n", - "comments": "A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository. The id permanently refers to the object (although the reference itself can be moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0" refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.
\n\nThe direct reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.
\n\nIt will return GIT_EMODIFIED if the reference's value at the time of updating does not match the one passed through current_id (i.e. if the ref has changed since the user read it).
Rename a reflog
\n", + "comments": "The reflog to be renamed is expected to already exist
\n\nThe new name will be checked for validity. See git_reference_create_symbolic() for rules about valid names.
Get the OID pointed to by a direct reference.
\n", - "comments": "Only available if the reference is direct (i.e. an object id reference, not a symbolic one).
\n\nTo find the OID of a symbolic ref, call git_reference_resolve() and then this function (or maybe use git_reference_name_to_id() to directly resolve a reference name all the way through to an OID).
Delete the reflog for the given reference
\n", + "comments": "", + "group": "reflog" }, - "git_reference_target_peel": { + "git_reflog_entrycount": { "type": "function", - "file": "refs.h", - "line": 251, - "lineto": 251, + "file": "git2/reflog.h", + "line": 92, + "lineto": 92, "args": [ { - "name": "ref", - "type": "const git_reference *", - "comment": "The reference" + "name": "reflog", + "type": "git_reflog *", + "comment": "the previously loaded reflog" } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", - "return": { - "type": "const git_oid *", - "comment": " a pointer to the oid if available, NULL otherwise" - }, - "description": "Return the peeled OID target of this reference.
\n", - "comments": "This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.
\n", - "group": "reference" + "argline": "git_reflog *reflog", + "sig": "git_reflog *", + "return": { "type": "size_t", "comment": " the number of log entries" }, + "description": "Get the number of log entries in a reflog
\n", + "comments": "", + "group": "reflog" }, - "git_reference_symbolic_target": { + "git_reflog_entry_byindex": { "type": "function", - "file": "refs.h", - "line": 261, - "lineto": 261, + "file": "git2/reflog.h", + "line": 105, + "lineto": 105, "args": [ { - "name": "ref", - "type": "const git_reference *", - "comment": "The reference" + "name": "reflog", + "type": "const git_reflog *", + "comment": "a previously loaded reflog" + }, + { + "name": "idx", + "type": "size_t", + "comment": "the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`." } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", + "argline": "const git_reflog *reflog, size_t idx", + "sig": "const git_reflog *::size_t", "return": { - "type": "const char *", - "comment": " a pointer to the name if available, NULL otherwise" + "type": "const git_reflog_entry *", + "comment": " the entry; NULL if not found" }, - "description": "Get full name to the reference pointed to by a symbolic reference.
\n", - "comments": "Only available if the reference is symbolic.
\n", - "group": "reference", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_reference_symbolic_target-55" - ] - } + "description": "Lookup an entry by its index
\n", + "comments": "Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.
\n", + "group": "reflog" }, - "git_reference_type": { + "git_reflog_drop": { "type": "function", - "file": "refs.h", - "line": 271, - "lineto": 271, + "file": "git2/reflog.h", + "line": 124, + "lineto": 127, "args": [ { - "name": "ref", - "type": "const git_reference *", - "comment": "The reference" + "name": "reflog", + "type": "git_reflog *", + "comment": "a previously loaded reflog." + }, + { + "name": "idx", + "type": "size_t", + "comment": "the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`." + }, + { + "name": "rewrite_previous_entry", + "type": "int", + "comment": "1 to rewrite the history; 0 otherwise." } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", + "argline": "git_reflog *reflog, size_t idx, int rewrite_previous_entry", + "sig": "git_reflog *::size_t::int", "return": { - "type": "git_ref_t", - "comment": " the type" + "type": "int", + "comment": " 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code." }, - "description": "Get the type of a reference.
\n", - "comments": "Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)
\n", - "group": "reference", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_reference_type-56" - ] - } + "description": "Remove an entry from the reflog by its index
\n", + "comments": "To ensure there's no gap in the log history, set rewrite_previous_entry param value to 1. When deleting entry n, member old_oid of entry n-1 (if any) will be updated with the value of member new_oid of entry n+1.
Get the full name of a reference.
\n", - "comments": "See git_reference_symbolic_create() for rules about valid names.
Get the old oid
\n", + "comments": "", + "group": "reflog" }, - "git_reference_resolve": { + "git_reflog_entry_id_new": { "type": "function", - "file": "refs.h", - "line": 299, - "lineto": 299, + "file": "git2/reflog.h", + "line": 143, + "lineto": 143, "args": [ { - "name": "out", - "type": "git_reference **", - "comment": "Pointer to the peeled reference" - }, - { - "name": "ref", - "type": "const git_reference *", - "comment": "The reference" + "name": "entry", + "type": "const git_reflog_entry *", + "comment": "a reflog entry" } ], - "argline": "git_reference **out, const git_reference *ref", - "sig": "git_reference **::const git_reference *", + "argline": "const git_reflog_entry *entry", + "sig": "const git_reflog_entry *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const git_oid *", + "comment": " the new oid at this time" }, - "description": "Resolve a symbolic reference to a direct reference.
\n", - "comments": "This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.
\n\nThe peeled reference is returned in the resolved_ref argument, and must be freed manually once it's no longer needed.
If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.
\n", - "group": "reference" + "description": "Get the new oid
\n", + "comments": "", + "group": "reflog" }, - "git_reference_owner": { + "git_reflog_entry_committer": { "type": "function", - "file": "refs.h", - "line": 307, - "lineto": 307, + "file": "git2/reflog.h", + "line": 151, + "lineto": 151, "args": [ { - "name": "ref", - "type": "const git_reference *", - "comment": "The reference" + "name": "entry", + "type": "const git_reflog_entry *", + "comment": "a reflog entry" } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", + "argline": "const git_reflog_entry *entry", + "sig": "const git_reflog_entry *", "return": { - "type": "git_repository *", - "comment": " a pointer to the repo" + "type": "const git_signature *", + "comment": " the committer" }, - "description": "Get the repository where a reference resides.
\n", + "description": "Get the committer of this entry
\n", "comments": "", - "group": "reference" + "group": "reflog" }, - "git_reference_symbolic_set_target": { + "git_reflog_entry_message": { "type": "function", - "file": "refs.h", - "line": 329, - "lineto": 333, + "file": "git2/reflog.h", + "line": 159, + "lineto": 159, + "args": [ + { + "name": "entry", + "type": "const git_reflog_entry *", + "comment": "a reflog entry" + } + ], + "argline": "const git_reflog_entry *entry", + "sig": "const git_reflog_entry *", + "return": { "type": "const char *", "comment": " the log msg" }, + "description": "Get the log message
\n", + "comments": "", + "group": "reflog" + }, + "git_reflog_free": { + "type": "function", + "file": "git2/reflog.h", + "line": 166, + "lineto": 166, + "args": [ + { + "name": "reflog", + "type": "git_reflog *", + "comment": "reflog to free" + } + ], + "argline": "git_reflog *reflog", + "sig": "git_reflog *", + "return": { "type": "void", "comment": null }, + "description": "Free the reflog
\n", + "comments": "", + "group": "reflog" + }, + "git_reference_lookup": { + "type": "function", + "file": "git2/refs.h", + "line": 37, + "lineto": 37, "args": [ { "name": "out", "type": "git_reference **", - "comment": "Pointer to the newly created reference" - }, - { - "name": "ref", - "type": "git_reference *", - "comment": "The reference" + "comment": "pointer to the looked-up reference" }, { - "name": "target", - "type": "const char *", - "comment": "The new target for the reference" + "name": "repo", + "type": "git_repository *", + "comment": "the repository to look up the reference" }, { - "name": "log_message", + "name": "name", "type": "const char *", - "comment": "The one line long message to be appended to the reflog" + "comment": "the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)" } ], - "argline": "git_reference **out, git_reference *ref, const char *target, const char *log_message", - "sig": "git_reference **::git_reference *::const char *::const char *", + "argline": "git_reference **out, git_repository *repo, const char *name", + "sig": "git_reference **::git_repository *::const char *", "return": { "type": "int", - "comment": " 0 on success, GIT_EINVALIDSPEC or an error code" + "comment": " 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code." }, - "description": "Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.
\n", - "comments": "The new reference will be written to disk, overwriting the given reference.
\n\nThe target name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.
\n", - "group": "reference" + "description": "Lookup a reference by name in a repository.
\n", + "comments": "The returned reference must be freed by the user.
\n\nThe name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.
\n", - "comments": "The new reference will be written to disk, overwriting the given reference.
\n", + "description": "Lookup a reference by name and resolve immediately to OID.
\n", + "comments": "This function provides a quick way to resolve a reference name straight through to the object id that it refers to. This avoids having to allocate or free any git_reference objects for simple situations.
The name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
Rename an existing reference.
\n", - "comments": "This method works for both direct and symbolic references.
\n\nThe new name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
If the force flag is not enabled, and there's already a reference with the given name, the renaming will fail.
IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.
\n", - "group": "reference" + "argline": "git_reference **out, git_repository *repo, const char *shorthand", + "sig": "git_reference **::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a reference by DWIMing its short name
\n", + "comments": "Apply the git precedence rules to the given shorthand to determine which reference the user is referring to.
\n", + "group": "reference", + "examples": { "merge.c": ["ex/v1.9.1/merge.html#git_reference_dwim-22"] } }, - "git_reference_delete": { + "git_reference_symbolic_create_matching": { "type": "function", - "file": "refs.h", - "line": 398, - "lineto": 398, + "file": "git2/refs.h", + "line": 112, + "lineto": 112, "args": [ { - "name": "ref", - "type": "git_reference *", - "comment": "The reference to remove" + "name": "out", + "type": "git_reference **", + "comment": "Pointer to the newly created reference" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "Repository where that reference will live" + }, + { + "name": "name", + "type": "const char *", + "comment": "The name of the reference" + }, + { + "name": "target", + "type": "const char *", + "comment": "The target of the reference" + }, + { + "name": "force", + "type": "int", + "comment": "Overwrite existing references" + }, + { + "name": "current_value", + "type": "const char *", + "comment": "The expected value of the reference when updating" + }, + { + "name": "log_message", + "type": "const char *", + "comment": "The one line long message to be appended to the reflog" } ], - "argline": "git_reference *ref", - "sig": "git_reference *", + "argline": "git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message", + "sig": "git_reference **::git_repository *::const char *::const char *::int::const char *::const char *", "return": { "type": "int", - "comment": " 0, GIT_EMODIFIED or an error code" + "comment": " 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code" }, - "description": "Delete an existing reference.
\n", - "comments": "This method works for both direct and symbolic references. The reference will be immediately removed on disk but the memory will not be freed. Callers must call git_reference_free.
This function will return an error if the reference has changed from the time it was looked up.
\n", + "description": "Conditionally create a new symbolic reference.
\n", + "comments": "A symbolic reference is a reference name that refers to another reference name. If the other name moves, the symbolic name will move, too. As a simple example, the "HEAD" reference might refer to "refs/heads/master" while on the "master" branch of a repository.
\n\nThe symbolic reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n\nIt will return GIT_EMODIFIED if the reference's value at the time of updating does not match the one passed through current_value (i.e. if the ref has changed since the user read it).
If current_value is all zeros, this function will return GIT_EMODIFIED if the ref already exists.
Delete an existing reference by name
\n", - "comments": "This method removes the named reference from the repository without looking at its old value.
\n", + "description": "Create a new symbolic reference.
\n", + "comments": "A symbolic reference is a reference name that refers to another reference name. If the other name moves, the symbolic name will move, too. As a simple example, the "HEAD" reference might refer to "refs/heads/master" while on the "master" branch of a repository.
\n\nThe symbolic reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n", "group": "reference" }, - "git_reference_list": { + "git_reference_create": { "type": "function", - "file": "refs.h", - "line": 423, - "lineto": 423, + "file": "git2/refs.h", + "line": 185, + "lineto": 185, "args": [ { - "name": "array", - "type": "git_strarray *", - "comment": "Pointer to a git_strarray structure where\n\t\tthe reference names will be stored" + "name": "out", + "type": "git_reference **", + "comment": "Pointer to the newly created reference" }, { "name": "repo", "type": "git_repository *", - "comment": "Repository where to find the refs" + "comment": "Repository where that reference will live" + }, + { + "name": "name", + "type": "const char *", + "comment": "The name of the reference" + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "The object id pointed to by the reference." + }, + { + "name": "force", + "type": "int", + "comment": "Overwrite existing references" + }, + { + "name": "log_message", + "type": "const char *", + "comment": "The one line long message to be appended to the reflog" } ], - "argline": "git_strarray *array, git_repository *repo", - "sig": "git_strarray *::git_repository *", + "argline": "git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message", + "sig": "git_reference **::git_repository *::const char *::const git_oid *::int::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code" }, - "description": "Fill a list with all the references that can be found in a repository.
\n", - "comments": "The string array will be filled with the names of all references; these values are owned by the user and should be free'd manually when no longer needed, using git_strarray_free().
Create a new direct reference.
\n", + "comments": "A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository. The id permanently refers to the object (although the reference itself can be moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0" refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.
\n\nThe direct reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n", "group": "reference", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_reference_list-57" - ] + "merge.c": ["ex/v1.9.1/merge.html#git_reference_create-23"] } }, - "git_reference_foreach": { + "git_reference_create_matching": { "type": "function", - "file": "refs.h", - "line": 441, - "lineto": 444, + "file": "git2/refs.h", + "line": 228, + "lineto": 228, "args": [ + { + "name": "out", + "type": "git_reference **", + "comment": "Pointer to the newly created reference" + }, { "name": "repo", "type": "git_repository *", - "comment": "Repository where to find the refs" + "comment": "Repository where that reference will live" }, { - "name": "callback", - "type": "git_reference_foreach_cb", - "comment": "Function which will be called for every listed ref" + "name": "name", + "type": "const char *", + "comment": "The name of the reference" }, { - "name": "payload", - "type": "void *", - "comment": "Additional data to pass to the callback" - } - ], - "argline": "git_repository *repo, git_reference_foreach_cb callback, void *payload", - "sig": "git_repository *::git_reference_foreach_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" - }, - "description": "Perform a callback on each reference in the repository.
\n", - "comments": "The callback function will be called for each reference in the repository, receiving the reference object and the payload value passed to this method. Returning a non-zero value from the callback will terminate the iteration.
Perform a callback on the fully-qualified name of each reference.
\n", - "comments": "The callback function will be called for each reference in the repository, receiving the name of the reference and the payload value passed to this method. Returning a non-zero value from the callback will terminate the iteration.
Conditionally create new direct reference
\n", + "comments": "A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository. The id permanently refers to the object (although the reference itself can be moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0" refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.
\n\nThe direct reference will be created in the repository and written to the disk. The generated reference object must be freed by the user.
\n\nValid reference names must follow one of two patterns:
\n\nThis function will return an error if a reference already exists with the given name unless force is true, in which case it will be overwritten.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n\nIt will return GIT_EMODIFIED if the reference's value at the time of updating does not match the one passed through current_id (i.e. if the ref has changed since the user read it).
Free the given reference.
\n", - "comments": "", + "description": "Get the OID pointed to by a direct reference.
\n", + "comments": "Only available if the reference is direct (i.e. an object id reference, not a symbolic one).
\n\nTo find the OID of a symbolic ref, call git_reference_resolve() and then this function (or maybe use git_reference_name_to_id() to directly resolve a reference name all the way through to an OID).
Compare two references.
\n", - "comments": "", + "description": "Return the peeled OID target of this reference.
\n", + "comments": "This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.
\n", "group": "reference" }, - "git_reference_iterator_new": { + "git_reference_symbolic_target": { "type": "function", - "file": "refs.h", - "line": 489, - "lineto": 491, + "file": "git2/refs.h", + "line": 264, + "lineto": 264, "args": [ { - "name": "out", - "type": "git_reference_iterator **", - "comment": "pointer in which to store the iterator" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository" + "name": "ref", + "type": "const git_reference *", + "comment": "The reference" } ], - "argline": "git_reference_iterator **out, git_repository *repo", - "sig": "git_reference_iterator **::git_repository *", + "argline": "const git_reference *ref", + "sig": "const git_reference *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const char *", + "comment": " a pointer to the name if available, NULL otherwise" }, - "description": "Create an iterator for the repo's references
\n", - "comments": "", - "group": "reference" + "description": "Get full name to the reference pointed to by a symbolic reference.
\n", + "comments": "Only available if the reference is symbolic.
\n", + "group": "reference", + "examples": { + "general.c": [ + "ex/v1.9.1/general.html#git_reference_symbolic_target-71" + ], + "merge.c": ["ex/v1.9.1/merge.html#git_reference_symbolic_target-24"] + } }, - "git_reference_iterator_glob_new": { + "git_reference_type": { "type": "function", - "file": "refs.h", - "line": 502, - "lineto": 505, + "file": "git2/refs.h", + "line": 274, + "lineto": 274, "args": [ { - "name": "out", - "type": "git_reference_iterator **", - "comment": "pointer in which to store the iterator" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository" - }, - { - "name": "glob", - "type": "const char *", - "comment": "the glob to match against the reference names" + "name": "ref", + "type": "const git_reference *", + "comment": "The reference" } ], - "argline": "git_reference_iterator **out, git_repository *repo, const char *glob", - "sig": "git_reference_iterator **::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Create an iterator for the repo's references that match the\n specified glob
\n", - "comments": "", - "group": "reference" + "argline": "const git_reference *ref", + "sig": "const git_reference *", + "return": { "type": "git_reference_t", "comment": " the type" }, + "description": "Get the type of a reference.
\n", + "comments": "Either direct (GIT_REFERENCE_DIRECT) or symbolic (GIT_REFERENCE_SYMBOLIC)
\n", + "group": "reference", + "examples": { + "general.c": ["ex/v1.9.1/general.html#git_reference_type-72"] + } }, - "git_reference_next": { + "git_reference_name": { "type": "function", - "file": "refs.h", - "line": 514, - "lineto": 514, + "file": "git2/refs.h", + "line": 284, + "lineto": 284, "args": [ { - "name": "out", - "type": "git_reference **", - "comment": "pointer in which to store the reference" - }, - { - "name": "iter", - "type": "git_reference_iterator *", - "comment": "the iterator" + "name": "ref", + "type": "const git_reference *", + "comment": "The reference" } ], - "argline": "git_reference **out, git_reference_iterator *iter", - "sig": "git_reference **::git_reference_iterator *", + "argline": "const git_reference *ref", + "sig": "const git_reference *", "return": { - "type": "int", - "comment": " 0, GIT_ITEROVER if there are no more; or an error code" + "type": "const char *", + "comment": " the full name for the ref" }, - "description": "Get the next reference
\n", - "comments": "", - "group": "reference" + "description": "Get the full name of a reference.
\n", + "comments": "See git_reference_symbolic_create() for rules about valid names.
Get the next reference's name
\n", - "comments": "This function is provided for convenience in case only the names are interesting as it avoids the allocation of the git_reference object which git_reference_next() needs.
Resolve a symbolic reference to a direct reference.
\n", + "comments": "This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.
\n\nThe peeled reference is returned in the resolved_ref argument, and must be freed manually once it's no longer needed.
If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.
\n", "group": "reference" }, - "git_reference_iterator_free": { + "git_reference_owner": { "type": "function", - "file": "refs.h", - "line": 534, - "lineto": 534, + "file": "git2/refs.h", + "line": 310, + "lineto": 310, "args": [ { - "name": "iter", - "type": "git_reference_iterator *", - "comment": "the iterator to free" + "name": "ref", + "type": "const git_reference *", + "comment": "The reference" } ], - "argline": "git_reference_iterator *iter", - "sig": "git_reference_iterator *", + "argline": "const git_reference *ref", + "sig": "const git_reference *", "return": { - "type": "void", - "comment": null + "type": "git_repository *", + "comment": " a pointer to the repo" }, - "description": "Free the iterator and its associated resources
\n", + "description": "Get the repository where a reference resides.
\n", "comments": "", "group": "reference" }, - "git_reference_foreach_glob": { + "git_reference_symbolic_set_target": { "type": "function", - "file": "refs.h", - "line": 554, - "lineto": 558, + "file": "git2/refs.h", + "line": 332, + "lineto": 336, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where to find the refs" + "name": "out", + "type": "git_reference **", + "comment": "Pointer to the newly created reference" }, { - "name": "glob", - "type": "const char *", - "comment": "Pattern to match (fnmatch-style) against reference name." + "name": "ref", + "type": "git_reference *", + "comment": "The reference" }, { - "name": "callback", - "type": "git_reference_foreach_name_cb", - "comment": "Function which will be called for every listed ref" + "name": "target", + "type": "const char *", + "comment": "The new target for the reference" }, { - "name": "payload", - "type": "void *", - "comment": "Additional data to pass to the callback" + "name": "log_message", + "type": "const char *", + "comment": "The one line long message to be appended to the reflog" } ], - "argline": "git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload", - "sig": "git_repository *::const char *::git_reference_foreach_name_cb::void *", + "argline": "git_reference **out, git_reference *ref, const char *target, const char *log_message", + "sig": "git_reference **::git_reference *::const char *::const char *", "return": { "type": "int", - "comment": " 0 on success, GIT_EUSER on non-zero callback, or error code" + "comment": " 0 on success, GIT_EINVALIDSPEC or an error code" }, - "description": "Perform a callback on each reference in the repository whose name\n matches the given pattern.
\n", - "comments": "This function acts like git_reference_foreach() with an additional pattern match being applied to the reference name before issuing the callback function. See that function for more information.
The pattern is matched using fnmatch or "glob" style where a '*' matches any sequence of letters, a '?' matches any letter, and square brackets can be used to define character ranges (such as "[0-9]" for digits).
\n", + "description": "Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.
\n", + "comments": "The new reference will be written to disk, overwriting the given reference.
\n\nThe target name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
\n", "group": "reference" }, - "git_reference_has_log": { + "git_reference_set_target": { "type": "function", - "file": "refs.h", - "line": 568, - "lineto": 568, + "file": "git2/refs.h", + "line": 352, + "lineto": 356, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository" + "name": "out", + "type": "git_reference **", + "comment": "Pointer to the newly created reference" }, { - "name": "refname", + "name": "ref", + "type": "git_reference *", + "comment": "The reference" + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "The new target OID for the reference" + }, + { + "name": "log_message", "type": "const char *", - "comment": "the reference's name" + "comment": "The one line long message to be appended to the reflog" } ], - "argline": "git_repository *repo, const char *refname", - "sig": "git_repository *::const char *", + "argline": "git_reference **out, git_reference *ref, const git_oid *id, const char *log_message", + "sig": "git_reference **::git_reference *::const git_oid *::const char *", "return": { "type": "int", - "comment": " 0 when no reflog can be found, 1 when it exists;\n otherwise an error code." + "comment": " 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code" }, - "description": "Check if a reflog exists for the specified reference.
\n", - "comments": "", - "group": "reference" + "description": "Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.
\n", + "comments": "The new reference will be written to disk, overwriting the given reference.
\n", + "group": "reference", + "examples": { + "merge.c": ["ex/v1.9.1/merge.html#git_reference_set_target-26"] + } }, - "git_reference_ensure_log": { + "git_reference_rename": { "type": "function", - "file": "refs.h", - "line": 580, - "lineto": 580, + "file": "git2/refs.h", + "line": 382, + "lineto": 387, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository" + "name": "new_ref", + "type": "git_reference **", + "comment": "The new reference" }, { - "name": "refname", + "name": "ref", + "type": "git_reference *", + "comment": "The reference to rename" + }, + { + "name": "new_name", "type": "const char *", - "comment": "the reference's name" + "comment": "The new name for the reference" + }, + { + "name": "force", + "type": "int", + "comment": "Overwrite an existing reference" + }, + { + "name": "log_message", + "type": "const char *", + "comment": "The one line long message to be appended to the reflog" } ], - "argline": "git_repository *repo, const char *refname", - "sig": "git_repository *::const char *", + "argline": "git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message", + "sig": "git_reference **::git_reference *::const char *::int::const char *", "return": { "type": "int", - "comment": " 0 or an error code." + "comment": " 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" }, - "description": "Ensure there is a reflog for a particular reference.
\n", - "comments": "Make sure that successive updates to the reference will append to its log.
\n", + "description": "Rename an existing reference.
\n", + "comments": "This method works for both direct and symbolic references.
\n\nThe new name will be checked for validity. See git_reference_symbolic_create() for rules about valid names.
If the force flag is not enabled, and there's already a reference with the given name, the renaming will fail.
IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.
\n", "group": "reference" }, - "git_reference_is_branch": { + "git_reference_delete": { "type": "function", - "file": "refs.h", - "line": 590, - "lineto": 590, + "file": "git2/refs.h", + "line": 402, + "lineto": 402, "args": [ { "name": "ref", - "type": "const git_reference *", - "comment": "A git reference" + "type": "git_reference *", + "comment": "The reference to remove" } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", + "argline": "git_reference *ref", + "sig": "git_reference *", "return": { "type": "int", - "comment": " 1 when the reference lives in the refs/heads\n namespace; 0 otherwise." + "comment": " 0, GIT_EMODIFIED or an error code" }, - "description": "Check if a reference is a local branch.
\n", - "comments": "", + "description": "Delete an existing reference.
\n", + "comments": "This method works for both direct and symbolic references. The reference will be immediately removed on disk but the memory will not be freed. Callers must call git_reference_free.
This function will return an error if the reference has changed from the time it was looked up.
\n", "group": "reference" }, - "git_reference_is_remote": { + "git_reference_remove": { "type": "function", - "file": "refs.h", - "line": 600, - "lineto": 600, + "file": "git2/refs.h", + "line": 414, + "lineto": 414, "args": [ { - "name": "ref", - "type": "const git_reference *", - "comment": "A git reference" - } - ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", - "return": { - "type": "int", - "comment": " 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise." - }, - "description": "Check if a reference is a remote tracking branch
\n", - "comments": "", - "group": "reference" - }, - "git_reference_is_tag": { - "type": "function", - "file": "refs.h", - "line": 610, - "lineto": 610, - "args": [ + "name": "repo", + "type": "git_repository *", + "comment": "The repository to remove the reference from" + }, { - "name": "ref", - "type": "const git_reference *", - "comment": "A git reference" + "name": "name", + "type": "const char *", + "comment": "The reference to remove" } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", - "return": { - "type": "int", - "comment": " 1 when the reference lives in the refs/tags\n namespace; 0 otherwise." - }, - "description": "Check if a reference is a tag
\n", - "comments": "", + "argline": "git_repository *repo, const char *name", + "sig": "git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Delete an existing reference by name
\n", + "comments": "This method removes the named reference from the repository without looking at its old value.
\n", "group": "reference" }, - "git_reference_is_note": { + "git_reference_list": { "type": "function", - "file": "refs.h", - "line": 620, - "lineto": 620, + "file": "git2/refs.h", + "line": 428, + "lineto": 428, "args": [ { - "name": "ref", - "type": "const git_reference *", - "comment": "A git reference" + "name": "array", + "type": "git_strarray *", + "comment": "Pointer to a git_strarray structure where\n\t\tthe reference names will be stored" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "Repository where to find the refs" } ], - "argline": "const git_reference *ref", - "sig": "const git_reference *", - "return": { - "type": "int", - "comment": " 1 when the reference lives in the refs/notes\n namespace; 0 otherwise." - }, - "description": "Check if a reference is a note
\n", - "comments": "", - "group": "reference" + "argline": "git_strarray *array, git_repository *repo", + "sig": "git_strarray *::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Fill a list with all the references that can be found in a repository.
\n", + "comments": "The string array will be filled with the names of all references; these values are owned by the user and should be free'd manually when no longer needed, using git_strarray_free().
Normalize reference name and check validity.
\n", - "comments": "This will normalize the reference name by removing any leading slash '/' characters and collapsing runs of adjacent slashes between name components into a single slash.
\n\nOnce normalized, if the reference name is valid, it will be returned in the user allocated buffer.
\n\nSee git_reference_symbolic_create() for rules about valid names.
Perform a callback on each reference in the repository.
\n", + "comments": "The callback function will be called for each reference in the repository, receiving the reference object and the payload value passed to this method. Returning a non-zero value from the callback will terminate the iteration.
Note that the callback function is responsible to call git_reference_free on each reference passed to it.
Recursively peel reference until object of the specified type is found.
\n", - "comments": "The retrieved peeled object is owned by the repository and should be closed with the git_object_free method.
If you pass GIT_OBJ_ANY as the target type, then the object will be peeled until a non-tag object is met.
Perform a callback on the fully-qualified name of each reference.
\n", + "comments": "The callback function will be called for each reference in the repository, receiving the name of the reference and the payload value passed to this method. Returning a non-zero value from the callback will terminate the iteration.
Ensure the reference name is well-formed.
\n", - "comments": "Valid reference names must follow one of two patterns:
\n\nCreate a copy of an existing reference.
\n", + "comments": "Call git_reference_free to free the data.
Get the reference's short name
\n", - "comments": "This will transform the reference name into a name "human-readable" version. If no shortname is appropriate, it will return the full name.
\n\nThe memory is owned by the reference and must not be freed.
\n", + "argline": "git_reference *ref", + "sig": "git_reference *", + "return": { "type": "void", "comment": null }, + "description": "Free the given reference.
\n", + "comments": "", "group": "reference", "examples": { - "status.c": [ - "ex/HEAD/status.html#git_reference_shorthand-4" - ] + "checkout.c": [ + "ex/v1.9.1/checkout.html#git_reference_free-18", + "ex/v1.9.1/checkout.html#git_reference_free-19", + "ex/v1.9.1/checkout.html#git_reference_free-20" + ], + "commit.c": ["ex/v1.9.1/commit.html#git_reference_free-7"], + "general.c": ["ex/v1.9.1/general.html#git_reference_free-74"], + "merge.c": [ + "ex/v1.9.1/merge.html#git_reference_free-27", + "ex/v1.9.1/merge.html#git_reference_free-28", + "ex/v1.9.1/merge.html#git_reference_free-29" + ], + "status.c": ["ex/v1.9.1/status.html#git_reference_free-1"] } }, - "git_refspec_src": { + "git_reference_cmp": { "type": "function", - "file": "refspec.h", - "line": 30, - "lineto": 30, + "file": "git2/refs.h", + "line": 516, + "lineto": 518, "args": [ { - "name": "refspec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "ref1", + "type": "const git_reference *", + "comment": "The first git_reference" + }, + { + "name": "ref2", + "type": "const git_reference *", + "comment": "The second git_reference" } ], - "argline": "const git_refspec *refspec", - "sig": "const git_refspec *", + "argline": "const git_reference *ref1, const git_reference *ref2", + "sig": "const git_reference *::const git_reference *", "return": { - "type": "const char *", - "comment": " the refspec's source specifier" + "type": "int", + "comment": " 0 if the same, else a stable but meaningless ordering." }, - "description": "Get the source specifier
\n", + "description": "Compare two references.
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_refspec_dst": { + "git_reference_iterator_new": { "type": "function", - "file": "refspec.h", - "line": 38, - "lineto": 38, + "file": "git2/refs.h", + "line": 527, + "lineto": 529, "args": [ { - "name": "refspec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "out", + "type": "git_reference_iterator **", + "comment": "pointer in which to store the iterator" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repository" } ], - "argline": "const git_refspec *refspec", - "sig": "const git_refspec *", - "return": { - "type": "const char *", - "comment": " the refspec's destination specifier" - }, - "description": "Get the destination specifier
\n", + "argline": "git_reference_iterator **out, git_repository *repo", + "sig": "git_reference_iterator **::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create an iterator for the repo's references
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_refspec_string": { + "git_reference_iterator_glob_new": { "type": "function", - "file": "refspec.h", - "line": 46, - "lineto": 46, + "file": "git2/refs.h", + "line": 540, + "lineto": 543, "args": [ { - "name": "refspec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "out", + "type": "git_reference_iterator **", + "comment": "pointer in which to store the iterator" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repository" + }, + { + "name": "glob", + "type": "const char *", + "comment": "the glob to match against the reference names" } ], - "argline": "const git_refspec *refspec", - "sig": "const git_refspec *", - "return": { - "type": "const char *", - "comment": null - }, - "description": "Get the refspec's string
\n", + "argline": "git_reference_iterator **out, git_repository *repo, const char *glob", + "sig": "git_reference_iterator **::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create an iterator for the repo's references that match the\n specified glob
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_refspec_force": { + "git_reference_next": { "type": "function", - "file": "refspec.h", - "line": 54, - "lineto": 54, + "file": "git2/refs.h", + "line": 552, + "lineto": 552, "args": [ { - "name": "refspec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "out", + "type": "git_reference **", + "comment": "pointer in which to store the reference" + }, + { + "name": "iter", + "type": "git_reference_iterator *", + "comment": "the iterator" } ], - "argline": "const git_refspec *refspec", - "sig": "const git_refspec *", + "argline": "git_reference **out, git_reference_iterator *iter", + "sig": "git_reference **::git_reference_iterator *", "return": { "type": "int", - "comment": " 1 if force update has been set, 0 otherwise" + "comment": " 0, GIT_ITEROVER if there are no more; or an error code" }, - "description": "Get the force update setting
\n", + "description": "Get the next reference
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_refspec_direction": { + "git_reference_next_name": { "type": "function", - "file": "refspec.h", - "line": 62, - "lineto": 62, + "file": "git2/refs.h", + "line": 565, + "lineto": 565, "args": [ { - "name": "spec", - "type": "const git_refspec *", - "comment": "refspec" + "name": "out", + "type": "const char **", + "comment": "pointer in which to store the string" + }, + { + "name": "iter", + "type": "git_reference_iterator *", + "comment": "the iterator" } ], - "argline": "const git_refspec *spec", - "sig": "const git_refspec *", + "argline": "const char **out, git_reference_iterator *iter", + "sig": "const char **::git_reference_iterator *", "return": { - "type": "git_direction", - "comment": " GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH" + "type": "int", + "comment": " 0, GIT_ITEROVER if there are no more; or an error code" }, - "description": "Get the refspec's direction.
\n", + "description": "Get the next reference's name
\n", + "comments": "This function is provided for convenience in case only the names are interesting as it avoids the allocation of the git_reference object which git_reference_next() needs.
Free the iterator and its associated resources
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_refspec_src_matches": { + "git_reference_foreach_glob": { "type": "function", - "file": "refspec.h", - "line": 71, - "lineto": 71, + "file": "git2/refs.h", + "line": 592, + "lineto": 596, "args": [ { - "name": "refspec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "repo", + "type": "git_repository *", + "comment": "Repository where to find the refs" }, { - "name": "refname", + "name": "glob", "type": "const char *", - "comment": "the name of the reference to check" + "comment": "Pattern to match (fnmatch-style) against reference name." + }, + { + "name": "callback", + "type": "git_reference_foreach_name_cb", + "comment": "Function which will be called for every listed ref" + }, + { + "name": "payload", + "type": "void *", + "comment": "Additional data to pass to the callback" } ], - "argline": "const git_refspec *refspec, const char *refname", - "sig": "const git_refspec *::const char *", + "argline": "git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload", + "sig": "git_repository *::const char *::git_reference_foreach_name_cb::void *", "return": { "type": "int", - "comment": " 1 if the refspec matches, 0 otherwise" + "comment": " 0 on success, GIT_EUSER on non-zero callback, or error code" }, - "description": "Check if a refspec's source descriptor matches a reference
\n", - "comments": "", - "group": "refspec" + "description": "Perform a callback on each reference in the repository whose name\n matches the given pattern.
\n", + "comments": "This function acts like git_reference_foreach() with an additional pattern match being applied to the reference name before issuing the callback function. See that function for more information.
The pattern is matched using fnmatch or "glob" style where a '*' matches any sequence of letters, a '?' matches any letter, and square brackets can be used to define character ranges (such as "[0-9]" for digits).
\n", + "group": "reference" }, - "git_refspec_dst_matches": { + "git_reference_has_log": { "type": "function", - "file": "refspec.h", - "line": 80, - "lineto": 80, + "file": "git2/refs.h", + "line": 606, + "lineto": 606, "args": [ { - "name": "refspec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "repo", + "type": "git_repository *", + "comment": "the repository" }, { "name": "refname", "type": "const char *", - "comment": "the name of the reference to check" + "comment": "the reference's name" } ], - "argline": "const git_refspec *refspec, const char *refname", - "sig": "const git_refspec *::const char *", + "argline": "git_repository *repo, const char *refname", + "sig": "git_repository *::const char *", "return": { "type": "int", - "comment": " 1 if the refspec matches, 0 otherwise" + "comment": " 0 when no reflog can be found, 1 when it exists;\n otherwise an error code." }, - "description": "Check if a refspec's destination descriptor matches a reference
\n", + "description": "Check if a reflog exists for the specified reference.
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_refspec_transform": { + "git_reference_ensure_log": { "type": "function", - "file": "refspec.h", - "line": 90, - "lineto": 90, + "file": "git2/refs.h", + "line": 618, + "lineto": 618, "args": [ { - "name": "out", - "type": "git_buf *", - "comment": "where to store the target name" - }, - { - "name": "spec", - "type": "const git_refspec *", - "comment": "the refspec" + "name": "repo", + "type": "git_repository *", + "comment": "the repository" }, { - "name": "name", + "name": "refname", "type": "const char *", - "comment": "the name of the reference to transform" + "comment": "the reference's name" } ], - "argline": "git_buf *out, const git_refspec *spec, const char *name", - "sig": "git_buf *::const git_refspec *::const char *", - "return": { - "type": "int", - "comment": " 0, GIT_EBUFS or another error" - }, - "description": "Transform a reference to its target following the refspec's rules
\n", - "comments": "", - "group": "refspec" + "argline": "git_repository *repo, const char *refname", + "sig": "git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Ensure there is a reflog for a particular reference.
\n", + "comments": "Make sure that successive updates to the reference will append to its log.
\n", + "group": "reference" }, - "git_refspec_rtransform": { + "git_reference_is_branch": { "type": "function", - "file": "refspec.h", - "line": 100, - "lineto": 100, + "file": "git2/refs.h", + "line": 628, + "lineto": 628, "args": [ { - "name": "out", - "type": "git_buf *", - "comment": "where to store the source reference name" - }, - { - "name": "spec", - "type": "const git_refspec *", - "comment": "the refspec" - }, - { - "name": "name", - "type": "const char *", - "comment": "the name of the reference to transform" + "name": "ref", + "type": "const git_reference *", + "comment": "A git reference" } ], - "argline": "git_buf *out, const git_refspec *spec, const char *name", - "sig": "git_buf *::const git_refspec *::const char *", + "argline": "const git_reference *ref", + "sig": "const git_reference *", "return": { "type": "int", - "comment": " 0, GIT_EBUFS or another error" + "comment": " 1 when the reference lives in the refs/heads\n namespace; 0 otherwise." }, - "description": "Transform a target reference to its source reference following the refspec's rules
\n", + "description": "Check if a reference is a local branch.
\n", "comments": "", - "group": "refspec" + "group": "reference" }, - "git_remote_create": { + "git_reference_is_remote": { "type": "function", - "file": "remote.h", - "line": 40, - "lineto": 44, + "file": "git2/refs.h", + "line": 638, + "lineto": 638, "args": [ { - "name": "out", - "type": "git_remote **", - "comment": "the resulting remote" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to create the remote" - }, - { - "name": "name", - "type": "const char *", - "comment": "the remote's name" - }, - { - "name": "url", - "type": "const char *", - "comment": "the remote's url" + "name": "ref", + "type": "const git_reference *", + "comment": "A git reference" } ], - "argline": "git_remote **out, git_repository *repo, const char *name, const char *url", - "sig": "git_remote **::git_repository *::const char *::const char *", + "argline": "const git_reference *ref", + "sig": "const git_reference *", "return": { "type": "int", - "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" + "comment": " 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise." }, - "description": "Add a remote with the default fetch refspec to the repository's configuration.
\n", + "description": "Check if a reference is a remote tracking branch
\n", "comments": "", - "group": "remote", + "group": "reference", "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_remote_create-4" - ] + "checkout.c": ["ex/v1.9.1/checkout.html#git_reference_is_remote-21"] } }, - "git_remote_create_with_fetchspec": { + "git_reference_is_tag": { "type": "function", - "file": "remote.h", - "line": 57, - "lineto": 62, + "file": "git2/refs.h", + "line": 648, + "lineto": 648, "args": [ { - "name": "out", - "type": "git_remote **", - "comment": "the resulting remote" - }, + "name": "ref", + "type": "const git_reference *", + "comment": "A git reference" + } + ], + "argline": "const git_reference *ref", + "sig": "const git_reference *", + "return": { + "type": "int", + "comment": " 1 when the reference lives in the refs/tags\n namespace; 0 otherwise." + }, + "description": "Check if a reference is a tag
\n", + "comments": "", + "group": "reference" + }, + "git_reference_is_note": { + "type": "function", + "file": "git2/refs.h", + "line": 658, + "lineto": 658, + "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to create the remote" + "name": "ref", + "type": "const git_reference *", + "comment": "A git reference" + } + ], + "argline": "const git_reference *ref", + "sig": "const git_reference *", + "return": { + "type": "int", + "comment": " 1 when the reference lives in the refs/notes\n namespace; 0 otherwise." + }, + "description": "Check if a reference is a note
\n", + "comments": "", + "group": "reference" + }, + "git_reference_normalize_name": { + "type": "function", + "file": "git2/refs.h", + "line": 714, + "lineto": 718, + "args": [ + { + "name": "buffer_out", + "type": "char *", + "comment": "User allocated buffer to store normalized name" }, { - "name": "name", - "type": "const char *", - "comment": "the remote's name" + "name": "buffer_size", + "type": "size_t", + "comment": "Size of buffer_out" }, { - "name": "url", + "name": "name", "type": "const char *", - "comment": "the remote's url" + "comment": "Reference name to be checked." }, { - "name": "fetch", - "type": "const char *", - "comment": "the remote fetch value" + "name": "flags", + "type": "unsigned int", + "comment": "Flags to constrain name validation rules - see the\n GIT_REFERENCE_FORMAT constants above." } ], - "argline": "git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch", - "sig": "git_remote **::git_repository *::const char *::const char *::const char *", + "argline": "char *buffer_out, size_t buffer_size, const char *name, unsigned int flags", + "sig": "char *::size_t::const char *::unsigned int", "return": { "type": "int", - "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" + "comment": " 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code." }, - "description": "Add a remote with the provided fetch refspec (or default if NULL) to the repository's\n configuration.
\n", - "comments": "", - "group": "remote" + "description": "Normalize reference name and check validity.
\n", + "comments": "This will normalize the reference name by removing any leading slash '/' characters and collapsing runs of adjacent slashes between name components into a single slash.
\n\nOnce normalized, if the reference name is valid, it will be returned in the user allocated buffer.
\n\nSee git_reference_symbolic_create() for rules about valid names.
Create an anonymous remote
\n", - "comments": "Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote's name.
\n", - "group": "remote", - "examples": { - "network/fetch.c": [ - "ex/HEAD/network/fetch.html#git_remote_create_anonymous-4" - ], - "network/ls-remote.c": [ - "ex/HEAD/network/ls-remote.html#git_remote_create_anonymous-2" - ] - } + "description": "Recursively peel reference until object of the specified type is found.
\n", + "comments": "The retrieved peeled object is owned by the repository and should be closed with the git_object_free method.
If you pass GIT_OBJECT_ANY as the target type, then the object will be peeled until a non-tag object is met.
Ensure the reference name is well-formed.
\n", + "comments": "Valid reference names must follow one of two patterns:
\n\nGet the information for a particular remote
\n", - "comments": "The name will be checked for validity. See git_tag_create() for rules about valid names.
Get the reference's short name
\n", + "comments": "This will transform the reference name into a name "human-readable" version. If no shortname is appropriate, it will return the full name.
\n\nThe memory is owned by the reference and must not be freed.
\n", + "group": "reference", "examples": { - "network/fetch.c": [ - "ex/HEAD/network/fetch.html#git_remote_lookup-5" - ], - "network/ls-remote.c": [ - "ex/HEAD/network/ls-remote.html#git_remote_lookup-3" - ], - "remote.c": [ - "ex/HEAD/remote.html#git_remote_lookup-5" - ] + "status.c": ["ex/v1.9.1/status.html#git_reference_shorthand-2"] } }, - "git_remote_dup": { + "git_refspec_parse": { "type": "function", - "file": "remote.h", - "line": 103, - "lineto": 103, + "file": "git2/refspec.h", + "line": 32, + "lineto": 32, "args": [ { - "name": "dest", - "type": "git_remote **", - "comment": "pointer where to store the copy" + "name": "refspec", + "type": "git_refspec **", + "comment": "a pointer to hold the refspec handle" }, { - "name": "source", - "type": "git_remote *", - "comment": "object to copy" + "name": "input", + "type": "const char *", + "comment": "the refspec string" + }, + { + "name": "is_fetch", + "type": "int", + "comment": "is this a refspec for a fetch" } ], - "argline": "git_remote **dest, git_remote *source", - "sig": "git_remote **::git_remote *", + "argline": "git_refspec **refspec, const char *input, int is_fetch", + "sig": "git_refspec **::const char *::int", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the refspec string could be parsed, -1 otherwise" }, - "description": "Create a copy of an existing remote. All internal strings are also\n duplicated. Callbacks are not duplicated.
\n", - "comments": "Call git_remote_free to free the data.
Parse a given refspec string
\n", + "comments": "", + "group": "refspec" }, - "git_remote_owner": { + "git_refspec_free": { "type": "function", - "file": "remote.h", - "line": 111, - "lineto": 111, + "file": "git2/refspec.h", + "line": 39, + "lineto": 39, "args": [ { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote" + "name": "refspec", + "type": "git_refspec *", + "comment": "the refspec object" } ], - "argline": "const git_remote *remote", - "sig": "const git_remote *", - "return": { - "type": "git_repository *", - "comment": " a pointer to the repository" - }, - "description": "Get the remote's repository
\n", + "argline": "git_refspec *refspec", + "sig": "git_refspec *", + "return": { "type": "void", "comment": null }, + "description": "Free a refspec object which has been created by git_refspec_parse
\n", "comments": "", - "group": "remote" + "group": "refspec" }, - "git_remote_name": { + "git_refspec_src": { "type": "function", - "file": "remote.h", - "line": 119, - "lineto": 119, + "file": "git2/refspec.h", + "line": 47, + "lineto": 47, "args": [ { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" } ], - "argline": "const git_remote *remote", - "sig": "const git_remote *", + "argline": "const git_refspec *refspec", + "sig": "const git_refspec *", "return": { "type": "const char *", - "comment": " a pointer to the name or NULL for in-memory remotes" + "comment": " the refspec's source specifier" }, - "description": "Get the remote's name
\n", + "description": "Get the source specifier
\n", "comments": "", - "group": "remote" + "group": "refspec" }, - "git_remote_url": { + "git_refspec_dst": { "type": "function", - "file": "remote.h", - "line": 130, - "lineto": 130, + "file": "git2/refspec.h", + "line": 55, + "lineto": 55, "args": [ { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" } ], - "argline": "const git_remote *remote", - "sig": "const git_remote *", + "argline": "const git_refspec *refspec", + "sig": "const git_refspec *", "return": { "type": "const char *", - "comment": " a pointer to the url" + "comment": " the refspec's destination specifier" }, - "description": "Get the remote's url
\n", - "comments": "If url.*.insteadOf has been configured for this URL, it will return the modified URL.
\n", - "group": "remote", - "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_remote_url-6" - ] - } + "description": "Get the destination specifier
\n", + "comments": "", + "group": "refspec" }, - "git_remote_pushurl": { + "git_refspec_string": { "type": "function", - "file": "remote.h", - "line": 141, - "lineto": 141, + "file": "git2/refspec.h", + "line": 63, + "lineto": 63, "args": [ { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" } ], - "argline": "const git_remote *remote", - "sig": "const git_remote *", + "argline": "const git_refspec *refspec", + "sig": "const git_refspec *", "return": { "type": "const char *", - "comment": " a pointer to the url or NULL if no special url for pushing is set" + "comment": " the refspec's original string" }, - "description": "Get the remote's url for pushing
\n", - "comments": "If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.
\n", - "group": "remote", - "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_remote_pushurl-7" - ] - } + "description": "Get the refspec's string
\n", + "comments": "", + "group": "refspec" }, - "git_remote_set_url": { + "git_refspec_force": { "type": "function", - "file": "remote.h", - "line": 154, - "lineto": 154, + "file": "git2/refspec.h", + "line": 71, + "lineto": 71, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to perform the change" - }, - { - "name": "remote", - "type": "const char *", - "comment": "the remote's name" - }, - { - "name": "url", - "type": "const char *", - "comment": "the url to set" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" } ], - "argline": "git_repository *repo, const char *remote, const char *url", - "sig": "git_repository *::const char *::const char *", + "argline": "const git_refspec *refspec", + "sig": "const git_refspec *", "return": { "type": "int", - "comment": " 0 or an error value" + "comment": " 1 if force update has been set, 0 otherwise" }, - "description": "Set the remote's url in the configuration
\n", - "comments": "Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.
\n", - "group": "remote", - "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_remote_set_url-8" - ] - } + "description": "Get the force update setting
\n", + "comments": "", + "group": "refspec" }, - "git_remote_set_pushurl": { + "git_refspec_direction": { "type": "function", - "file": "remote.h", - "line": 167, - "lineto": 167, + "file": "git2/refspec.h", + "line": 79, + "lineto": 79, "args": [ - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to perform the change" - }, - { - "name": "remote", - "type": "const char *", - "comment": "the remote's name" - }, - { - "name": "url", - "type": "const char *", - "comment": "the url to set" - } + { "name": "spec", "type": "const git_refspec *", "comment": "refspec" } ], - "argline": "git_repository *repo, const char *remote, const char *url", - "sig": "git_repository *::const char *::const char *", + "argline": "const git_refspec *spec", + "sig": "const git_refspec *", "return": { - "type": "int", - "comment": null + "type": "git_direction", + "comment": " GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH" }, - "description": "Set the remote's url for pushing in the configuration.
\n", - "comments": "Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.
\n", - "group": "remote", - "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_remote_set_pushurl-9" - ] - } + "description": "Get the refspec's direction.
\n", + "comments": "", + "group": "refspec" }, - "git_remote_add_fetch": { + "git_refspec_src_matches_negative": { "type": "function", - "file": "remote.h", - "line": 180, - "lineto": 180, + "file": "git2/refspec.h", + "line": 88, + "lineto": 88, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to change the configuration" - }, - { - "name": "remote", - "type": "const char *", - "comment": "the name of the remote to change" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" }, { - "name": "refspec", + "name": "refname", "type": "const char *", - "comment": "the new fetch refspec" + "comment": "the name of the reference to check" } ], - "argline": "git_repository *repo, const char *remote, const char *refspec", - "sig": "git_repository *::const char *::const char *", + "argline": "const git_refspec *refspec, const char *refname", + "sig": "const git_refspec *::const char *", "return": { "type": "int", - "comment": " 0, GIT_EINVALIDSPEC if refspec is invalid or an error value" + "comment": " 1 if the refspec matches, 0 otherwise" }, - "description": "Add a fetch refspec to the remote's configuration
\n", - "comments": "Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.
\n", - "group": "remote" + "description": "Check if a refspec's source descriptor matches a negative reference
\n", + "comments": "", + "group": "refspec" }, - "git_remote_get_fetch_refspecs": { + "git_refspec_src_matches": { "type": "function", - "file": "remote.h", - "line": 191, - "lineto": 191, + "file": "git2/refspec.h", + "line": 97, + "lineto": 97, "args": [ { - "name": "array", - "type": "git_strarray *", - "comment": "pointer to the array in which to store the strings" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" }, { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote to query" + "name": "refname", + "type": "const char *", + "comment": "the name of the reference to check" } ], - "argline": "git_strarray *array, const git_remote *remote", - "sig": "git_strarray *::const git_remote *", + "argline": "const git_refspec *refspec, const char *refname", + "sig": "const git_refspec *::const char *", "return": { "type": "int", - "comment": null + "comment": " 1 if the refspec matches, 0 otherwise" }, - "description": "Get the remote's list of fetch refspecs
\n", - "comments": "The memory is owned by the user and should be freed with git_strarray_free.
Check if a refspec's source descriptor matches a reference
\n", + "comments": "", + "group": "refspec" }, - "git_remote_add_push": { + "git_refspec_dst_matches": { "type": "function", - "file": "remote.h", - "line": 204, - "lineto": 204, + "file": "git2/refspec.h", + "line": 106, + "lineto": 106, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to change the configuration" - }, - { - "name": "remote", - "type": "const char *", - "comment": "the name of the remote to change" + "name": "refspec", + "type": "const git_refspec *", + "comment": "the refspec" }, { - "name": "refspec", + "name": "refname", "type": "const char *", - "comment": "the new push refspec" + "comment": "the name of the reference to check" } ], - "argline": "git_repository *repo, const char *remote, const char *refspec", - "sig": "git_repository *::const char *::const char *", + "argline": "const git_refspec *refspec, const char *refname", + "sig": "const git_refspec *::const char *", "return": { "type": "int", - "comment": " 0, GIT_EINVALIDSPEC if refspec is invalid or an error value" + "comment": " 1 if the refspec matches, 0 otherwise" }, - "description": "Add a push refspec to the remote's configuration
\n", - "comments": "Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.
\n", - "group": "remote" + "description": "Check if a refspec's destination descriptor matches a reference
\n", + "comments": "", + "group": "refspec" }, - "git_remote_get_push_refspecs": { + "git_refspec_transform": { "type": "function", - "file": "remote.h", - "line": 215, - "lineto": 215, + "file": "git2/refspec.h", + "line": 116, + "lineto": 116, "args": [ { - "name": "array", - "type": "git_strarray *", - "comment": "pointer to the array in which to store the strings" + "name": "out", + "type": "git_buf *", + "comment": "where to store the target name" }, { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote to query" + "name": "spec", + "type": "const git_refspec *", + "comment": "the refspec" + }, + { + "name": "name", + "type": "const char *", + "comment": "the name of the reference to transform" } ], - "argline": "git_strarray *array, const git_remote *remote", - "sig": "git_strarray *::const git_remote *", - "return": { - "type": "int", - "comment": null - }, - "description": "Get the remote's list of push refspecs
\n", - "comments": "The memory is owned by the user and should be freed with git_strarray_free.
Transform a reference to its target following the refspec's rules
\n", + "comments": "", + "group": "refspec" }, - "git_remote_refspec_count": { + "git_refspec_rtransform": { "type": "function", - "file": "remote.h", - "line": 223, - "lineto": 223, + "file": "git2/refspec.h", + "line": 126, + "lineto": 126, "args": [ { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote" + "name": "out", + "type": "git_buf *", + "comment": "where to store the source reference name" + }, + { + "name": "spec", + "type": "const git_refspec *", + "comment": "the refspec" + }, + { + "name": "name", + "type": "const char *", + "comment": "the name of the reference to transform" } ], - "argline": "const git_remote *remote", - "sig": "const git_remote *", - "return": { - "type": "size_t", - "comment": " the amount of refspecs configured in this remote" - }, - "description": "Get the number of refspecs for a remote
\n", + "argline": "git_buf *out, const git_refspec *spec, const char *name", + "sig": "git_buf *::const git_refspec *::const char *", + "return": { "type": "int", "comment": " 0, GIT_EBUFS or another error" }, + "description": "Transform a target reference to its source reference following the refspec's rules
\n", "comments": "", - "group": "remote" + "group": "refspec", + "examples": { + "fetch.c": ["ex/v1.9.1/fetch.html#git_refspec_rtransform-4"] + } }, - "git_remote_get_refspec": { + "git_remote_create": { "type": "function", - "file": "remote.h", - "line": 232, - "lineto": 232, + "file": "git2/remote.h", + "line": 38, + "lineto": 42, "args": [ { - "name": "remote", - "type": "const git_remote *", - "comment": "the remote to query" + "name": "out", + "type": "git_remote **", + "comment": "the resulting remote" }, { - "name": "n", - "type": "size_t", - "comment": "the refspec to get" - } + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to create the remote" + }, + { + "name": "name", + "type": "const char *", + "comment": "the remote's name" + }, + { "name": "url", "type": "const char *", "comment": "the remote's url" } ], - "argline": "const git_remote *remote, size_t n", - "sig": "const git_remote *::size_t", + "argline": "git_remote **out, git_repository *repo, const char *name, const char *url", + "sig": "git_remote **::git_repository *::const char *::const char *", "return": { - "type": "const git_refspec *", - "comment": " the nth refspec" + "type": "int", + "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" }, - "description": "Get a refspec from the remote
\n", + "description": "Add a remote with the default fetch refspec to the repository's configuration.
\n", "comments": "", + "group": "remote", + "examples": { "remote.c": ["ex/v1.9.1/remote.html#git_remote_create-1"] } + }, + "git_remote_create_options_init": { + "type": "function", + "file": "git2/remote.h", + "line": 135, + "lineto": 137, + "args": [ + { + "name": "opts", + "type": "git_remote_create_options *", + "comment": "The `git_remote_create_options` struct to initialize." + }, + { + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_REMOTE_CREATE_OPTIONS_VERSION`." + } + ], + "argline": "git_remote_create_options *opts, unsigned int version", + "sig": "git_remote_create_options *::unsigned int", + "return": { + "type": "int", + "comment": " Zero on success; -1 on failure." + }, + "description": "Initialize git_remote_create_options structure
\n", + "comments": "Initializes a git_remote_create_options with default values. Equivalent to creating an instance with GIT_REMOTE_CREATE_OPTIONS_INIT.
Create a remote, with options.
\n", + "comments": "This function allows more fine-grained control over the remote creation.
\n\nPassing NULL as the opts argument will result in a detached remote.
\n", + "group": "remote" + }, + "git_remote_create_with_fetchspec": { + "type": "function", + "file": "git2/remote.h", + "line": 167, + "lineto": 172, + "args": [ + { + "name": "out", + "type": "git_remote **", + "comment": "the resulting remote" }, { - "name": "proxy_opts", - "type": "const git_proxy_options *", - "comment": "proxy settings" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to create the remote" }, { - "name": "custom_headers", - "type": "const git_strarray *", - "comment": "extra HTTP headers to use in this connection" + "name": "name", + "type": "const char *", + "comment": "the remote's name" + }, + { + "name": "url", + "type": "const char *", + "comment": "the remote's url" + }, + { + "name": "fetch", + "type": "const char *", + "comment": "the remote fetch value" } ], - "argline": "git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers", - "sig": "git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *", + "argline": "git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch", + "sig": "git_remote **::git_repository *::const char *::const char *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" }, - "description": "Open a connection to a remote
\n", - "comments": "The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.
\n", + "description": "Add a remote with the provided fetch refspec (or default if NULL) to the repository's\n configuration.
\n", + "comments": "", + "group": "remote" + }, + "git_remote_create_anonymous": { + "type": "function", + "file": "git2/remote.h", + "line": 185, + "lineto": 188, + "args": [ + { + "name": "out", + "type": "git_remote **", + "comment": "pointer to the new remote objects" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the associated repository" + }, + { + "name": "url", + "type": "const char *", + "comment": "the remote repository's URL" + } + ], + "argline": "git_remote **out, git_repository *repo, const char *url", + "sig": "git_remote **::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create an anonymous remote
\n", + "comments": "Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote's name.
\n", "group": "remote", "examples": { - "network/ls-remote.c": [ - "ex/HEAD/network/ls-remote.html#git_remote_connect-4" + "fetch.c": ["ex/v1.9.1/fetch.html#git_remote_create_anonymous-5"], + "ls-remote.c": [ + "ex/v1.9.1/ls-remote.html#git_remote_create_anonymous-2" ] } }, - "git_remote_ls": { + "git_remote_create_detached": { "type": "function", - "file": "remote.h", - "line": 271, - "lineto": 271, + "file": "git2/remote.h", + "line": 204, + "lineto": 206, "args": [ { "name": "out", - "type": "const git_remote_head ***", - "comment": "pointer to the array" + "type": "git_remote **", + "comment": "pointer to the new remote objects" }, { - "name": "size", - "type": "size_t *", - "comment": "the number of remote heads" + "name": "url", + "type": "const char *", + "comment": "the remote repository's URL" + } + ], + "argline": "git_remote **out, const char *url", + "sig": "git_remote **::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a remote without a connected local repo
\n", + "comments": "Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote's name.
\n\nContrasted with git_remote_create_anonymous, a detached remote will not consider any repo configuration values (such as insteadof url substitutions).
\n", + "group": "remote" + }, + "git_remote_lookup": { + "type": "function", + "file": "git2/remote.h", + "line": 219, + "lineto": 219, + "args": [ + { + "name": "out", + "type": "git_remote **", + "comment": "pointer to the new remote object" }, { - "name": "remote", - "type": "git_remote *", - "comment": "the remote" + "name": "repo", + "type": "git_repository *", + "comment": "the associated repository" + }, + { + "name": "name", + "type": "const char *", + "comment": "the remote's name" } ], - "argline": "const git_remote_head ***out, size_t *size, git_remote *remote", - "sig": "const git_remote_head ***::size_t *::git_remote *", + "argline": "git_remote **out, git_repository *repo, const char *name", + "sig": "git_remote **::git_repository *::const char *", "return": { "type": "int", - "comment": " 0 on success, or an error code" + "comment": " 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code" }, - "description": "Get the remote repository's reference advertisement list
\n", - "comments": "Get the list of references with which the server responds to a new connection.
\n\nThe remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.
\n\nThe memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.
\n", + "description": "Get the information for a particular remote
\n", + "comments": "The name will be checked for validity. See git_tag_create() for rules about valid names.
Check whether the remote is connected
\n", - "comments": "Check whether the remote's underlying transport is connected to the remote host.
\n", + "argline": "git_remote **dest, git_remote *source", + "sig": "git_remote **::git_remote *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a copy of an existing remote. All internal strings are also\n duplicated. Callbacks are not duplicated.
\n", + "comments": "Call git_remote_free to free the data.
Cancel the operation
\n", - "comments": "At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.
\n", + "description": "Get the remote's repository
\n", + "comments": "", "group": "remote" }, - "git_remote_disconnect": { + "git_remote_name": { "type": "function", - "file": "remote.h", - "line": 301, - "lineto": 301, + "file": "git2/remote.h", + "line": 247, + "lineto": 247, "args": [ { "name": "remote", - "type": "git_remote *", - "comment": "the remote to disconnect from" + "type": "const git_remote *", + "comment": "the remote" } ], - "argline": "git_remote *remote", - "sig": "git_remote *", + "argline": "const git_remote *remote", + "sig": "const git_remote *", "return": { - "type": "void", - "comment": null + "type": "const char *", + "comment": " a pointer to the name or NULL for in-memory remotes" }, - "description": "Disconnect from the remote
\n", - "comments": "Close the connection to the remote.
\n", + "description": "Get the remote's name
\n", + "comments": "", "group": "remote" }, - "git_remote_free": { + "git_remote_url": { "type": "function", - "file": "remote.h", - "line": 311, - "lineto": 311, + "file": "git2/remote.h", + "line": 259, + "lineto": 259, "args": [ { "name": "remote", - "type": "git_remote *", - "comment": "the remote to free" + "type": "const git_remote *", + "comment": "the remote" } ], - "argline": "git_remote *remote", - "sig": "git_remote *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free the memory associated with a remote
\n", - "comments": "This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).
\n", + "argline": "const git_remote *remote", + "sig": "const git_remote *", + "return": { "type": "const char *", "comment": " a pointer to the url" }, + "description": "Get the remote's url
\n", + "comments": "If url.*.insteadOf has been configured for this URL, it will return the modified URL. This function does not consider if a push url has been configured for this remote (use git_remote_pushurl if needed).
Get a list of the configured remotes for a repo
\n", - "comments": "The string array must be freed by the user.
\n", + "description": "Get the remote's url for pushing.
\n", + "comments": "If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL. If git_remote_set_instance_pushurl has been called for this remote, then that URL will be returned.
Initializes a git_remote_callbacks with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.
Set the remote's url in the configuration
\n", + "comments": "Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.
\n", + "group": "remote", + "examples": { "remote.c": ["ex/v1.9.1/remote.html#git_remote_set_url-5"] } }, - "git_fetch_init_options": { + "git_remote_set_pushurl": { "type": "function", - "file": "remote.h", - "line": 577, - "lineto": 579, + "file": "git2/remote.h", + "line": 298, + "lineto": 298, "args": [ { - "name": "opts", - "type": "git_fetch_options *", - "comment": "the `git_push_options` instance to initialize." + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to perform the change" }, { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct; you should pass\n `GIT_FETCH_OPTIONS_VERSION` here." - } + "name": "remote", + "type": "const char *", + "comment": "the remote's name" + }, + { "name": "url", "type": "const char *", "comment": "the url to set" } ], - "argline": "git_fetch_options *opts, unsigned int version", - "sig": "git_fetch_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_fetch_options with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.
Set the remote's url for pushing in the configuration.
\n", + "comments": "Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.
\n", + "group": "remote", + "examples": { + "remote.c": ["ex/v1.9.1/remote.html#git_remote_set_pushurl-6"] + } }, - "git_push_init_options": { + "git_remote_set_instance_url": { "type": "function", - "file": "remote.h", - "line": 626, - "lineto": 628, + "file": "git2/remote.h", + "line": 308, + "lineto": 308, "args": [ { - "name": "opts", - "type": "git_push_options *", - "comment": "the `git_push_options` instance to initialize." + "name": "remote", + "type": "git_remote *", + "comment": "the remote's name" }, - { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct; you should pass\n `GIT_PUSH_OPTIONS_VERSION` here." - } + { "name": "url", "type": "const char *", "comment": "the url to set" } ], - "argline": "git_push_options *opts, unsigned int version", - "sig": "git_push_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_push_options with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.
Set the url for this particular url instance. The URL in the\n configuration will be ignored, and will not be changed.
\n", "comments": "", - "group": "push" + "group": "remote" }, - "git_remote_download": { + "git_remote_set_instance_pushurl": { "type": "function", - "file": "remote.h", - "line": 646, - "lineto": 646, + "file": "git2/remote.h", + "line": 318, + "lineto": 318, "args": [ { "name": "remote", "type": "git_remote *", - "comment": "the remote" - }, - { - "name": "refspecs", - "type": "const git_strarray *", - "comment": "the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs" + "comment": "the remote's name" }, - { - "name": "opts", - "type": "const git_fetch_options *", - "comment": "the options to use for this fetch" - } + { "name": "url", "type": "const char *", "comment": "the url to set" } ], - "argline": "git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts", - "sig": "git_remote *::const git_strarray *::const git_fetch_options *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Download and index the packfile
\n", - "comments": "Connect to the remote if it hasn't been done yet, negotiate with the remote git which objects are missing, download and index the packfile.
\n\nThe .idx file will be created and both it and the packfile with be renamed to their final name.
\n", + "argline": "git_remote *remote, const char *url", + "sig": "git_remote *::const char *", + "return": { "type": "int", "comment": " 0 or an error value" }, + "description": "Set the push url for this particular url instance. The URL in the\n configuration will be ignored, and will not be changed.
\n", + "comments": "", "group": "remote" }, - "git_remote_upload": { + "git_remote_add_fetch": { "type": "function", - "file": "remote.h", - "line": 660, - "lineto": 660, + "file": "git2/remote.h", + "line": 331, + "lineto": 331, "args": [ { - "name": "remote", - "type": "git_remote *", - "comment": "the remote" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to change the configuration" }, { - "name": "refspecs", - "type": "const git_strarray *", - "comment": "the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs" + "name": "remote", + "type": "const char *", + "comment": "the name of the remote to change" }, { - "name": "opts", - "type": "const git_push_options *", - "comment": "the options to use for this push" + "name": "refspec", + "type": "const char *", + "comment": "the new fetch refspec" } ], - "argline": "git_remote *remote, const git_strarray *refspecs, const git_push_options *opts", - "sig": "git_remote *::const git_strarray *::const git_push_options *", + "argline": "git_repository *repo, const char *remote, const char *refspec", + "sig": "git_repository *::const char *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0, GIT_EINVALIDSPEC if refspec is invalid or an error value" }, - "description": "Create a packfile and send it to the server
\n", - "comments": "Connect to the remote if it hasn't been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.
\n", + "description": "Add a fetch refspec to the remote's configuration
\n", + "comments": "Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.
\n", "group": "remote" }, - "git_remote_update_tips": { + "git_remote_get_fetch_refspecs": { "type": "function", - "file": "remote.h", - "line": 676, - "lineto": 681, + "file": "git2/remote.h", + "line": 343, + "lineto": 343, "args": [ { - "name": "remote", - "type": "git_remote *", - "comment": "the remote to update" - }, - { - "name": "callbacks", - "type": "const git_remote_callbacks *", - "comment": "pointer to the callback structure to use" - }, - { - "name": "update_fetchhead", - "type": "int", - "comment": "whether to write to FETCH_HEAD. Pass 1 to behave like git." - }, - { - "name": "download_tags", - "type": "git_remote_autotag_option_t", - "comment": "what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`." + "name": "array", + "type": "git_strarray *", + "comment": "pointer to the array in which to store the strings" }, { - "name": "reflog_message", - "type": "const char *", - "comment": "The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \nUpdate the tips to the new state
\n", - "comments": "", + "argline": "git_strarray *array, const git_remote *remote", + "sig": "git_strarray *::const git_remote *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Get the remote's list of fetch refspecs
\n", + "comments": "The memory is owned by the user and should be freed with git_strarray_free.
Download new data and update tips
\n", - "comments": "Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.
\n", - "group": "remote", - "examples": { - "network/fetch.c": [ - "ex/HEAD/network/fetch.html#git_remote_fetch-8" - ] - } + "description": "Add a push refspec to the remote's configuration
\n", + "comments": "Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.
\n", + "group": "remote" }, - "git_remote_prune": { + "git_remote_get_push_refspecs": { "type": "function", - "file": "remote.h", - "line": 710, - "lineto": 710, + "file": "git2/remote.h", + "line": 368, + "lineto": 368, "args": [ { - "name": "remote", - "type": "git_remote *", - "comment": "the remote to prune" + "name": "array", + "type": "git_strarray *", + "comment": "pointer to the array in which to store the strings" }, { - "name": "callbacks", - "type": "const git_remote_callbacks *", - "comment": "callbacks to use for this prune" + "name": "remote", + "type": "const git_remote *", + "comment": "the remote to query" } ], - "argline": "git_remote *remote, const git_remote_callbacks *callbacks", - "sig": "git_remote *::const git_remote_callbacks *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Prune tracking refs that are no longer present on remote
\n", - "comments": "", + "argline": "git_strarray *array, const git_remote *remote", + "sig": "git_strarray *::const git_remote *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Get the remote's list of push refspecs
\n", + "comments": "The memory is owned by the user and should be freed with git_strarray_free.
Perform a push
\n", - "comments": "Peform all the steps from a push.
\n", + "description": "Get the number of refspecs for a remote
\n", + "comments": "", "group": "remote" }, - "git_remote_stats": { + "git_remote_get_refspec": { "type": "function", - "file": "remote.h", - "line": 729, - "lineto": 729, + "file": "git2/remote.h", + "line": 385, + "lineto": 385, "args": [ { "name": "remote", - "type": "git_remote *", - "comment": null - } + "type": "const git_remote *", + "comment": "the remote to query" + }, + { "name": "n", "type": "size_t", "comment": "the refspec to get" } ], - "argline": "git_remote *remote", - "sig": "git_remote *", + "argline": "const git_remote *remote, size_t n", + "sig": "const git_remote *::size_t", "return": { - "type": "const git_transfer_progress *", - "comment": null + "type": "const git_refspec *", + "comment": " the nth refspec" }, - "description": "Get the statistics structure that is filled in by the fetch operation.
\n", + "description": "Get a refspec from the remote
\n", "comments": "", + "group": "remote" + }, + "git_remote_ls": { + "type": "function", + "file": "git2/remote.h", + "line": 407, + "lineto": 407, + "args": [ + { + "name": "out", + "type": "const git_remote_head ***", + "comment": "pointer to the array" + }, + { + "name": "size", + "type": "size_t *", + "comment": "the number of remote heads" + }, + { "name": "remote", "type": "git_remote *", "comment": "the remote" } + ], + "argline": "const git_remote_head ***out, size_t *size, git_remote *remote", + "sig": "const git_remote_head ***::size_t *::git_remote *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Get the remote repository's reference advertisement list
\n", + "comments": "Get the list of references with which the server responds to a new connection.
\n\nThe remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.
\n\nThe memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.
\n", "group": "remote", "examples": { - "network/fetch.c": [ - "ex/HEAD/network/fetch.html#git_remote_stats-9" - ] + "ls-remote.c": ["ex/v1.9.1/ls-remote.html#git_remote_ls-4"] } }, - "git_remote_autotag": { + "git_remote_connected": { "type": "function", - "file": "remote.h", - "line": 737, - "lineto": 737, + "file": "git2/remote.h", + "line": 418, + "lineto": 418, "args": [ { "name": "remote", "type": "const git_remote *", - "comment": "the remote to query" + "comment": "the remote" } ], "argline": "const git_remote *remote", "sig": "const git_remote *", "return": { - "type": "git_remote_autotag_option_t", - "comment": " the auto-follow setting" + "type": "int", + "comment": " 1 if it's connected, 0 otherwise." }, - "description": "Retrieve the tag auto-follow setting
\n", - "comments": "", + "description": "Check whether the remote is connected
\n", + "comments": "Check whether the remote's underlying transport is connected to the remote host.
\n", "group": "remote" }, - "git_remote_set_autotag": { + "git_remote_stop": { "type": "function", - "file": "remote.h", - "line": 749, - "lineto": 749, + "file": "git2/remote.h", + "line": 429, + "lineto": 429, + "args": [ + { "name": "remote", "type": "git_remote *", "comment": "the remote" } + ], + "argline": "git_remote *remote", + "sig": "git_remote *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Cancel the operation
\n", + "comments": "At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.
\n", + "group": "remote" + }, + "git_remote_disconnect": { + "type": "function", + "file": "git2/remote.h", + "line": 439, + "lineto": 439, "args": [ - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to make the change" - }, { "name": "remote", - "type": "const char *", - "comment": "the name of the remote" - }, - { - "name": "value", - "type": "git_remote_autotag_option_t", - "comment": "the new value to take." + "type": "git_remote *", + "comment": "the remote to disconnect from" } ], - "argline": "git_repository *repo, const char *remote, git_remote_autotag_option_t value", - "sig": "git_repository *::const char *::git_remote_autotag_option_t", - "return": { - "type": "int", - "comment": null - }, - "description": "Set the remote's tag following setting.
\n", - "comments": "The change will be made in the configuration. No loaded remotes will be affected.
\n", + "argline": "git_remote *remote", + "sig": "git_remote *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Disconnect from the remote
\n", + "comments": "Close the connection to the remote.
\n", "group": "remote" }, - "git_remote_prune_refs": { + "git_remote_free": { "type": "function", - "file": "remote.h", - "line": 756, - "lineto": 756, + "file": "git2/remote.h", + "line": 449, + "lineto": 449, "args": [ { "name": "remote", - "type": "const git_remote *", - "comment": "the remote to query" + "type": "git_remote *", + "comment": "the remote to free" } ], - "argline": "const git_remote *remote", - "sig": "const git_remote *", - "return": { - "type": "int", - "comment": " the ref-prune setting" - }, - "description": "Retrieve the ref-prune setting
\n", - "comments": "", - "group": "remote" + "argline": "git_remote *remote", + "sig": "git_remote *", + "return": { "type": "void", "comment": null }, + "description": "Free the memory associated with a remote
\n", + "comments": "This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).
\n", + "group": "remote", + "examples": { + "fetch.c": [ + "ex/v1.9.1/fetch.html#git_remote_free-7", + "ex/v1.9.1/fetch.html#git_remote_free-8" + ], + "ls-remote.c": ["ex/v1.9.1/ls-remote.html#git_remote_free-5"], + "remote.c": ["ex/v1.9.1/remote.html#git_remote_free-7"] + } }, - "git_remote_rename": { + "git_remote_list": { "type": "function", - "file": "remote.h", - "line": 778, - "lineto": 782, + "file": "git2/remote.h", + "line": 460, + "lineto": 460, "args": [ { - "name": "problems", + "name": "out", "type": "git_strarray *", - "comment": "non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return." + "comment": "a string array which receives the names of the remotes" }, { "name": "repo", "type": "git_repository *", - "comment": "the repository in which to rename" - }, + "comment": "the repository to query" + } + ], + "argline": "git_strarray *out, git_repository *repo", + "sig": "git_strarray *::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Get a list of the configured remotes for a repo
\n", + "comments": "The string array must be freed by the user.
\n", + "group": "remote", + "examples": { + "checkout.c": ["ex/v1.9.1/checkout.html#git_remote_list-22"], + "remote.c": ["ex/v1.9.1/remote.html#git_remote_list-8"] + } + }, + "git_remote_init_callbacks": { + "type": "function", + "file": "git2/remote.h", + "line": 714, + "lineto": 716, + "args": [ { - "name": "name", - "type": "const char *", - "comment": "the current name of the remote" + "name": "opts", + "type": "git_remote_callbacks *", + "comment": "the `git_remote_callbacks` struct to initialize" }, { - "name": "new_name", - "type": "const char *", - "comment": "the new name the remote should bear" + "name": "version", + "type": "unsigned int", + "comment": "Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`" } ], - "argline": "git_strarray *problems, git_repository *repo, const char *name, const char *new_name", - "sig": "git_strarray *::git_repository *::const char *::const char *", + "argline": "git_remote_callbacks *opts, unsigned int version", + "sig": "git_remote_callbacks *::unsigned int", "return": { "type": "int", - "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" + "comment": " Zero on success; -1 on failure." }, - "description": "Give the remote a new name
\n", - "comments": "All remote-tracking branches and configuration settings for the remote are updated.
\n\nThe new name will be checked for validity. See git_tag_create() for rules about valid names.
No loaded instances of a the remote with the old name will change their name or their list of refspecs.
\n", + "description": "Initializes a git_remote_callbacks with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.
Ensure the remote name is well-formed.
\n", - "comments": "", - "group": "remote" + "description": "Initialize git_fetch_options structure
\n", + "comments": "Initializes a git_fetch_options with default values. Equivalent to creating an instance with GIT_FETCH_OPTIONS_INIT.
Delete an existing persisted remote.
\n", - "comments": "All remote-tracking branches and configuration settings for the remote will be removed.
\n", - "group": "remote", - "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_remote_delete-13" - ] - } + "description": "Initialize git_push_options structure
\n", + "comments": "Initializes a git_push_options with default values. Equivalent to creating an instance with GIT_PUSH_OPTIONS_INIT.
Retrieve the name of the remote's default branch
\n", - "comments": "The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.
\n\nThis function must only be called after connecting.
\n", + "description": "Initialize git_remote_connect_options structure.
\n", + "comments": "Initializes a git_remote_connect_options with default values. Equivalent to creating an instance with GIT_REMOTE_CONNECT_OPTIONS_INIT.
Open a git repository.
\n", - "comments": "The 'path' argument must point to either a git repository folder, or an existing work dir.
\n\nThe method will automatically detect if 'path' is a normal or bare repository or fail is 'path' is neither.
\n", - "group": "repository", + "argline": "git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers", + "sig": "git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Open a connection to a remote.
\n", + "comments": "The transport is selected based on the URL; the direction argument is due to a limitation of the git protocol which starts up a specific binary which can only do the one or the other.
\n", + "group": "remote", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_repository_open-58" - ], - "network/git2.c": [ - "ex/HEAD/network/git2.html#git_repository_open-5" - ], - "remote.c": [ - "ex/HEAD/remote.html#git_repository_open-14" - ] + "ls-remote.c": ["ex/v1.9.1/ls-remote.html#git_remote_connect-6"] } }, - "git_repository_wrap_odb": { + "git_remote_connect_ext": { "type": "function", - "file": "repository.h", - "line": 50, - "lineto": 50, + "file": "git2/remote.h", + "line": 1012, + "lineto": 1015, "args": [ { - "name": "out", - "type": "git_repository **", - "comment": "pointer to the repo" + "name": "remote", + "type": "git_remote *", + "comment": "the remote to connect to" }, { - "name": "odb", - "type": "git_odb *", - "comment": "the object database to wrap" + "name": "direction", + "type": "git_direction", + "comment": "GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push" + }, + { + "name": "opts", + "type": "const git_remote_connect_options *", + "comment": "the remote connection options" } ], - "argline": "git_repository **out, git_odb *odb", - "sig": "git_repository **::git_odb *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Create a "fake" repository to wrap an object database
\n", - "comments": "Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn't have any paths associated with it, so use with care.
\n", - "group": "repository" + "argline": "git_remote *remote, git_direction direction, const git_remote_connect_options *opts", + "sig": "git_remote *::git_direction::const git_remote_connect_options *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Open a connection to a remote with extended options.
\n", + "comments": "The transport is selected based on the URL; the direction argument is due to a limitation of the git protocol which starts up a specific binary which can only do the one or the other.
\n\nThe given options structure will form the defaults for connection options and callback setup. Callers may override these defaults by specifying git_fetch_options or git_push_options in subsequent calls.
Download and index the packfile.
\n", + "comments": "Connect to the remote if it hasn't been done yet, negotiate with the remote git which objects are missing, download and index the packfile.
\n\nThe .idx file will be created and both it and the packfile with be renamed to their final name.
\n\nIf options are specified and this remote is already connected then the existing remote connection options will be discarded and the remote will now use the new options.
\n", + "group": "remote" + }, + "git_remote_upload": { + "type": "function", + "file": "git2/remote.h", + "line": 1059, + "lineto": 1062, + "args": [ + { "name": "remote", "type": "git_remote *", "comment": "the remote" }, { - "name": "across_fs", - "type": "int", - "comment": "If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories." + "name": "refspecs", + "type": "const git_strarray *", + "comment": "the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs" }, { - "name": "ceiling_dirs", - "type": "const char *", - "comment": "A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)" + "name": "opts", + "type": "const git_push_options *", + "comment": "the options to use for this push" } ], - "argline": "git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs", - "sig": "git_buf *::const char *::int::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).
\n", - "comments": "The method will automatically detect if the repository is bare (if there is a repository).
\n", - "group": "repository", - "examples": { - "remote.c": [ - "ex/HEAD/remote.html#git_repository_discover-15" - ] - } + "argline": "git_remote *remote, const git_strarray *refspecs, const git_push_options *opts", + "sig": "git_remote *::const git_strarray *::const git_push_options *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a packfile and send it to the server
\n", + "comments": "Connect to the remote if it hasn't been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.
\n\nIf options are specified and this remote is already connected then the existing remote connection options will be discarded and the remote will now use the new options.
\n", + "group": "remote" }, - "git_repository_open_ext": { + "git_remote_update_tips": { "type": "function", - "file": "repository.h", - "line": 122, - "lineto": 126, + "file": "git2/remote.h", + "line": 1081, + "lineto": 1086, "args": [ { - "name": "out", - "type": "git_repository **", - "comment": "Pointer to the repo which will be opened. This can\n actually be NULL if you only want to use the error code to\n see if a repo at this path could be opened." + "name": "remote", + "type": "git_remote *", + "comment": "the remote to update" }, { - "name": "path", - "type": "const char *", - "comment": "Path to open as git repository. If the flags\n permit \"searching\", then this can be a path to a subdirectory\n inside the working directory of the repository." + "name": "callbacks", + "type": "const git_remote_callbacks *", + "comment": "pointer to the callback structure to use or NULL" }, { - "name": "flags", + "name": "update_flags", "type": "unsigned int", - "comment": "A combination of the GIT_REPOSITORY_OPEN flags above." + "comment": "the git_remote_update_flags for these tips." }, { - "name": "ceiling_dirs", + "name": "download_tags", + "type": "git_remote_autotag_option_t", + "comment": "what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`." + }, + { + "name": "reflog_message", "type": "const char *", - "comment": "A GIT_PATH_LIST_SEPARATOR delimited list of path\n prefixes at which the search for a containing repository should\n terminate." + "comment": "The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \nFind and open a repository with extended controls.
\n", - "comments": "", - "group": "repository", - "examples": { - "blame.c": [ - "ex/HEAD/blame.html#git_repository_open_ext-24" - ], - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_repository_open_ext-31" - ], - "describe.c": [ - "ex/HEAD/describe.html#git_repository_open_ext-6" - ], - "diff.c": [ - "ex/HEAD/diff.html#git_repository_open_ext-15" - ], - "log.c": [ - "ex/HEAD/log.html#git_repository_open_ext-44", - "ex/HEAD/log.html#git_repository_open_ext-45" - ], - "rev-parse.c": [ - "ex/HEAD/rev-parse.html#git_repository_open_ext-16" - ], - "status.c": [ - "ex/HEAD/status.html#git_repository_open_ext-5" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_repository_open_ext-11" - ] - } + "argline": "git_remote *remote, const git_remote_callbacks *callbacks, unsigned int update_flags, git_remote_autotag_option_t download_tags, const char *reflog_message", + "sig": "git_remote *::const git_remote_callbacks *::unsigned int::git_remote_autotag_option_t::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Update the tips to the new state.
\n", + "comments": "If callbacks are not specified then the callbacks specified to git_remote_connect will be used (if it was called).
Open a bare repository on the serverside.
\n", - "comments": "This is a fast open for bare repositories that will come in handy if you're e.g. hosting git repositories and need to access them efficiently
\n", - "group": "repository" + "argline": "git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message", + "sig": "git_remote *::const git_strarray *::const git_fetch_options *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Download new data and update tips.
\n", + "comments": "Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.
\n\nIf options are specified and this remote is already connected then the existing remote connection options will be discarded and the remote will now use the new options.
\n", + "group": "remote", + "examples": { "fetch.c": ["ex/v1.9.1/fetch.html#git_remote_fetch-9"] } }, - "git_repository_free": { + "git_remote_prune": { "type": "function", - "file": "repository.h", - "line": 152, - "lineto": 152, + "file": "git2/remote.h", + "line": 1122, + "lineto": 1124, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "repository handle to close. If NULL nothing occurs." + "name": "remote", + "type": "git_remote *", + "comment": "the remote to prune" + }, + { + "name": "callbacks", + "type": "const git_remote_callbacks *", + "comment": "callbacks to use for this prune" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "void", - "comment": null - }, - "description": "Free a previously allocated repository
\n", - "comments": "Note that after a repository is free'd, all the objects it has spawned will still exist until they are manually closed by the user with git_object_free, but accessing any of the attributes of an object without a backing repository will result in undefined behavior
Prune tracking refs that are no longer present on remote.
\n", + "comments": "If callbacks are not specified then the callbacks specified to git_remote_connect will be used (if it was called).
Perform a push.
\n", + "comments": "If options are specified and this remote is already connected then the existing remote connection options will be discarded and the remote will now use the new options.
\n", + "group": "remote", + "examples": { "push.c": ["ex/v1.9.1/push.html#git_remote_push-4"] } + }, + "git_remote_stats": { + "type": "function", + "file": "git2/remote.h", + "line": 1150, + "lineto": 1150, + "args": [ + { + "name": "remote", + "type": "git_remote *", + "comment": "the remote to get statistics for" + } + ], + "argline": "git_remote *remote", + "sig": "git_remote *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const git_indexer_progress *", + "comment": " the git_indexer_progress for the remote" }, - "description": "Creates a new Git repository in the given folder.
\n", - "comments": "TODO: - Reinit the repository
\n", - "group": "repository", - "examples": { - "init.c": [ - "ex/HEAD/init.html#git_repository_init-7" - ] - } + "description": "Get the statistics structure that is filled in by the fetch operation.
\n", + "comments": "", + "group": "remote", + "examples": { "fetch.c": ["ex/v1.9.1/fetch.html#git_remote_stats-10"] } }, - "git_repository_init_init_options": { + "git_remote_autotag": { "type": "function", - "file": "repository.h", - "line": 281, - "lineto": 283, + "file": "git2/remote.h", + "line": 1158, + "lineto": 1158, "args": [ { - "name": "opts", - "type": "git_repository_init_options *", - "comment": "the `git_repository_init_options` struct to initialize" - }, - { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`" + "name": "remote", + "type": "const git_remote *", + "comment": "the remote to query" } ], - "argline": "git_repository_init_options *opts, unsigned int version", - "sig": "git_repository_init_options *::unsigned int", + "argline": "const git_remote *remote", + "sig": "const git_remote *", "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." + "type": "git_remote_autotag_option_t", + "comment": " the auto-follow setting" }, - "description": "Initializes a git_repository_init_options with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.
Retrieve the tag auto-follow setting
\n", "comments": "", - "group": "repository" + "group": "remote" }, - "git_repository_init_ext": { + "git_remote_set_autotag": { "type": "function", - "file": "repository.h", - "line": 298, - "lineto": 301, + "file": "git2/remote.h", + "line": 1171, + "lineto": 1171, "args": [ { - "name": "out", - "type": "git_repository **", - "comment": "Pointer to the repo which will be created or reinitialized." + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to make the change" }, { - "name": "repo_path", + "name": "remote", "type": "const char *", - "comment": "The path to the repository." + "comment": "the name of the remote" }, { - "name": "opts", - "type": "git_repository_init_options *", - "comment": "Pointer to git_repository_init_options struct." + "name": "value", + "type": "git_remote_autotag_option_t", + "comment": "the new value to take." } ], - "argline": "git_repository **out, const char *repo_path, git_repository_init_options *opts", - "sig": "git_repository **::const char *::git_repository_init_options *", - "return": { - "type": "int", - "comment": " 0 or an error code on failure." - }, - "description": "Create a new Git repository in the given folder with extended controls.
\n", - "comments": "This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed. It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.
\n", - "group": "repository", - "examples": { - "init.c": [ - "ex/HEAD/init.html#git_repository_init_ext-8" - ] - } + "argline": "git_repository *repo, const char *remote, git_remote_autotag_option_t value", + "sig": "git_repository *::const char *::git_remote_autotag_option_t", + "return": { "type": "int", "comment": " 0, or an error code." }, + "description": "Set the remote's tag following setting.
\n", + "comments": "The change will be made in the configuration. No loaded remotes will be affected.
\n", + "group": "remote" }, - "git_repository_head": { + "git_remote_prune_refs": { "type": "function", - "file": "repository.h", - "line": 316, - "lineto": 316, + "file": "git2/remote.h", + "line": 1179, + "lineto": 1179, "args": [ { - "name": "out", - "type": "git_reference **", - "comment": "pointer to the reference which will be retrieved" + "name": "remote", + "type": "const git_remote *", + "comment": "the remote to query" + } + ], + "argline": "const git_remote *remote", + "sig": "const git_remote *", + "return": { "type": "int", "comment": " the ref-prune setting" }, + "description": "Retrieve the ref-prune setting
\n", + "comments": "", + "group": "remote" + }, + "git_remote_rename": { + "type": "function", + "file": "git2/remote.h", + "line": 1201, + "lineto": 1205, + "args": [ + { + "name": "problems", + "type": "git_strarray *", + "comment": "non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return." }, { "name": "repo", "type": "git_repository *", - "comment": "a repository object" + "comment": "the repository in which to rename" + }, + { + "name": "name", + "type": "const char *", + "comment": "the current name of the remote" + }, + { + "name": "new_name", + "type": "const char *", + "comment": "the new name the remote should bear" } ], - "argline": "git_reference **out, git_repository *repo", - "sig": "git_reference **::git_repository *", + "argline": "git_strarray *problems, git_repository *repo, const char *name, const char *new_name", + "sig": "git_strarray *::git_repository *::const char *::const char *", "return": { "type": "int", - "comment": " 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise" + "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" }, - "description": "Retrieve and resolve the reference pointed at by HEAD.
\n", - "comments": "The returned git_reference will be owned by caller and git_reference_free() must be called when done with it to release the allocated memory and prevent a leak.
Give the remote a new name
\n", + "comments": "All remote-tracking branches and configuration settings for the remote are updated.
\n\nThe new name will be checked for validity. See git_tag_create() for rules about valid names.
No loaded instances of a the remote with the old name will change their name or their list of refspecs.
\n", + "group": "remote", + "examples": { "remote.c": ["ex/v1.9.1/remote.html#git_remote_rename-9"] } }, - "git_repository_head_detached": { + "git_remote_name_is_valid": { "type": "function", - "file": "repository.h", - "line": 328, - "lineto": 328, + "file": "git2/remote.h", + "line": 1214, + "lineto": 1214, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "Repo to test" + "name": "valid", + "type": "int *", + "comment": "output pointer to set with validity of given remote name" + }, + { + "name": "remote_name", + "type": "const char *", + "comment": "name to be checked." } ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "int", - "comment": " 1 if HEAD is detached, 0 if it's not; error code if there\n was an error." - }, - "description": "Check if a repository's HEAD is detached
\n", - "comments": "A repository's HEAD is detached when it points directly to a commit instead of a branch.
\n", - "group": "repository" + "argline": "int *valid, const char *remote_name", + "sig": "int *::const char *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Ensure the remote name is well-formed.
\n", + "comments": "", + "group": "remote" }, - "git_repository_head_unborn": { + "git_remote_delete": { "type": "function", - "file": "repository.h", - "line": 340, - "lineto": 340, + "file": "git2/remote.h", + "line": 1226, + "lineto": 1226, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "Repo to test" + "comment": "the repository in which to act" + }, + { + "name": "name", + "type": "const char *", + "comment": "the name of the remote to delete" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", + "argline": "git_repository *repo, const char *name", + "sig": "git_repository *::const char *", "return": { "type": "int", - "comment": " 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error" + "comment": " 0 on success, or an error code." }, - "description": "Check if the current branch is unborn
\n", - "comments": "An unborn branch is one named from HEAD but which doesn't exist in the refs namespace, because it doesn't have any commit to point to.
\n", - "group": "repository" + "description": "Delete an existing persisted remote.
\n", + "comments": "All remote-tracking branches and configuration settings for the remote will be removed.
\n", + "group": "remote", + "examples": { "remote.c": ["ex/v1.9.1/remote.html#git_remote_delete-10"] } }, - "git_repository_is_empty": { + "git_remote_default_branch": { "type": "function", - "file": "repository.h", - "line": 352, - "lineto": 352, + "file": "git2/remote.h", + "line": 1244, + "lineto": 1244, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "Repo to test" - } + "name": "out", + "type": "git_buf *", + "comment": "the buffer in which to store the reference name" + }, + { "name": "remote", "type": "git_remote *", "comment": "the remote" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", + "argline": "git_buf *out, git_remote *remote", + "sig": "git_buf *::git_remote *", "return": { "type": "int", - "comment": " 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted" + "comment": " 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message." }, - "description": "Check if a repository is empty
\n", - "comments": "An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.
\n", - "group": "repository" + "description": "Retrieve the name of the remote's default branch
\n", + "comments": "The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.
\n\nThis function must only be called after connecting.
\n", + "group": "remote" }, - "git_repository_path": { + "git_repository_open": { "type": "function", - "file": "repository.h", - "line": 363, - "lineto": 363, + "file": "git2/repository.h", + "line": 43, + "lineto": 43, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "A repository object" + "name": "out", + "type": "git_repository **", + "comment": "pointer to the repo which will be opened" + }, + { + "name": "path", + "type": "const char *", + "comment": "the path to the repository" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "const char *", - "comment": " the path to the repository" - }, - "description": "Get the path of this repository
\n", - "comments": "This is the path of the .git folder for normal repositories, or of the repository itself for bare repositories.
Open a git repository.
\n", + "comments": "The 'path' argument must point to either a git repository folder, or an existing work dir.
\n\nThe method will automatically detect if 'path' is a normal or bare repository or fail is 'path' is neither.
\n\nNote that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Get the path of the working directory for this repository
\n", - "comments": "If the repository is bare, this function will always return NULL.
\n", - "group": "repository", - "examples": { - "init.c": [ - "ex/HEAD/init.html#git_repository_workdir-10" - ] - } + "argline": "git_repository **out, git_worktree *wt", + "sig": "git_repository **::git_worktree *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Open working tree as a repository
\n", + "comments": "Open the working directory of the working tree as a normal repository that can then be worked on.
\n", + "group": "repository" }, - "git_repository_set_workdir": { + "git_repository_wrap_odb": { "type": "function", - "file": "repository.h", - "line": 393, - "lineto": 394, + "file": "git2/repository.h", + "line": 67, + "lineto": 69, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "A repository object" + "name": "out", + "type": "git_repository **", + "comment": "pointer to the repo" }, { - "name": "workdir", + "name": "odb", + "type": "git_odb *", + "comment": "the object database to wrap" + } + ], + "argline": "git_repository **out, git_odb *odb", + "sig": "git_repository **::git_odb *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a "fake" repository to wrap an object database
\n", + "comments": "Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn't have any paths associated with it, so use with care.
\n", + "group": "repository" + }, + "git_repository_discover": { + "type": "function", + "file": "git2/repository.h", + "line": 101, + "lineto": 105, + "args": [ + { + "name": "out", + "type": "git_buf *", + "comment": "A pointer to a user-allocated git_buf which will contain\n the found path." + }, + { + "name": "start_path", "type": "const char *", - "comment": "The path to a working directory" + "comment": "The base path where the lookup starts." }, { - "name": "update_gitlink", + "name": "across_fs", "type": "int", - "comment": "Create/update gitlink in workdir and set config\n \"core.worktree\" (if workdir is not the parent of the .git directory)" + "comment": "If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories." + }, + { + "name": "ceiling_dirs", + "type": "const char *", + "comment": "A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)" } ], - "argline": "git_repository *repo, const char *workdir, int update_gitlink", - "sig": "git_repository *::const char *::int", + "argline": "git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs", + "sig": "git_buf *::const char *::int::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).
\n", + "comments": "The method will automatically detect if the repository is bare (if there is a repository).
\n\nNote that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Set the path to the working directory for this repository
\n", - "comments": "The working directory doesn't need to be the same one that contains the .git folder for this repository.
If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).
\n", + "description": "Find and open a repository with extended controls.
\n", + "comments": "Note that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Open a bare repository on the serverside.
\n", + "comments": "This is a fast open for bare repositories that will come in handy if you're e.g. hosting git repositories and need to access them efficiently
\n\nNote that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Check if a repository is bare
\n", - "comments": "", + "return": { "type": "void", "comment": null }, + "description": "Free a previously allocated repository
\n", + "comments": "Note that after a repository is free'd, all the objects it has spawned will still exist until they are manually closed by the user with git_object_free, but accessing any of the attributes of an object without a backing repository will result in undefined behavior
Get the configuration file for this repository.
\n", - "comments": "If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).
\n\nThe configuration file must be freed once it's no longer being used by the user.
\n", - "group": "repository" + "argline": "git_repository **out, const char *path, unsigned int is_bare", + "sig": "git_repository **::const char *::unsigned int", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Creates a new Git repository in the given folder.
\n", + "comments": "TODO: - Reinit the repository
\n\nNote that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Get a snapshot of the repository's configuration
\n", - "comments": "Convenience function to take a snapshot from the repository's configuration. The contents of this snapshot will not change, even if the underlying config files are modified.
\n\nThe configuration file must be freed once it's no longer being used by the user.
\n", + "description": "Initialize git_repository_init_options structure
\n", + "comments": "Initializes a git_repository_init_options with default values. Equivalent to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.
Get the Object Database for this repository.
\n", - "comments": "If a custom ODB has not been set, the default database for the repository will be returned (the one located in .git/objects).
The ODB must be freed once it's no longer being used by the user.
\n", + "argline": "git_repository **out, const char *repo_path, git_repository_init_options *opts", + "sig": "git_repository **::const char *::git_repository_init_options *", + "return": { "type": "int", "comment": " 0 or an error code on failure." }, + "description": "Create a new Git repository in the given folder with extended controls.
\n", + "comments": "This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed. It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.
\n\nNote that the libgit2 library must be initialized using git_libgit2_init before any APIs can be called, including this one.
Get the Reference Database Backend for this repository.
\n", - "comments": "If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the .git directory).
The refdb must be freed once it's no longer being used by the user.
\n", - "group": "repository" - }, - "git_repository_index": { - "type": "function", - "file": "repository.h", - "line": 482, - "lineto": 482, - "args": [ - { - "name": "out", - "type": "git_index **", - "comment": "Pointer to store the loaded index" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "A repository object" + "comment": "a repository object" } ], - "argline": "git_index **out, git_repository *repo", - "sig": "git_index **::git_repository *", + "argline": "git_reference **out, git_repository *repo", + "sig": "git_reference **::git_repository *", "return": { "type": "int", - "comment": " 0, or an error code" + "comment": " 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise" }, - "description": "Get the Index file for this repository.
\n", - "comments": "If a custom index has not been set, the default index for the repository will be returned (the one located in .git/index).
The index must be freed once it's no longer being used by the user.
\n", + "description": "Retrieve and resolve the reference pointed at by HEAD.
\n", + "comments": "The returned git_reference will be owned by caller and git_reference_free() must be called when done with it to release the allocated memory and prevent a leak.
Retrieve git's prepared message
\n", - "comments": "Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.
\n\nUse this function to get the contents of this file. Don't forget to remove the file after you create the commit.
\n", + "description": "Retrieve the referenced HEAD for the worktree
\n", + "comments": "", "group": "repository" }, - "git_repository_message_remove": { + "git_repository_head_detached": { "type": "function", - "file": "repository.h", - "line": 507, - "lineto": 507, + "file": "git2/repository.h", + "line": 467, + "lineto": 467, "args": [ { "name": "repo", "type": "git_repository *", - "comment": null + "comment": "Repo to test" } ], "argline": "git_repository *repo", "sig": "git_repository *", "return": { "type": "int", - "comment": null + "comment": " 1 if HEAD is detached, 0 if it's not; error code if there\n was an error." }, - "description": "Remove git's prepared message.
\n", - "comments": "Remove the message that git_repository_message retrieves.
Check if a repository's HEAD is detached
\n", + "comments": "A repository's HEAD is detached when it points directly to a commit instead of a branch.
\n", "group": "repository" }, - "git_repository_state_cleanup": { + "git_repository_head_detached_for_worktree": { "type": "function", - "file": "repository.h", - "line": 516, - "lineto": 516, + "file": "git2/repository.h", + "line": 480, + "lineto": 481, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "A repository object" + "comment": "a repository object" + }, + { + "name": "name", + "type": "const char *", + "comment": "name of the worktree to retrieve HEAD for" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", + "argline": "git_repository *repo, const char *name", + "sig": "git_repository *::const char *", "return": { "type": "int", - "comment": " 0 on success, or error" + "comment": " 1 if HEAD is detached, 0 if its not; error code if\n there was an error" }, - "description": "Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc. For example: MERGE_HEAD, MERGE_MSG, etc.
\n", - "comments": "", + "description": "Check if a worktree's HEAD is detached
\n", + "comments": "A worktree's HEAD is detached when it points directly to a commit instead of a branch.
\n", "group": "repository" }, - "git_repository_fetchhead_foreach": { + "git_repository_head_unborn": { "type": "function", - "file": "repository.h", - "line": 535, - "lineto": 538, + "file": "git2/repository.h", + "line": 493, + "lineto": 493, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "A repository object" - }, - { - "name": "callback", - "type": "git_repository_fetchhead_foreach_cb", - "comment": "Callback function" - }, - { - "name": "payload", - "type": "void *", - "comment": "Pointer to callback data (optional)" + "comment": "Repo to test" } ], - "argline": "git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload", - "sig": "git_repository *::git_repository_fetchhead_foreach_cb::void *", + "argline": "git_repository *repo", + "sig": "git_repository *", "return": { "type": "int", - "comment": " 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n there is no FETCH_HEAD file, or other error code." + "comment": " 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error" }, - "description": "Invoke 'callback' for each entry in the given FETCH_HEAD file.
\n", - "comments": "Return a non-zero value from the callback to stop the loop.
\n", + "description": "Check if the current branch is unborn
\n", + "comments": "An unborn branch is one named from HEAD but which doesn't exist in the refs namespace, because it doesn't have any commit to point to.
\n", "group": "repository" }, - "git_repository_mergehead_foreach": { + "git_repository_is_empty": { "type": "function", - "file": "repository.h", - "line": 555, - "lineto": 558, + "file": "git2/repository.h", + "line": 507, + "lineto": 507, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "A repository object" - }, - { - "name": "callback", - "type": "git_repository_mergehead_foreach_cb", - "comment": "Callback function" - }, - { - "name": "payload", - "type": "void *", - "comment": "Pointer to callback data (optional)" + "comment": "Repo to test" } ], - "argline": "git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload", - "sig": "git_repository *::git_repository_mergehead_foreach_cb::void *", + "argline": "git_repository *repo", + "sig": "git_repository *", "return": { "type": "int", - "comment": " 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n there is no MERGE_HEAD file, or other error code." + "comment": " 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted" }, - "description": "If a merge is in progress, invoke 'callback' for each commit ID in the\n MERGE_HEAD file.
\n", - "comments": "Return a non-zero value from the callback to stop the loop.
\n", + "description": "Check if a repository is empty
\n", + "comments": "An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch, or the branch specified for the repository in the init.defaultBranch configuration variable.
Calculate hash of file using repository filtering rules.
\n", - "comments": "If you simply want to calculate the hash of a file on disk with no filters, you can just use the git_odb_hashfile() API. However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.
Note: if the repository has core.safecrlf set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.
Get the location of a specific repository file or directory
\n", + "comments": "This function will retrieve the path of a specific repository item. It will thereby honor things like the repository's common directory, gitdir, etc. In case a file path cannot exist for a given item (e.g. the working directory of a bare repository), GIT_ENOTFOUND is returned.
\n", "group": "repository" }, - "git_repository_set_head": { + "git_repository_path": { "type": "function", - "file": "repository.h", - "line": 608, - "lineto": 610, + "file": "git2/repository.h", + "line": 556, + "lineto": 556, "args": [ { "name": "repo", - "type": "git_repository *", - "comment": "Repository pointer" - }, - { - "name": "refname", - "type": "const char *", - "comment": "Canonical name of the reference the HEAD should point at" + "type": "const git_repository *", + "comment": "A repository object" } ], - "argline": "git_repository *repo, const char *refname", - "sig": "git_repository *::const char *", + "argline": "const git_repository *repo", + "sig": "const git_repository *", "return": { - "type": "int", - "comment": " 0 on success, or an error code" + "type": "const char *", + "comment": " the path to the repository" }, - "description": "Make the repository HEAD point to the specified reference.
\n", - "comments": "If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.
\n\nIf the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn't yet. If the branch doesn't exist yet, no error will be return. The HEAD will then be attached to an unborn branch.
\n\nOtherwise, the HEAD will be detached and will directly point to the Commit.
\n", - "group": "repository" + "description": "Get the path of this repository
\n", + "comments": "This is the path of the .git folder for normal repositories, or of the repository itself for bare repositories.
Make the repository HEAD directly point to the Commit.
\n", - "comments": "If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.
\n\nIf the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.
\n\nOtherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.
\n", - "group": "repository" + "description": "Get the path of the working directory for this repository
\n", + "comments": "If the repository is bare, this function will always return NULL.
\n", + "group": "repository", + "examples": { "init.c": ["ex/v1.9.1/init.html#git_repository_workdir-8"] } }, - "git_repository_set_head_detached_from_annotated": { + "git_repository_commondir": { "type": "function", - "file": "repository.h", - "line": 644, - "lineto": 646, + "file": "git2/repository.h", + "line": 579, + "lineto": 579, "args": [ { "name": "repo", - "type": "git_repository *", - "comment": null - }, - { - "name": "commitish", - "type": "const git_annotated_commit *", - "comment": null + "type": "const git_repository *", + "comment": "A repository object" } ], - "argline": "git_repository *repo, const git_annotated_commit *commitish", - "sig": "git_repository *::const git_annotated_commit *", + "argline": "const git_repository *repo", + "sig": "const git_repository *", "return": { - "type": "int", - "comment": null + "type": "const char *", + "comment": " the path to the common dir" }, - "description": "Make the repository HEAD directly point to the Commit.
\n", - "comments": "This behaves like git_repository_set_head_detached() but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.
See the documentation for git_repository_set_head_detached().
Get the path of the shared common directory for this repository.
\n", + "comments": "If the repository is bare, it is the root directory for the repository. If the repository is a worktree, it is the parent repo's gitdir. Otherwise, it is the gitdir.
\n", "group": "repository" }, - "git_repository_detach_head": { + "git_repository_set_workdir": { "type": "function", - "file": "repository.h", - "line": 665, - "lineto": 666, + "file": "git2/repository.h", + "line": 598, + "lineto": 599, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "Repository pointer" + "comment": "A repository object" + }, + { + "name": "workdir", + "type": "const char *", + "comment": "The path to a working directory" + }, + { + "name": "update_gitlink", + "type": "int", + "comment": "Create/update gitlink in workdir and set config\n \"core.worktree\" (if workdir is not the parent of the .git directory)" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code" - }, - "description": "Detach the HEAD.
\n", - "comments": "If the HEAD is already detached and points to a Commit, 0 is returned.
\n\nIf the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.
\n\nIf the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.
\n\nOtherwise, the HEAD will be detached and point to the peeled Commit.
\n", + "argline": "git_repository *repo, const char *workdir, int update_gitlink", + "sig": "git_repository *::const char *::int", + "return": { "type": "int", "comment": " 0, or an error code" }, + "description": "Set the path to the working directory for this repository
\n", + "comments": "The working directory doesn't need to be the same one that contains the .git folder for this repository.
If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).
\n", "group": "repository" }, - "git_repository_state": { + "git_repository_is_bare": { "type": "function", - "file": "repository.h", - "line": 696, - "lineto": 696, + "file": "git2/repository.h", + "line": 607, + "lineto": 607, "args": [ { "name": "repo", - "type": "git_repository *", - "comment": "Repository pointer" + "type": "const git_repository *", + "comment": "Repo to test" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", + "argline": "const git_repository *repo", + "sig": "const git_repository *", "return": { "type": "int", - "comment": " The state of the repository" + "comment": " 1 if the repository is bare, 0 otherwise." }, - "description": "Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.
\n", + "description": "Check if a repository is bare
\n", "comments": "", - "group": "repository" + "group": "repository", + "examples": { + "status.c": ["ex/v1.9.1/status.html#git_repository_is_bare-5"] + } }, - "git_repository_set_namespace": { + "git_repository_is_worktree": { "type": "function", - "file": "repository.h", - "line": 710, - "lineto": 710, + "file": "git2/repository.h", + "line": 615, + "lineto": 615, "args": [ { "name": "repo", - "type": "git_repository *", - "comment": "The repo" - }, - { - "name": "nmspace", - "type": "const char *", - "comment": "The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace." + "type": "const git_repository *", + "comment": "Repo to test" } ], - "argline": "git_repository *repo, const char *nmspace", - "sig": "git_repository *::const char *", + "argline": "const git_repository *repo", + "sig": "const git_repository *", "return": { "type": "int", - "comment": " 0 on success, -1 on error" + "comment": " 1 if the repository is a linked work tree, 0 otherwise." }, - "description": "Sets the active namespace for this Git Repository
\n", - "comments": "This namespace affects all reference operations for the repo. See man gitnamespaces
Check if a repository is a linked work tree
\n", + "comments": "", "group": "repository" }, - "git_repository_get_namespace": { + "git_repository_config": { "type": "function", - "file": "repository.h", - "line": 718, - "lineto": 718, + "file": "git2/repository.h", + "line": 631, + "lineto": 631, "args": [ + { + "name": "out", + "type": "git_config **", + "comment": "Pointer to store the loaded configuration" + }, { "name": "repo", "type": "git_repository *", - "comment": "The repo" + "comment": "A repository object" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "const char *", - "comment": " the active namespace, or NULL if there isn't one" - }, - "description": "Get the currently active namespace for this repository
\n", - "comments": "", - "group": "repository" + "argline": "git_config **out, git_repository *repo", + "sig": "git_config **::git_repository *", + "return": { "type": "int", "comment": " 0, or an error code" }, + "description": "Get the configuration file for this repository.
\n", + "comments": "If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).
\n\nThe configuration file must be freed once it's no longer being used by the user.
\n", + "group": "repository", + "examples": { + "config.c": ["ex/v1.9.1/config.html#git_repository_config-9"] + } }, - "git_repository_is_shallow": { + "git_repository_config_snapshot": { "type": "function", - "file": "repository.h", - "line": 727, - "lineto": 727, + "file": "git2/repository.h", + "line": 647, + "lineto": 647, "args": [ + { + "name": "out", + "type": "git_config **", + "comment": "Pointer to store the loaded configuration" + }, { "name": "repo", "type": "git_repository *", - "comment": "The repository" + "comment": "the repository" } ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "int", - "comment": " 1 if shallow, zero if not" - }, - "description": "Determine if the repository was a shallow clone
\n", - "comments": "", - "group": "repository" + "argline": "git_config **out, git_repository *repo", + "sig": "git_config **::git_repository *", + "return": { "type": "int", "comment": " 0, or an error code" }, + "description": "Get a snapshot of the repository's configuration
\n", + "comments": "Convenience function to take a snapshot from the repository's configuration. The contents of this snapshot will not change, even if the underlying config files are modified.
\n\nThe configuration file must be freed once it's no longer being used by the user.
\n", + "group": "repository", + "examples": { + "general.c": [ + "ex/v1.9.1/general.html#git_repository_config_snapshot-77", + "ex/v1.9.1/general.html#git_repository_config_snapshot-78" + ] + } }, - "git_repository_ident": { + "git_repository_odb": { "type": "function", - "file": "repository.h", - "line": 739, - "lineto": 739, + "file": "git2/repository.h", + "line": 663, + "lineto": 663, "args": [ { - "name": "name", - "type": "const char **", - "comment": "where to store the pointer to the name" + "name": "out", + "type": "git_odb **", + "comment": "Pointer to store the loaded ODB" }, { - "name": "email", - "type": "const char **", - "comment": "where to store the pointer to the email" + "name": "repo", + "type": "git_repository *", + "comment": "A repository object" + } + ], + "argline": "git_odb **out, git_repository *repo", + "sig": "git_odb **::git_repository *", + "return": { "type": "int", "comment": " 0, or an error code" }, + "description": "Get the Object Database for this repository.
\n", + "comments": "If a custom ODB has not been set, the default database for the repository will be returned (the one located in .git/objects).
The ODB must be freed once it's no longer being used by the user.
\n", + "group": "repository", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_repository_odb-29"], + "general.c": ["ex/v1.9.1/general.html#git_repository_odb-79"] + } + }, + "git_repository_refdb": { + "type": "function", + "file": "git2/repository.h", + "line": 679, + "lineto": 679, + "args": [ + { + "name": "out", + "type": "git_refdb **", + "comment": "Pointer to store the loaded refdb" }, { "name": "repo", - "type": "const git_repository *", - "comment": "the repository" + "type": "git_repository *", + "comment": "A repository object" } ], - "argline": "const char **name, const char **email, const git_repository *repo", - "sig": "const char **::const char **::const git_repository *", - "return": { - "type": "int", - "comment": null - }, - "description": "Retrieve the configured identity to use for reflogs
\n", - "comments": "The memory is owned by the repository and must not be freed by the user.
\n", + "argline": "git_refdb **out, git_repository *repo", + "sig": "git_refdb **::git_repository *", + "return": { "type": "int", "comment": " 0, or an error code" }, + "description": "Get the Reference Database Backend for this repository.
\n", + "comments": "If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the .git directory).
The refdb must be freed once it's no longer being used by the user.
\n", "group": "repository" }, - "git_repository_set_ident": { + "git_repository_index": { "type": "function", - "file": "repository.h", - "line": 752, - "lineto": 752, + "file": "git2/repository.h", + "line": 695, + "lineto": 695, "args": [ + { + "name": "out", + "type": "git_index **", + "comment": "Pointer to store the loaded index" + }, { "name": "repo", "type": "git_repository *", - "comment": "the repository to configure" - }, + "comment": "A repository object" + } + ], + "argline": "git_index **out, git_repository *repo", + "sig": "git_index **::git_repository *", + "return": { "type": "int", "comment": " 0, or an error code" }, + "description": "Get the Index file for this repository.
\n", + "comments": "If a custom index has not been set, the default index for the repository will be returned (the one located in .git/index).
The index must be freed once it's no longer being used by the user.
\n", + "group": "repository", + "examples": { + "add.c": ["ex/v1.9.1/add.html#git_repository_index-5"], + "commit.c": ["ex/v1.9.1/commit.html#git_repository_index-8"], + "general.c": ["ex/v1.9.1/general.html#git_repository_index-80"], + "init.c": ["ex/v1.9.1/init.html#git_repository_index-9"], + "ls-files.c": ["ex/v1.9.1/ls-files.html#git_repository_index-5"], + "merge.c": ["ex/v1.9.1/merge.html#git_repository_index-33"] + } + }, + "git_repository_message": { + "type": "function", + "file": "git2/repository.h", + "line": 713, + "lineto": 713, + "args": [ { - "name": "name", - "type": "const char *", - "comment": "the name to use for the reflog entries" + "name": "out", + "type": "git_buf *", + "comment": "git_buf to write data into" }, { - "name": "email", - "type": "const char *", - "comment": "the email to use for the reflog entries" + "name": "repo", + "type": "git_repository *", + "comment": "Repository to read prepared message from" } ], - "argline": "git_repository *repo, const char *name, const char *email", - "sig": "git_repository *::const char *::const char *", + "argline": "git_buf *out, git_repository *repo", + "sig": "git_buf *::git_repository *", "return": { "type": "int", - "comment": null + "comment": " 0, GIT_ENOTFOUND if no message exists or an error code" }, - "description": "Set the identity to be used for writing reflogs
\n", - "comments": "If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository's configuration.
\n", + "description": "Retrieve git's prepared message
\n", + "comments": "Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.
\n\nUse this function to get the contents of this file. Don't forget to remove the file after you create the commit.
\n", "group": "repository" }, - "git_reset": { + "git_repository_message_remove": { "type": "function", - "file": "reset.h", - "line": 62, - "lineto": 66, + "file": "git2/repository.h", + "line": 723, + "lineto": 723, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "Repository where to perform the reset operation." - }, - { - "name": "target", - "type": "git_object *", - "comment": "Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch." - }, - { - "name": "reset_type", - "type": "git_reset_t", - "comment": "Kind of reset operation to perform." - }, - { - "name": "checkout_opts", - "type": "const git_checkout_options *", - "comment": "Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks." + "comment": "Repository to remove prepared message from." } ], - "argline": "git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts", - "sig": "git_repository *::git_object *::git_reset_t::const git_checkout_options *", - "return": { - "type": "int", - "comment": " 0 on success or an error code" - }, - "description": "Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.
\n", - "comments": "SOFT reset means the Head will be moved to the commit.
\n\nMIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.
\n\nHARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index. (Untracked and ignored files will be left alone, however.)
\n\nTODO: Implement remaining kinds of resets.
\n", - "group": "reset" + "argline": "git_repository *repo", + "sig": "git_repository *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Remove git's prepared message.
\n", + "comments": "Remove the message that git_repository_message retrieves.
Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc. For example: MERGE_HEAD, MERGE_MSG, etc.
\n", + "comments": "", + "group": "repository", + "examples": { + "merge.c": ["ex/v1.9.1/merge.html#git_repository_state_cleanup-34"] + } + }, + "git_repository_fetchhead_foreach": { + "type": "function", + "file": "git2/repository.h", + "line": 763, + "lineto": 766, + "args": [ { - "name": "commit", - "type": "git_annotated_commit *", - "comment": null + "name": "repo", + "type": "git_repository *", + "comment": "A repository object" }, { - "name": "reset_type", - "type": "git_reset_t", - "comment": null + "name": "callback", + "type": "git_repository_fetchhead_foreach_cb", + "comment": "Callback function" }, { - "name": "checkout_opts", - "type": "const git_checkout_options *", - "comment": null + "name": "payload", + "type": "void *", + "comment": "Pointer to callback data (optional)" } ], - "argline": "git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts", - "sig": "git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *", + "argline": "git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload", + "sig": "git_repository *::git_repository_fetchhead_foreach_cb::void *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n there is no FETCH_HEAD file, or other error code." }, - "description": "Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.
\n", - "comments": "This behaves like git_reset() but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.
See the documentation for git_reset().
Invoke 'callback' for each entry in the given FETCH_HEAD file.
\n", + "comments": "Return a non-zero value from the callback to stop the loop.
\n", + "group": "repository" }, - "git_reset_default": { + "git_repository_mergehead_foreach": { "type": "function", - "file": "reset.h", - "line": 104, - "lineto": 107, + "file": "git2/repository.h", + "line": 792, + "lineto": 795, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "Repository where to perform the reset operation." + "comment": "A repository object" }, { - "name": "target", - "type": "git_object *", - "comment": "The committish which content will be used to reset the content\n of the index." + "name": "callback", + "type": "git_repository_mergehead_foreach_cb", + "comment": "Callback function" }, { - "name": "pathspecs", - "type": "git_strarray *", - "comment": "List of pathspecs to operate on." - } - ], - "argline": "git_repository *repo, git_object *target, git_strarray *pathspecs", - "sig": "git_repository *::git_object *::git_strarray *", - "return": { - "type": "int", - "comment": " 0 on success or an error code \n<\n 0" - }, - "description": "Updates some entries in the index from the target commit tree.
\n", - "comments": "The scope of the updated entries is determined by the paths being passed in the pathspec parameters.
Passing a NULL target will result in removing entries in the index matching the provided pathspecs.
Initializes a git_revert_options with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.
If a merge is in progress, invoke 'callback' for each commit ID in the\n MERGE_HEAD file.
\n", + "comments": "Return a non-zero value from the callback to stop the loop.
\n", + "group": "repository" }, - "git_revert_commit": { + "git_repository_hashfile": { "type": "function", - "file": "revert.h", - "line": 65, - "lineto": 71, + "file": "git2/repository.h", + "line": 822, + "lineto": 827, "args": [ { "name": "out", - "type": "git_index **", - "comment": "pointer to store the index result in" + "type": "git_oid *", + "comment": "Output value of calculated SHA" }, { "name": "repo", "type": "git_repository *", - "comment": "the repository that contains the given commits" - }, - { - "name": "revert_commit", - "type": "git_commit *", - "comment": "the commit to revert" + "comment": "Repository pointer" }, { - "name": "our_commit", - "type": "git_commit *", - "comment": "the commit to revert against (eg, HEAD)" + "name": "path", + "type": "const char *", + "comment": "Path to file on disk whose contents should be hashed. This\n may be an absolute path or a relative path, in which case it\n will be treated as a path within the working directory." }, { - "name": "mainline", - "type": "unsigned int", - "comment": "the parent of the revert commit, if it is a merge" + "name": "type", + "type": "git_object_t", + "comment": "The object type to hash as (e.g. GIT_OBJECT_BLOB)" }, { - "name": "merge_options", - "type": "const git_merge_options *", - "comment": "the merge options (or null for defaults)" + "name": "as_path", + "type": "const char *", + "comment": "The path to use to look up filtering rules. If this is\n an empty string then no filters will be applied when\n calculating the hash. If this is `NULL` and the `path`\n parameter is a file within the repository's working\n directory, then the `path` will be used." } ], - "argline": "git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options", - "sig": "git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *", - "return": { - "type": "int", - "comment": " zero on success, -1 on failure." - }, - "description": "Reverts the given commit against the given "our" commit, producing an\n index that reflects the result of the revert.
\n", - "comments": "The returned index must be freed explicitly with git_index_free.
Calculate hash of file using repository filtering rules.
\n", + "comments": "If you simply want to calculate the hash of a file on disk with no filters, you can just use the git_odb_hashfile() API. However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.
Note: if the repository has core.safecrlf set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.
Reverts the given commit, producing changes in the index and working directory.
\n", - "comments": "", - "group": "revert" + "argline": "git_repository *repo, const char *refname", + "sig": "git_repository *::const char *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Make the repository HEAD point to the specified reference.
\n", + "comments": "If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.
\n\nIf the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn't yet. If the branch doesn't exist yet, no error will be return. The HEAD will then be attached to an unborn branch.
\n\nOtherwise, the HEAD will be detached and will directly point to the Commit.
\n", + "group": "repository", + "examples": { + "checkout.c": ["ex/v1.9.1/checkout.html#git_repository_set_head-23"] + } }, - "git_revparse_single": { + "git_repository_set_head_detached": { "type": "function", - "file": "revparse.h", - "line": 37, - "lineto": 38, + "file": "git2/repository.h", + "line": 867, + "lineto": 869, "args": [ - { - "name": "out", - "type": "git_object **", - "comment": "pointer to output object" - }, { "name": "repo", "type": "git_repository *", - "comment": "the repository to search in" + "comment": "Repository pointer" }, { - "name": "spec", - "type": "const char *", - "comment": "the textual specification for an object" + "name": "committish", + "type": "const git_oid *", + "comment": "Object id of the Commit the HEAD should point to" } ], - "argline": "git_object **out, git_repository *repo, const char *spec", - "sig": "git_object **::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code" - }, - "description": "Find a single object, as specified by a revision string.
\n", - "comments": "See man gitrevisions, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
The returned object should be released with git_object_free when no longer needed.
Make the repository HEAD directly point to the Commit.
\n", + "comments": "If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.
\n\nIf the provided committish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.
\n\nOtherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.
\n", + "group": "repository" }, - "git_revparse_ext": { + "git_repository_set_head_detached_from_annotated": { "type": "function", - "file": "revparse.h", - "line": 61, - "lineto": 65, + "file": "git2/repository.h", + "line": 885, + "lineto": 887, "args": [ - { - "name": "object_out", - "type": "git_object **", - "comment": "pointer to output object" - }, - { - "name": "reference_out", - "type": "git_reference **", - "comment": "pointer to output reference or NULL" - }, { "name": "repo", "type": "git_repository *", - "comment": "the repository to search in" + "comment": "Repository pointer" }, { - "name": "spec", - "type": "const char *", - "comment": "the textual specification for an object" + "name": "committish", + "type": "const git_annotated_commit *", + "comment": "annotated commit to point HEAD to" } ], - "argline": "git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec", - "sig": "git_object **::git_reference **::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code" - }, - "description": "Find a single object and intermediate reference by a revision string.
\n", - "comments": "See man gitrevisions, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
In some cases (@{<-n>} or <branchname>@{upstream}), the expression may point to an intermediate reference. When such expressions are being passed in, reference_out will be valued as well.
The returned object should be released with git_object_free and the returned reference with git_reference_free when no longer needed.
Make the repository HEAD directly point to the Commit.
\n", + "comments": "This behaves like git_repository_set_head_detached() but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.
See the documentation for git_repository_set_head_detached().
Parse a revision string for from, to, and intent.
See man gitrevisions or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
Detach the HEAD.
\n", + "comments": "If the HEAD is already detached and points to a Commit, 0 is returned.
\n\nIf the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.
\n\nIf the HEAD is already detached and points to a non committish, the HEAD is unaltered, and -1 is returned.
\n\nOtherwise, the HEAD will be detached and point to the peeled Commit.
\n", + "group": "repository" }, - "git_revwalk_new": { + "git_repository_state": { "type": "function", - "file": "revwalk.h", - "line": 75, - "lineto": 75, + "file": "git2/repository.h", + "line": 937, + "lineto": 937, "args": [ - { - "name": "out", - "type": "git_revwalk **", - "comment": "pointer to the new revision walker" - }, { "name": "repo", "type": "git_repository *", - "comment": "the repo to walk through" + "comment": "Repository pointer" } ], - "argline": "git_revwalk **out, git_repository *repo", - "sig": "git_revwalk **::git_repository *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Allocate a new revision walker to iterate through a repo.
\n", - "comments": "This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.
\n\nFor maximum performance, this revision walker should be reused for different walks.
\n\nThis revision walker is not thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.
\n", - "group": "revwalk", + "argline": "git_repository *repo", + "sig": "git_repository *", + "return": { "type": "int", "comment": " The state of the repository" }, + "description": "Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.
\n", + "comments": "", + "group": "repository", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_revwalk_new-62" - ], - "log.c": [ - "ex/HEAD/log.html#git_revwalk_new-49", - "ex/HEAD/log.html#git_revwalk_new-50" - ] + "checkout.c": ["ex/v1.9.1/checkout.html#git_repository_state-25"], + "merge.c": ["ex/v1.9.1/merge.html#git_repository_state-35"] } }, - "git_revwalk_reset": { + "git_repository_set_namespace": { "type": "function", - "file": "revwalk.h", - "line": 90, - "lineto": 90, + "file": "git2/repository.h", + "line": 951, + "lineto": 951, "args": [ + { "name": "repo", "type": "git_repository *", "comment": "The repo" }, { - "name": "walker", - "type": "git_revwalk *", - "comment": "handle to reset." - } - ], - "argline": "git_revwalk *walker", - "sig": "git_revwalk *", - "return": { - "type": "void", - "comment": null - }, - "description": "Reset the revision walker for reuse.
\n", - "comments": "This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.
\n\nThe revision walk is automatically reset when a walk is over.
\n", - "group": "revwalk" - }, - "git_revwalk_push": { - "type": "function", - "file": "revwalk.h", - "line": 109, - "lineto": 109, - "args": [ - { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal." - }, - { - "name": "id", - "type": "const git_oid *", - "comment": "the oid of the commit to start from." + "name": "nmspace", + "type": "const char *", + "comment": "The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace." } ], - "argline": "git_revwalk *walk, const git_oid *id", - "sig": "git_revwalk *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Add a new root for the traversal
\n", - "comments": "The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.
\n\nAt least one commit must be pushed onto the walker before a walk can be started.
\n\nThe given id must belong to a committish on the walked repository.
\n", - "group": "revwalk", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_revwalk_push-63" - ], - "log.c": [ - "ex/HEAD/log.html#git_revwalk_push-51" - ] - } + "argline": "git_repository *repo, const char *nmspace", + "sig": "git_repository *::const char *", + "return": { "type": "int", "comment": " 0 on success, -1 on error" }, + "description": "Sets the active namespace for this Git Repository
\n", + "comments": "This namespace affects all reference operations for the repo. See man gitnamespaces
Push matching references
\n", - "comments": "The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.
\n\nA leading 'refs/' is implied if not present as well as a trailing '/*' if the glob lacks '?', '*' or '['.
\n\nAny references matching this glob which do not point to a committish will be ignored.
\n", - "group": "revwalk" + "description": "Get the currently active namespace for this repository
\n", + "comments": "", + "group": "repository" }, - "git_revwalk_push_head": { + "git_repository_is_shallow": { "type": "function", - "file": "revwalk.h", - "line": 135, - "lineto": 135, + "file": "git2/repository.h", + "line": 968, + "lineto": 968, "args": [ { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal" + "name": "repo", + "type": "git_repository *", + "comment": "The repository" } ], - "argline": "git_revwalk *walk", - "sig": "git_revwalk *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Push the repository's HEAD
\n", + "argline": "git_repository *repo", + "sig": "git_repository *", + "return": { "type": "int", "comment": " 1 if shallow, zero if not" }, + "description": "Determine if the repository was a shallow clone
\n", "comments": "", - "group": "revwalk", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_revwalk_push_head-52" - ] - } + "group": "repository" }, - "git_revwalk_hide": { + "git_repository_ident": { "type": "function", - "file": "revwalk.h", - "line": 150, - "lineto": 150, + "file": "git2/repository.h", + "line": 981, + "lineto": 981, "args": [ { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal." + "name": "name", + "type": "const char **", + "comment": "where to store the pointer to the name" }, { - "name": "commit_id", - "type": "const git_oid *", - "comment": "the oid of commit that will be ignored during the traversal" + "name": "email", + "type": "const char **", + "comment": "where to store the pointer to the email" + }, + { + "name": "repo", + "type": "const git_repository *", + "comment": "the repository" } ], - "argline": "git_revwalk *walk, const git_oid *commit_id", - "sig": "git_revwalk *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Mark a commit (and its ancestors) uninteresting for the output.
\n", - "comments": "The given id must belong to a committish on the walked repository.
\n\nThe resolved commit and all its parents will be hidden from the output on the revision walk.
\n", - "group": "revwalk", - "examples": { - "log.c": [ - "ex/HEAD/log.html#git_revwalk_hide-53" - ] - } + "argline": "const char **name, const char **email, const git_repository *repo", + "sig": "const char **::const char **::const git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Retrieve the configured identity to use for reflogs
\n", + "comments": "The memory is owned by the repository and must not be freed by the user.
\n", + "group": "repository" }, - "git_revwalk_hide_glob": { + "git_repository_set_ident": { "type": "function", - "file": "revwalk.h", - "line": 169, - "lineto": 169, + "file": "git2/repository.h", + "line": 995, + "lineto": 995, "args": [ { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal" + "name": "repo", + "type": "git_repository *", + "comment": "the repository to configure" }, { - "name": "glob", + "name": "name", "type": "const char *", - "comment": "the glob pattern references should match" + "comment": "the name to use for the reflog entries" + }, + { + "name": "email", + "type": "const char *", + "comment": "the email to use for the reflog entries" } ], - "argline": "git_revwalk *walk, const char *glob", - "sig": "git_revwalk *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Hide matching references.
\n", - "comments": "The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.
\n\nA leading 'refs/' is implied if not present as well as a trailing '/*' if the glob lacks '?', '*' or '['.
\n\nAny references matching this glob which do not point to a committish will be ignored.
\n", - "group": "revwalk" + "argline": "git_repository *repo, const char *name, const char *email", + "sig": "git_repository *::const char *::const char *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Set the identity to be used for writing reflogs
\n", + "comments": "If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository's configuration.
\n", + "group": "repository" }, - "git_revwalk_hide_head": { + "git_repository_oid_type": { "type": "function", - "file": "revwalk.h", - "line": 177, - "lineto": 177, + "file": "git2/repository.h", + "line": 1003, + "lineto": 1003, "args": [ { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal" + "name": "repo", + "type": "git_repository *", + "comment": "the repository" } ], - "argline": "git_revwalk *walk", - "sig": "git_revwalk *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Hide the repository's HEAD
\n", + "argline": "git_repository *repo", + "sig": "git_repository *", + "return": { "type": "git_oid_t", "comment": " the object id type" }, + "description": "Gets the object type used by this repository.
\n", "comments": "", - "group": "revwalk" + "group": "repository" }, - "git_revwalk_push_ref": { + "git_repository_commit_parents": { "type": "function", - "file": "revwalk.h", - "line": 188, - "lineto": 188, + "file": "git2/repository.h", + "line": 1014, + "lineto": 1014, "args": [ { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal" + "name": "commits", + "type": "git_commitarray *", + "comment": "a `git_commitarray` that will contain the commit parents" }, { - "name": "refname", - "type": "const char *", - "comment": "the reference to push" + "name": "repo", + "type": "git_repository *", + "comment": "the repository" } ], - "argline": "git_revwalk *walk, const char *refname", - "sig": "git_revwalk *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Push the OID pointed to by a reference
\n", - "comments": "The reference must point to a committish.
\n", - "group": "revwalk" + "argline": "git_commitarray *commits, git_repository *repo", + "sig": "git_commitarray *::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Gets the parents of the next commit, given the current repository state.\n Generally, this is the HEAD commit, except when performing a merge, in\n which case it is two or more commits.
\n", + "comments": "", + "group": "repository" }, - "git_revwalk_hide_ref": { + "git_reset": { "type": "function", - "file": "revwalk.h", - "line": 199, - "lineto": 199, + "file": "git2/reset.h", + "line": 62, + "lineto": 66, "args": [ { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal" + "name": "repo", + "type": "git_repository *", + "comment": "Repository where to perform the reset operation." }, { - "name": "refname", - "type": "const char *", - "comment": "the reference to hide" + "name": "target", + "type": "const git_object *", + "comment": "Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferenceable\n to a git_commit which oid will be used as the target of the branch." + }, + { + "name": "reset_type", + "type": "git_reset_t", + "comment": "Kind of reset operation to perform." + }, + { + "name": "checkout_opts", + "type": "const git_checkout_options *", + "comment": "Optional checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks." } ], - "argline": "git_revwalk *walk, const char *refname", - "sig": "git_revwalk *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Hide the OID pointed to by a reference
\n", - "comments": "The reference must point to a committish.
\n", - "group": "revwalk" + "argline": "git_repository *repo, const git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts", + "sig": "git_repository *::const git_object *::git_reset_t::const git_checkout_options *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.
\n", + "comments": "SOFT reset means the Head will be moved to the commit.
\n\nMIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.
\n\nHARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index. (Untracked and ignored files will be left alone, however.)
\n\nTODO: Implement remaining kinds of resets.
\n", + "group": "reset" }, - "git_revwalk_next": { + "git_reset_from_annotated": { "type": "function", - "file": "revwalk.h", - "line": 219, - "lineto": 219, + "file": "git2/reset.h", + "line": 92, + "lineto": 96, "args": [ { - "name": "out", - "type": "git_oid *", - "comment": "Pointer where to store the oid of the next commit" + "name": "repo", + "type": "git_repository *", + "comment": "Repository where to perform the reset operation." }, { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker to pop the commit from." - } - ], - "argline": "git_oid *out, git_revwalk *walk", - "sig": "git_oid *::git_revwalk *", - "return": { - "type": "int", - "comment": " 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate" - }, - "description": "Get the next commit from the revision walk.
\n", - "comments": "The initial call to this method is not blocking when iterating through a repo with a time-sorting mode.
\n\nIterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).
\n\nThe revision walker is reset when the walk is over.
\n", - "group": "revwalk", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_revwalk_next-64" - ], - "log.c": [ - "ex/HEAD/log.html#git_revwalk_next-54" - ] - } - }, - "git_revwalk_sorting": { - "type": "function", - "file": "revwalk.h", - "line": 230, - "lineto": 230, - "args": [ + "name": "target", + "type": "const git_annotated_commit *", + "comment": "Annotated commit to which the Head should be moved to.\n This object must belong to the given `repo`, it will be dereferenced\n to a git_commit which oid will be used as the target of the branch." + }, { - "name": "walk", - "type": "git_revwalk *", - "comment": "the walker being used for the traversal." + "name": "reset_type", + "type": "git_reset_t", + "comment": "Kind of reset operation to perform." }, { - "name": "sort_mode", - "type": "unsigned int", - "comment": "combination of GIT_SORT_XXX flags" + "name": "checkout_opts", + "type": "const git_checkout_options *", + "comment": "Optional checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks." } ], - "argline": "git_revwalk *walk, unsigned int sort_mode", - "sig": "git_revwalk *::unsigned int", - "return": { - "type": "void", - "comment": null - }, - "description": "Change the sorting mode when iterating through the\n repository's contents.
\n", - "comments": "Changing the sorting mode resets the walker.
\n", - "group": "revwalk", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_revwalk_sorting-65" - ], - "log.c": [ - "ex/HEAD/log.html#git_revwalk_sorting-55", - "ex/HEAD/log.html#git_revwalk_sorting-56" - ] - } + "argline": "git_repository *repo, const git_annotated_commit *target, git_reset_t reset_type, const git_checkout_options *checkout_opts", + "sig": "git_repository *::const git_annotated_commit *::git_reset_t::const git_checkout_options *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.
\n", + "comments": "This behaves like git_reset() but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.
See the documentation for git_reset().
Push and hide the respective endpoints of the given range.
\n", - "comments": "The range should be of the form
Updates some entries in the index from the target commit tree.
\n", + "comments": "The scope of the updated entries is determined by the paths being passed in the pathspec parameters.
Passing a NULL target will result in removing entries in the index matching the provided pathspecs.
Simplify the history by first-parent
\n", - "comments": "No parents other than the first for each commit will be enqueued.
\n", - "group": "revwalk" - }, - "git_revwalk_free": { - "type": "function", - "file": "revwalk.h", - "line": 260, - "lineto": 260, - "args": [ + "name": "opts", + "type": "git_revert_options *", + "comment": "The `git_revert_options` struct to initialize." + }, { - "name": "walk", - "type": "git_revwalk *", - "comment": "traversal handle to close. If NULL nothing occurs." + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_REVERT_OPTIONS_VERSION`." } ], - "argline": "git_revwalk *walk", - "sig": "git_revwalk *", + "argline": "git_revert_options *opts, unsigned int version", + "sig": "git_revert_options *::unsigned int", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " Zero on success; -1 on failure." }, - "description": "Free a revision walker previously allocated.
\n", - "comments": "", - "group": "revwalk", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_revwalk_free-66" - ], - "log.c": [ - "ex/HEAD/log.html#git_revwalk_free-57" - ] - } + "description": "Initialize git_revert_options structure
\n", + "comments": "Initializes a git_revert_options with default values. Equivalent to creating an instance with GIT_REVERT_OPTIONS_INIT.
Return the repository on which this walker\n is operating.
\n", - "comments": "", - "group": "revwalk" + "description": "Reverts the given commit against the given "our" commit, producing an\n index that reflects the result of the revert.
\n", + "comments": "The returned index must be freed explicitly with git_index_free.
Adds a callback function to hide a commit and its parents
\n", + "description": "Reverts the given commit, producing changes in the index and working directory.
\n", "comments": "", - "group": "revwalk" + "group": "revert" }, - "git_signature_new": { + "git_revparse_single": { "type": "function", - "file": "signature.h", + "file": "git2/revparse.h", "line": 37, - "lineto": 37, + "lineto": 38, "args": [ { "name": "out", - "type": "git_signature **", - "comment": "new signature, in case of error NULL" + "type": "git_object **", + "comment": "pointer to output object" }, { - "name": "name", - "type": "const char *", - "comment": "name of the person" + "name": "repo", + "type": "git_repository *", + "comment": "the repository to search in" }, { - "name": "email", + "name": "spec", "type": "const char *", - "comment": "email of the person" - }, - { - "name": "time", - "type": "git_time_t", - "comment": "time when the action happened" - }, - { - "name": "offset", - "type": "int", - "comment": "timezone offset in minutes for the time" + "comment": "the textual specification for an object" } ], - "argline": "git_signature **out, const char *name, const char *email, git_time_t time, int offset", - "sig": "git_signature **::const char *::const char *::git_time_t::int", + "argline": "git_object **out, git_repository *repo, const char *spec", + "sig": "git_object **::git_repository *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code" }, - "description": "Create a new action signature.
\n", - "comments": "Call git_signature_free() to free the data.
Note: angle brackets ('<' and '>') characters are not allowed to be used in either the name or the email parameter.
Find a single object, as specified by a revision string.
\n", + "comments": "See man gitrevisions, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
The returned object should be released with git_object_free when no longer needed.
Create a new action signature with a timestamp of 'now'.
\n", - "comments": "Call git_signature_free() to free the data.
Find a single object and intermediate reference by a revision string.
\n", + "comments": "See man gitrevisions, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
In some cases (@{<-n>} or <branchname>@{upstream}), the expression may point to an intermediate reference. When such expressions are being passed in, reference_out will be valued as well.
The returned object should be released with git_object_free and the returned reference with git_reference_free when no longer needed.
Create a new action signature with default user and now timestamp.
\n", - "comments": "This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information. It will return GIT_ENOTFOUND if either the user.name or user.email are not set.
\n", - "group": "signature", + "description": "Parse a revision string for from, to, and intent.
See man gitrevisions or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
Create a copy of an existing signature. All internal strings are also\n duplicated.
\n", - "comments": "Call git_signature_free() to free the data.
Free an existing signature.
\n", - "comments": "Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the "name" and "email" strings in addition to the structure itself.
\n", - "group": "signature", + "argline": "git_revwalk **out, git_repository *repo", + "sig": "git_revwalk **::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Allocate a new revision walker to iterate through a repo.
\n", + "comments": "This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.
\n\nFor maximum performance, this revision walker should be reused for different walks.
\n\nThis revision walker is not thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.
\n", + "group": "revwalk", "examples": { - "init.c": [ - "ex/HEAD/init.html#git_signature_free-13" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_signature_free-18" + "general.c": ["ex/v1.9.1/general.html#git_revwalk_new-81"], + "log.c": [ + "ex/v1.9.1/log.html#git_revwalk_new-46", + "ex/v1.9.1/log.html#git_revwalk_new-47" ] } }, - "git_stash_apply_init_options": { + "git_revwalk_reset": { "type": "function", - "file": "stash.h", - "line": 153, - "lineto": 154, + "file": "git2/revwalk.h", + "line": 89, + "lineto": 89, "args": [ { - "name": "opts", - "type": "git_stash_apply_options *", - "comment": "the `git_stash_apply_options` instance to initialize." - }, - { - "name": "version", - "type": "unsigned int", - "comment": "the version of the struct; you should pass\n `GIT_STASH_APPLY_OPTIONS_INIT` here." + "name": "walker", + "type": "git_revwalk *", + "comment": "handle to reset." } ], - "argline": "git_stash_apply_options *opts, unsigned int version", - "sig": "git_stash_apply_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_stash_apply_options with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.
Reset the revision walker for reuse.
\n", + "comments": "This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.
\n\nThe revision walk is automatically reset when a walk is over.
\n", + "group": "revwalk" }, - "git_stash_apply": { + "git_revwalk_push": { "type": "function", - "file": "stash.h", - "line": 182, - "lineto": 185, + "file": "git2/revwalk.h", + "line": 108, + "lineto": 108, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "The owning repository." - }, - { - "name": "index", - "type": "size_t", - "comment": "The position within the stash list. 0 points to the\n most recent stashed state." + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal." }, { - "name": "options", - "type": "const git_stash_apply_options *", - "comment": "Options to control how stashes are applied." + "name": "id", + "type": "const git_oid *", + "comment": "the oid of the commit to start from." } ], - "argline": "git_repository *repo, size_t index, const git_stash_apply_options *options", - "sig": "git_repository *::size_t::const git_stash_apply_options *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n given index, GIT_EMERGECONFLICT if changes exist in the working\n directory, or an error code" - }, - "description": "Apply a single stashed state from the stash list.
\n", - "comments": "If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned. In this case, the index will always remain unmodified and all files in the working directory will remain unmodified. However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.
\n\nIf passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.
\n\nNote that a minimum checkout strategy of GIT_CHECKOUT_SAFE is implied.
Add a new root for the traversal
\n", + "comments": "The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.
\n\nAt least one commit must be pushed onto the walker before a walk can be started.
\n\nThe given id must belong to a committish on the walked repository.
\n", + "group": "revwalk", + "examples": { + "general.c": ["ex/v1.9.1/general.html#git_revwalk_push-82"], + "log.c": ["ex/v1.9.1/log.html#git_revwalk_push-48"] + } }, - "git_stash_foreach": { + "git_revwalk_push_glob": { "type": "function", - "file": "stash.h", - "line": 218, - "lineto": 221, + "file": "git2/revwalk.h", + "line": 126, + "lineto": 126, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where to find the stash." - }, - { - "name": "callback", - "type": "git_stash_cb", - "comment": "Callback to invoke per found stashed state. The most\n recent stash state will be enumerated first." + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" }, { - "name": "payload", - "type": "void *", - "comment": "Extra parameter to callback function." + "name": "glob", + "type": "const char *", + "comment": "the glob pattern references should match" } ], - "argline": "git_repository *repo, git_stash_cb callback, void *payload", - "sig": "git_repository *::git_stash_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code." - }, - "description": "Loop over all the stashed states and issue a callback for each one.
\n", - "comments": "If the callback returns a non-zero value, this will stop looping.
\n", - "group": "stash" + "argline": "git_revwalk *walk, const char *glob", + "sig": "git_revwalk *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Push matching references
\n", + "comments": "The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.
\n\nA leading 'refs/' is implied if not present as well as a trailing '/*' if the glob lacks '?', '*' or '['.
\n\nAny references matching this glob which do not point to a committish will be ignored.
\n", + "group": "revwalk" }, - "git_stash_drop": { + "git_revwalk_push_head": { "type": "function", - "file": "stash.h", - "line": 234, - "lineto": 236, + "file": "git2/revwalk.h", + "line": 134, + "lineto": 134, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "The owning repository." - }, - { - "name": "index", - "type": "size_t", - "comment": "The position within the stash list. 0 points to the\n most recent stashed state." + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" } ], - "argline": "git_repository *repo, size_t index", - "sig": "git_repository *::size_t", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code." - }, - "description": "Remove a single stashed state from the stash list.
\n", + "argline": "git_revwalk *walk", + "sig": "git_revwalk *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Push the repository's HEAD
\n", "comments": "", - "group": "stash" + "group": "revwalk", + "examples": { "log.c": ["ex/v1.9.1/log.html#git_revwalk_push_head-49"] } }, - "git_stash_pop": { + "git_revwalk_hide": { "type": "function", - "file": "stash.h", - "line": 250, - "lineto": 253, + "file": "git2/revwalk.h", + "line": 149, + "lineto": 149, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "The owning repository." + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal." }, { - "name": "index", - "type": "size_t", - "comment": "The position within the stash list. 0 points to the\n most recent stashed state." - }, - { - "name": "options", - "type": "const git_stash_apply_options *", - "comment": "Options to control how stashes are applied." + "name": "commit_id", + "type": "const git_oid *", + "comment": "the oid of commit that will be ignored during the traversal" } ], - "argline": "git_repository *repo, size_t index, const git_stash_apply_options *options", - "sig": "git_repository *::size_t::const git_stash_apply_options *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)" - }, - "description": "Apply a single stashed state from the stash list and remove it from the list\n if successful.
\n", - "comments": "", - "group": "stash" + "argline": "git_revwalk *walk, const git_oid *commit_id", + "sig": "git_revwalk *::const git_oid *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Mark a commit (and its ancestors) uninteresting for the output.
\n", + "comments": "The given id must belong to a committish on the walked repository.
\n\nThe resolved commit and all its parents will be hidden from the output on the revision walk.
\n", + "group": "revwalk", + "examples": { "log.c": ["ex/v1.9.1/log.html#git_revwalk_hide-50"] } }, - "git_status_init_options": { + "git_revwalk_hide_glob": { "type": "function", - "file": "status.h", - "line": 195, - "lineto": 197, + "file": "git2/revwalk.h", + "line": 168, + "lineto": 168, "args": [ { - "name": "opts", - "type": "git_status_options *", - "comment": "The `git_status_options` instance to initialize." + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" }, { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`" + "name": "glob", + "type": "const char *", + "comment": "the glob pattern references should match" } ], - "argline": "git_status_options *opts, unsigned int version", - "sig": "git_status_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_status_options with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.
Hide matching references.
\n", + "comments": "The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.
\n\nA leading 'refs/' is implied if not present as well as a trailing '/*' if the glob lacks '?', '*' or '['.
\n\nAny references matching this glob which do not point to a committish will be ignored.
\n", + "group": "revwalk" }, - "git_status_foreach": { + "git_revwalk_hide_head": { "type": "function", - "file": "status.h", - "line": 235, - "lineto": 238, + "file": "git2/revwalk.h", + "line": 176, + "lineto": 176, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "A repository object" - }, - { - "name": "callback", - "type": "git_status_cb", - "comment": "The function to call on each file" - }, - { - "name": "payload", - "type": "void *", - "comment": "Pointer to pass through to callback function" + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" } ], - "argline": "git_repository *repo, git_status_cb callback, void *payload", - "sig": "git_repository *::git_status_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" - }, - "description": "Gather file statuses and run a callback for each one.
\n", - "comments": "The callback is passed the path of the file, the status (a combination of the git_status_t values above) and the payload data pointer passed into this function.
If the callback returns a non-zero value, this function will stop looping and return that value to caller.
\n", - "group": "status", - "examples": { - "status.c": [ - "ex/HEAD/status.html#git_status_foreach-10" - ] - } + "argline": "git_revwalk *walk", + "sig": "git_revwalk *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Hide the repository's HEAD
\n", + "comments": "", + "group": "revwalk" }, - "git_status_foreach_ext": { + "git_revwalk_push_ref": { "type": "function", - "file": "status.h", - "line": 259, - "lineto": 263, + "file": "git2/revwalk.h", + "line": 187, + "lineto": 187, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "Repository object" - }, - { - "name": "opts", - "type": "const git_status_options *", - "comment": "Status options structure" - }, - { - "name": "callback", - "type": "git_status_cb", - "comment": "The function to call on each file" + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" }, { - "name": "payload", - "type": "void *", - "comment": "Pointer to pass through to callback function" + "name": "refname", + "type": "const char *", + "comment": "the reference to push" } ], - "argline": "git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload", - "sig": "git_repository *::const git_status_options *::git_status_cb::void *", - "return": { - "type": "int", - "comment": " 0 on success, non-zero callback return value, or error code" - }, - "description": "Gather file status information and run callbacks as requested.
\n", - "comments": "This is an extended version of the git_status_foreach() API that allows for more granular control over which paths will be processed and in what order. See the git_status_options structure for details about the additional controls that this makes available.
Note that if a pathspec is given in the git_status_options to filter the status, then the results from rename detection (if you enable it) may not be accurate. To do rename detection properly, this must be called with no pathspec so that all files can be considered.
Push the OID pointed to by a reference
\n", + "comments": "The reference must point to a committish.
\n", + "group": "revwalk" }, - "git_status_file": { + "git_revwalk_hide_ref": { "type": "function", - "file": "status.h", - "line": 291, - "lineto": 294, + "file": "git2/revwalk.h", + "line": 198, + "lineto": 198, "args": [ { - "name": "status_flags", - "type": "unsigned int *", - "comment": "Output combination of git_status_t values for file" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "A repository object" + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" }, { - "name": "path", + "name": "refname", "type": "const char *", - "comment": "The exact path to retrieve status for relative to the\n repository working directory" + "comment": "the reference to hide" } ], - "argline": "unsigned int *status_flags, git_repository *repo, const char *path", - "sig": "unsigned int *::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n or if it refers to a folder, and -1 on other errors." - }, - "description": "Get file status for a single file.
\n", - "comments": "This tries to get status for the filename that you give. If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.
\n\nIf the name matches multiple files (for example, if the path names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.
This does not do any sort of rename detection. Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly. To check file status with rename detection, there is no choice but to do a full git_status_list_new and scan through looking for the path that you are interested in.
Hide the OID pointed to by a reference
\n", + "comments": "The reference must point to a committish.
\n", + "group": "revwalk" }, - "git_status_list_new": { + "git_revwalk_next": { "type": "function", - "file": "status.h", - "line": 309, - "lineto": 312, + "file": "git2/revwalk.h", + "line": 218, + "lineto": 218, "args": [ { "name": "out", - "type": "git_status_list **", - "comment": "Pointer to store the status results in" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository object" + "type": "git_oid *", + "comment": "Pointer where to store the oid of the next commit" }, { - "name": "opts", - "type": "const git_status_options *", - "comment": "Status options structure" + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker to pop the commit from." } ], - "argline": "git_status_list **out, git_repository *repo, const git_status_options *opts", - "sig": "git_status_list **::git_repository *::const git_status_options *", + "argline": "git_oid *out, git_revwalk *walk", + "sig": "git_oid *::git_revwalk *", "return": { "type": "int", - "comment": " 0 on success or error code" + "comment": " 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate" }, - "description": "Gather file status information and populate the git_status_list.
Note that if a pathspec is given in the git_status_options to filter the status, then the results from rename detection (if you enable it) may not be accurate. To do rename detection properly, this must be called with no pathspec so that all files can be considered.
Get the next commit from the revision walk.
\n", + "comments": "The initial call to this method is not blocking when iterating through a repo with a time-sorting mode.
\n\nIterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).
\n\nThe revision walker is reset when the walk is over.
\n", + "group": "revwalk", "examples": { - "status.c": [ - "ex/HEAD/status.html#git_status_list_new-12", - "ex/HEAD/status.html#git_status_list_new-13" - ] + "general.c": ["ex/v1.9.1/general.html#git_revwalk_next-83"], + "log.c": ["ex/v1.9.1/log.html#git_revwalk_next-51"] } }, - "git_status_list_entrycount": { + "git_revwalk_sorting": { "type": "function", - "file": "status.h", - "line": 323, - "lineto": 324, + "file": "git2/revwalk.h", + "line": 230, + "lineto": 230, "args": [ { - "name": "statuslist", - "type": "git_status_list *", - "comment": "Existing status list object" + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal." + }, + { + "name": "sort_mode", + "type": "unsigned int", + "comment": "combination of GIT_SORT_XXX flags" } ], - "argline": "git_status_list *statuslist", - "sig": "git_status_list *", - "return": { - "type": "size_t", - "comment": " the number of status entries" - }, - "description": "Gets the count of status entries in this list.
\n", - "comments": "If there are no changes in status (at least according the options given when the status list was created), this can return 0.
\n", - "group": "status", + "argline": "git_revwalk *walk, unsigned int sort_mode", + "sig": "git_revwalk *::unsigned int", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Change the sorting mode when iterating through the\n repository's contents.
\n", + "comments": "Changing the sorting mode resets the walker.
\n", + "group": "revwalk", "examples": { - "status.c": [ - "ex/HEAD/status.html#git_status_list_entrycount-14", - "ex/HEAD/status.html#git_status_list_entrycount-15" + "general.c": ["ex/v1.9.1/general.html#git_revwalk_sorting-84"], + "log.c": [ + "ex/v1.9.1/log.html#git_revwalk_sorting-52", + "ex/v1.9.1/log.html#git_revwalk_sorting-53" ] } }, - "git_status_byindex": { + "git_revwalk_push_range": { "type": "function", - "file": "status.h", - "line": 335, - "lineto": 337, + "file": "git2/revwalk.h", + "line": 245, + "lineto": 245, "args": [ { - "name": "statuslist", - "type": "git_status_list *", - "comment": "Existing status list object" + "name": "walk", + "type": "git_revwalk *", + "comment": "the walker being used for the traversal" }, - { - "name": "idx", - "type": "size_t", - "comment": "Position of the entry" - } + { "name": "range", "type": "const char *", "comment": "the range" } ], - "argline": "git_status_list *statuslist, size_t idx", - "sig": "git_status_list *::size_t", - "return": { - "type": "const git_status_entry *", - "comment": " Pointer to the entry; NULL if out of bounds" - }, - "description": "Get a pointer to one of the entries in the status list.
\n", - "comments": "The entry is not modifiable and should not be freed.
\n", - "group": "status", + "argline": "git_revwalk *walk, const char *range", + "sig": "git_revwalk *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Push and hide the respective endpoints of the given range.
\n", + "comments": "The range should be of the form
Simplify the history by first-parent
\n", + "comments": "No parents other than the first for each commit will be enqueued.
\n", + "group": "revwalk" + }, + "git_revwalk_free": { + "type": "function", + "file": "git2/revwalk.h", + "line": 263, + "lineto": 263, + "args": [ + { + "name": "walk", + "type": "git_revwalk *", + "comment": "traversal handle to close. If NULL nothing occurs." + } + ], + "argline": "git_revwalk *walk", + "sig": "git_revwalk *", + "return": { "type": "void", "comment": null }, + "description": "Free a revision walker previously allocated.
\n", + "comments": "", + "group": "revwalk", "examples": { - "status.c": [ - "ex/HEAD/status.html#git_status_byindex-16", - "ex/HEAD/status.html#git_status_byindex-17", - "ex/HEAD/status.html#git_status_byindex-18", - "ex/HEAD/status.html#git_status_byindex-19", - "ex/HEAD/status.html#git_status_byindex-20", - "ex/HEAD/status.html#git_status_byindex-21" - ] + "general.c": ["ex/v1.9.1/general.html#git_revwalk_free-85"], + "log.c": ["ex/v1.9.1/log.html#git_revwalk_free-54"] } }, - "git_status_list_free": { + "git_revwalk_repository": { "type": "function", - "file": "status.h", - "line": 344, - "lineto": 345, + "file": "git2/revwalk.h", + "line": 272, + "lineto": 272, "args": [ { - "name": "statuslist", - "type": "git_status_list *", - "comment": "Existing status list object" + "name": "walk", + "type": "git_revwalk *", + "comment": "the revision walker" } ], - "argline": "git_status_list *statuslist", - "sig": "git_status_list *", + "argline": "git_revwalk *walk", + "sig": "git_revwalk *", "return": { - "type": "void", - "comment": null + "type": "git_repository *", + "comment": " the repository being walked" }, - "description": "Free an existing status list
\n", + "description": "Return the repository on which this walker\n is operating.
\n", "comments": "", - "group": "status", - "examples": { - "status.c": [ - "ex/HEAD/status.html#git_status_list_free-22" - ] - } + "group": "revwalk" }, - "git_status_should_ignore": { + "git_revwalk_add_hide_cb": { "type": "function", - "file": "status.h", - "line": 363, - "lineto": 366, + "file": "git2/revwalk.h", + "line": 295, + "lineto": 298, "args": [ { - "name": "ignored", - "type": "int *", - "comment": "Boolean returning 0 if the file is not ignored, 1 if it is" + "name": "walk", + "type": "git_revwalk *", + "comment": "the revision walker" }, { - "name": "repo", - "type": "git_repository *", - "comment": "A repository object" + "name": "hide_cb", + "type": "git_revwalk_hide_cb", + "comment": "callback function to hide a commit and its parents" }, { - "name": "path", - "type": "const char *", - "comment": "The file to check ignores for, rooted at the repo's workdir." + "name": "payload", + "type": "void *", + "comment": "data payload to be passed to callback function" } ], - "argline": "int *ignored, git_repository *repo, const char *path", - "sig": "int *::git_repository *::const char *", - "return": { - "type": "int", - "comment": " 0 if ignore rules could be processed for the file (regardless\n of whether it exists or not), or an error \n<\n 0 if they could not." - }, - "description": "Test if the ignore rules apply to a given file.
\n", - "comments": "This function checks the ignore rules to see if they would apply to the given file. This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.
\n\nOne way to think of this is if you were to do "git add ." on the directory containing the file, would it be added or not?
\n", - "group": "status" + "argline": "git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload", + "sig": "git_revwalk *::git_revwalk_hide_cb::void *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Adds, changes or removes a callback function to hide a commit and its parents
\n", + "comments": "", + "group": "revwalk" }, - "git_strarray_free": { + "git_signature_new": { "type": "function", - "file": "strarray.h", + "file": "git2/signature.h", "line": 41, "lineto": 41, "args": [ { - "name": "array", - "type": "git_strarray *", - "comment": "git_strarray from which to free string data" + "name": "out", + "type": "git_signature **", + "comment": "new signature, in case of error NULL" + }, + { + "name": "name", + "type": "const char *", + "comment": "name of the person" + }, + { + "name": "email", + "type": "const char *", + "comment": "email of the person" + }, + { + "name": "time", + "type": "git_time_t", + "comment": "time (in seconds from epoch) when the action happened" + }, + { + "name": "offset", + "type": "int", + "comment": "timezone offset (in minutes) for the time" } ], - "argline": "git_strarray *array", - "sig": "git_strarray *", - "return": { - "type": "void", - "comment": null - }, - "description": "Close a string array object
\n", - "comments": "This method should be called on git_strarray objects where the strings array is allocated and contains allocated strings, such as what you would get from git_strarray_copy(). Not doing so, will result in a memory leak.
This does not free the git_strarray itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).
Create a new action signature.
\n", + "comments": "Call git_signature_free() to free the data.
Note: angle brackets ('<' and '>') characters are not allowed to be used in either the name or the email parameter.
Copy a string array object from source to target.
\n", - "comments": "Note: target is overwritten and hence should be empty, otherwise its contents are leaked. Call git_strarray_free() if necessary.
\n", - "group": "strarray" - }, - "git_submodule_update_init_options": { - "type": "function", - "file": "submodule.h", - "line": 173, - "lineto": 174, - "args": [ - { - "name": "opts", - "type": "git_submodule_update_options *", - "comment": "The `git_submodule_update_options` instance to initialize." + "name": "name", + "type": "const char *", + "comment": "name of the person" }, { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`" + "name": "email", + "type": "const char *", + "comment": "email of the person" } ], - "argline": "git_submodule_update_options *opts, unsigned int version", - "sig": "git_submodule_update_options *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_submodule_update_options with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.
Create a new action signature with a timestamp of 'now'.
\n", + "comments": "Call git_signature_free() to free the data.
Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.
\n", - "comments": "", - "group": "submodule" + "description": "Create a new author and/or committer signatures with default\n information based on the configuration and environment variables.
\n", + "comments": "If author_out is set, it will be populated with the author information. The GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL environment variables will be honored, and user.name and user.email configuration options will be honored if the environment variables are unset. For timestamps, GIT_AUTHOR_DATE will be used, otherwise the current time will be used.
If committer_out is set, it will be populated with the committer information. The GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL environment variables will be honored, and user.name and user.email configuration options will be honored if the environment variables are unset. For timestamps, GIT_COMMITTER_DATE will be used, otherwise the current time will be used.
If neither GIT_AUTHOR_DATE nor GIT_COMMITTER_DATE are set, both timestamps will be set to the same time.
It will return GIT_ENOTFOUND if either the user.name or user.email are not set and there is no fallback from an environment variable. One of author_out or committer_out must be set.
Lookup submodule information by name or path.
\n", - "comments": "Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.
\n\nThere are two expected error scenarios:
\n\nYou must call git_submodule_free when done with the submodule.
Create a new action signature with default user and now timestamp.
\n", + "comments": "This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information. It will return GIT_ENOTFOUND if either the user.name or user.email are not set.
\n\nNote that these do not examine environment variables, only the configuration files. Use git_signature_default_from_env to consider the environment variables.
Release a submodule
\n", + "description": "Create a new signature by parsing the given buffer, which is\n expected to be in the format "Real Name \n<email
\n\n\n\n", "comments": "", - "group": "submodule" + "group": "signature" }, - "git_submodule_foreach": { + "git_signature_dup": { "type": "function", - "file": "submodule.h", - "line": 251, - "lineto": 254, + "file": "git2/signature.h", + "line": 132, + "lineto": 132, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "The repository" + "name": "dest", + "type": "git_signature **", + "comment": "pointer where to store the copy" }, { - "name": "callback", - "type": "git_submodule_cb", - "comment": "Function to be called with the name of each submodule.\n Return a non-zero value to terminate the iteration." - }, + "name": "sig", + "type": "const git_signature *", + "comment": "signature to duplicate" + } + ], + "argline": "git_signature **dest, const git_signature *sig", + "sig": "git_signature **::const git_signature *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "timestamp tzoffset",\n where
\ntimestampis the number of seconds since the Unix epoch and\ntzoffsetis the timezone offset inhhmmformat (note the lack\n of a colon separator).
Create a copy of an existing signature. All internal strings are also\n duplicated.
\n", + "comments": "Call git_signature_free() to free the data.
Iterate over all tracked submodules of a repository.
\n", - "comments": "See the note on git_submodule above. This iterates over the tracked submodules as described therein.
If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir. Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.
\n", - "group": "submodule", + "argline": "git_signature *sig", + "sig": "git_signature *", + "return": { "type": "void", "comment": null }, + "description": "Free an existing signature.
\n", + "comments": "Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the "name" and "email" strings in addition to the structure itself.
\n", + "group": "signature", "examples": { - "status.c": [ - "ex/HEAD/status.html#git_submodule_foreach-23" - ] + "commit.c": [ + "ex/v1.9.1/commit.html#git_signature_free-11", + "ex/v1.9.1/commit.html#git_signature_free-12" + ], + "general.c": [ + "ex/v1.9.1/general.html#git_signature_free-88", + "ex/v1.9.1/general.html#git_signature_free-89" + ], + "init.c": [ + "ex/v1.9.1/init.html#git_signature_free-11", + "ex/v1.9.1/init.html#git_signature_free-12" + ], + "tag.c": ["ex/v1.9.1/tag.html#git_signature_free-14"] } }, - "git_submodule_add_setup": { + "git_stash_save": { "type": "function", - "file": "submodule.h", - "line": 281, - "lineto": 286, + "file": "git2/stash.h", + "line": 72, + "lineto": 77, "args": [ { "name": "out", - "type": "git_submodule **", - "comment": "The newly created submodule ready to open for clone" + "type": "git_oid *", + "comment": "Object id of the commit containing the stashed state.\n This commit is also the target of the direct reference refs/stash." }, { "name": "repo", "type": "git_repository *", - "comment": "The repository in which you want to create the submodule" + "comment": "The owning repository." }, { - "name": "url", - "type": "const char *", - "comment": "URL for the submodule's remote" + "name": "stasher", + "type": "const git_signature *", + "comment": "The identity of the person performing the stashing." }, { - "name": "path", + "name": "message", "type": "const char *", - "comment": "Path at which the submodule should be created" + "comment": "Optional description along with the stashed state." }, { - "name": "use_gitlink", - "type": "int", - "comment": "Should workdir contain a gitlink to the repo in\n .git/modules vs. repo directly in workdir." + "name": "flags", + "type": "uint32_t", + "comment": "Flags to control the stashing process. (see GIT_STASH_* above)" } ], - "argline": "git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink", - "sig": "git_submodule **::git_repository *::const char *::const char *::int", + "argline": "git_oid *out, git_repository *repo, const git_signature *stasher, const char *message, uint32_t flags", + "sig": "git_oid *::git_repository *::const git_signature *::const char *::uint32_t", "return": { "type": "int", - "comment": " 0 on success, GIT_EEXISTS if submodule already exists,\n -1 on other errors." + "comment": " 0 on success, GIT_ENOTFOUND where there's nothing to stash,\n or error code." }, - "description": "Set up a new git submodule for checkout.
\n", - "comments": "This does "git submodule add" up to the fetch and checkout of the submodule contents. It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.
\n\nTo fully emulate "git submodule add" call this function, then open the submodule repo and perform the clone step as needed. Lastly, call git_submodule_add_finalize() to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.
You must call git_submodule_free on the submodule object when done.
Save the local modifications to a new stash.
\n", + "comments": "", + "group": "stash" }, - "git_submodule_add_finalize": { + "git_stash_save_options_init": { "type": "function", - "file": "submodule.h", - "line": 298, - "lineto": 298, + "file": "git2/stash.h", + "line": 118, + "lineto": 119, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "The submodule to finish adding." + "name": "opts", + "type": "git_stash_save_options *", + "comment": "The `git_stash_save_options` struct to initialize." + }, + { + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_STASH_SAVE_OPTIONS_VERSION`." } ], - "argline": "git_submodule *submodule", - "sig": "git_submodule *", + "argline": "git_stash_save_options *opts, unsigned int version", + "sig": "git_stash_save_options *::unsigned int", "return": { "type": "int", - "comment": null + "comment": " Zero on success; -1 on failure." }, - "description": "Resolve the setup of a new git submodule.
\n", - "comments": "This should be called on a submodule once you have called add setup and done the clone of the submodule. This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn't actually do the commit).
\n", - "group": "submodule" + "description": "Initialize git_stash_save_options structure
\n", + "comments": "Initializes a git_stash_save_options with default values. Equivalent to creating an instance with GIT_STASH_SAVE_OPTIONS_INIT.
Add current submodule HEAD commit to index of superproject.
\n", + "description": "Save the local modifications to a new stash, with options.
\n", "comments": "", - "group": "submodule" + "group": "stash" }, - "git_submodule_owner": { + "git_stash_apply_options_init": { "type": "function", - "file": "submodule.h", - "line": 325, - "lineto": 325, + "file": "git2/stash.h", + "line": 225, + "lineto": 226, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "Pointer to submodule object" + "name": "opts", + "type": "git_stash_apply_options *", + "comment": "The `git_stash_apply_options` struct to initialize." + }, + { + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_STASH_APPLY_OPTIONS_VERSION`." } ], - "argline": "git_submodule *submodule", - "sig": "git_submodule *", + "argline": "git_stash_apply_options *opts, unsigned int version", + "sig": "git_stash_apply_options *::unsigned int", "return": { - "type": "git_repository *", - "comment": " Pointer to `git_repository`" + "type": "int", + "comment": " Zero on success; -1 on failure." }, - "description": "Get the containing repository for a submodule.
\n", - "comments": "This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original git_submodule_lookup() call, so if that repository has been freed, then this may be a dangling reference.
Initialize git_stash_apply_options structure
\n", + "comments": "Initializes a git_stash_apply_options with default values. Equivalent to creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.
Get the name of submodule.
\n", - "comments": "", - "group": "submodule", - "examples": { - "status.c": [ - "ex/HEAD/status.html#git_submodule_name-24" - ] - } + "description": "Apply a single stashed state from the stash list.
\n", + "comments": "If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned. In this case, the index will always remain unmodified and all files in the working directory will remain unmodified. However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.
\n\nIf passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.
\n", + "group": "stash" }, - "git_submodule_path": { + "git_stash_foreach": { "type": "function", - "file": "submodule.h", - "line": 344, - "lineto": 344, + "file": "git2/stash.h", + "line": 288, + "lineto": 291, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "Pointer to submodule object" + "name": "repo", + "type": "git_repository *", + "comment": "Repository where to find the stash." + }, + { + "name": "callback", + "type": "git_stash_cb", + "comment": "Callback to invoke per found stashed state. The most\n recent stash state will be enumerated first." + }, + { + "name": "payload", + "type": "void *", + "comment": "Extra parameter to callback function." } ], - "argline": "git_submodule *submodule", - "sig": "git_submodule *", + "argline": "git_repository *repo, git_stash_cb callback, void *payload", + "sig": "git_repository *::git_stash_cb::void *", "return": { - "type": "const char *", - "comment": " Pointer to the submodule path" + "type": "int", + "comment": " 0 on success, non-zero callback return value, or error code." }, - "description": "Get the path to the submodule.
\n", - "comments": "The path is almost always the same as the submodule name, but the two are actually not required to match.
\n", - "group": "submodule", - "examples": { - "status.c": [ - "ex/HEAD/status.html#git_submodule_path-25" - ] - } + "description": "Loop over all the stashed states and issue a callback for each one.
\n", + "comments": "If the callback returns a non-zero value, this will stop looping.
\n", + "group": "stash" }, - "git_submodule_url": { + "git_stash_drop": { "type": "function", - "file": "submodule.h", - "line": 352, - "lineto": 352, + "file": "git2/stash.h", + "line": 304, + "lineto": 306, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "Pointer to submodule object" + "name": "repo", + "type": "git_repository *", + "comment": "The owning repository." + }, + { + "name": "index", + "type": "size_t", + "comment": "The position within the stash list. 0 points to the\n most recent stashed state." } ], - "argline": "git_submodule *submodule", - "sig": "git_submodule *", + "argline": "git_repository *repo, size_t index", + "sig": "git_repository *::size_t", "return": { - "type": "const char *", - "comment": " Pointer to the submodule url" + "type": "int", + "comment": " 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code." }, - "description": "Get the URL for the submodule.
\n", + "description": "Remove a single stashed state from the stash list.
\n", "comments": "", - "group": "submodule" + "group": "stash" }, - "git_submodule_resolve_url": { + "git_stash_pop": { "type": "function", - "file": "submodule.h", - "line": 362, - "lineto": 362, + "file": "git2/stash.h", + "line": 320, + "lineto": 323, "args": [ - { - "name": "out", - "type": "git_buf *", - "comment": "buffer to store the absolute submodule url in" - }, { "name": "repo", "type": "git_repository *", - "comment": "Pointer to repository object" + "comment": "The owning repository." }, { - "name": "url", - "type": "const char *", - "comment": "Relative url" + "name": "index", + "type": "size_t", + "comment": "The position within the stash list. 0 points to the\n most recent stashed state." + }, + { + "name": "options", + "type": "const git_stash_apply_options *", + "comment": "Optional options to control how stashes are applied." } ], - "argline": "git_buf *out, git_repository *repo, const char *url", - "sig": "git_buf *::git_repository *::const char *", + "argline": "git_repository *repo, size_t index, const git_stash_apply_options *options", + "sig": "git_repository *::size_t::const git_stash_apply_options *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)" }, - "description": "Resolve a submodule url relative to the given repository.
\n", + "description": "Apply a single stashed state from the stash list and remove it from the list\n if successful.
\n", "comments": "", - "group": "submodule" + "group": "stash" }, - "git_submodule_branch": { + "git_status_options_init": { "type": "function", - "file": "submodule.h", - "line": 370, - "lineto": 370, + "file": "git2/status.h", + "line": 280, + "lineto": 282, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "Pointer to submodule object" + "name": "opts", + "type": "git_status_options *", + "comment": "The `git_status_options` struct to initialize." + }, + { + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_STATUS_OPTIONS_VERSION`." } ], - "argline": "git_submodule *submodule", - "sig": "git_submodule *", + "argline": "git_status_options *opts, unsigned int version", + "sig": "git_status_options *::unsigned int", "return": { - "type": "const char *", - "comment": " Pointer to the submodule branch" + "type": "int", + "comment": " Zero on success; -1 on failure." }, - "description": "Get the branch for the submodule.
\n", - "comments": "", - "group": "submodule" + "description": "Initialize git_status_options structure
\n", + "comments": "Initializes a git_status_options with default values. Equivalent to creating an instance with GIT_STATUS_OPTIONS_INIT.
Set the branch for the submodule in the configuration
\n", - "comments": "After calling this, you may wish to call git_submodule_sync() to write the changes to the checked out submodule repository.
Gather file statuses and run a callback for each one.
\n", + "comments": "The callback is passed the path of the file, the status (a combination of the git_status_t values above) and the payload data pointer passed into this function.
If the callback returns a non-zero value, this function will stop looping and return that value to caller.
\n", + "group": "status", + "examples": { "status.c": ["ex/v1.9.1/status.html#git_status_foreach-6"] } }, - "git_submodule_set_url": { + "git_status_foreach_ext": { "type": "function", - "file": "submodule.h", - "line": 397, - "lineto": 397, + "file": "git2/status.h", + "line": 344, + "lineto": 348, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "the repository to affect" + "comment": "Repository object" }, { - "name": "name", - "type": "const char *", - "comment": "the name of the submodule to configure" + "name": "opts", + "type": "const git_status_options *", + "comment": "Status options structure" }, { - "name": "url", - "type": "const char *", - "comment": "URL that should be used for the submodule" + "name": "callback", + "type": "git_status_cb", + "comment": "The function to call on each file" + }, + { + "name": "payload", + "type": "void *", + "comment": "Pointer to pass through to callback function" } ], - "argline": "git_repository *repo, const char *name, const char *url", - "sig": "git_repository *::const char *::const char *", + "argline": "git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload", + "sig": "git_repository *::const git_status_options *::git_status_cb::void *", "return": { "type": "int", - "comment": " 0 on success, \n<\n0 on failure" + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Set the URL for the submodule in the configuration
\n", - "comments": "After calling this, you may wish to call git_submodule_sync() to write the changes to the checked out submodule repository.
Gather file status information and run callbacks as requested.
\n", + "comments": "This is an extended version of the git_status_foreach() API that allows for more granular control over which paths will be processed and in what order. See the git_status_options structure for details about the additional controls that this makes available.
Note that if a pathspec is given in the git_status_options to filter the status, then the results from rename detection (if you enable it) may not be accurate. To do rename detection properly, this must be called with no pathspec so that all files can be considered.
Get the OID for the submodule in the index.
\n", - "comments": "", - "group": "submodule" + "description": "Get file status for a single file.
\n", + "comments": "This tries to get status for the filename that you give. If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.
\n\nIf the name matches multiple files (for example, if the path names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.
This does not do any sort of rename detection. Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly. To check file status with rename detection, there is no choice but to do a full git_status_list_new and scan through looking for the path that you are interested in.
Get the OID for the submodule in the current HEAD tree.
\n", - "comments": "", - "group": "submodule" + "argline": "git_status_list **out, git_repository *repo, const git_status_options *opts", + "sig": "git_status_list **::git_repository *::const git_status_options *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Gather file status information and populate the git_status_list.
Note that if a pathspec is given in the git_status_options to filter the status, then the results from rename detection (if you enable it) may not be accurate. To do rename detection properly, this must be called with no pathspec so that all files can be considered.
Get the OID for the submodule in the current working directory.
\n", - "comments": "This returns the OID that corresponds to looking up 'HEAD' in the checked out submodule. If there are pending changes in the index or anything else, this won't notice that. You should call git_submodule_status() for a more complete picture about the state of the working directory.
Gets the count of status entries in this list.
\n", + "comments": "If there are no changes in status (at least according the options given when the status list was created), this can return 0.
\n", + "group": "status", + "examples": { + "status.c": [ + "ex/v1.9.1/status.html#git_status_list_entrycount-10", + "ex/v1.9.1/status.html#git_status_list_entrycount-11" + ] + } }, - "git_submodule_ignore": { + "git_status_byindex": { "type": "function", - "file": "submodule.h", - "line": 451, - "lineto": 452, + "file": "git2/status.h", + "line": 420, + "lineto": 422, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "The submodule to check" - } + "name": "statuslist", + "type": "git_status_list *", + "comment": "Existing status list object" + }, + { "name": "idx", "type": "size_t", "comment": "Position of the entry" } ], - "argline": "git_submodule *submodule", - "sig": "git_submodule *", + "argline": "git_status_list *statuslist, size_t idx", + "sig": "git_status_list *::size_t", "return": { - "type": "git_submodule_ignore_t", - "comment": " The current git_submodule_ignore_t valyue what will be used for\n this submodule." + "type": "const git_status_entry *", + "comment": " Pointer to the entry; NULL if out of bounds" }, - "description": "Get the ignore rule that will be used for the submodule.
\n", - "comments": "These values control the behavior of git_submodule_status() for this submodule. There are four ignore values:
git_status_foreach() on the submodule) but UNTRACKED files will not count as making the submodule dirty. - GIT_SUBMODULE_IGNORE_DIRTY means to only check if the HEAD of the submodule has moved for status. This is fast since it does not need to scan the working tree of the submodule at all. - GIT_SUBMODULE_IGNORE_ALL means not to open the submodule repo. The working directory will be consider clean so long as there is a checked out version present.Get a pointer to one of the entries in the status list.
\n", + "comments": "The entry is not modifiable and should not be freed.
\n", + "group": "status", + "examples": { + "status.c": [ + "ex/v1.9.1/status.html#git_status_byindex-12", + "ex/v1.9.1/status.html#git_status_byindex-13", + "ex/v1.9.1/status.html#git_status_byindex-14", + "ex/v1.9.1/status.html#git_status_byindex-15", + "ex/v1.9.1/status.html#git_status_byindex-16", + "ex/v1.9.1/status.html#git_status_byindex-17" + ] + } }, - "git_submodule_set_ignore": { + "git_status_list_free": { "type": "function", - "file": "submodule.h", - "line": 464, - "lineto": 467, + "file": "git2/status.h", + "line": 429, + "lineto": 430, + "args": [ + { + "name": "statuslist", + "type": "git_status_list *", + "comment": "Existing status list object" + } + ], + "argline": "git_status_list *statuslist", + "sig": "git_status_list *", + "return": { "type": "void", "comment": null }, + "description": "Free an existing status list
\n", + "comments": "", + "group": "status", + "examples": { + "status.c": ["ex/v1.9.1/status.html#git_status_list_free-18"] + } + }, + "git_status_should_ignore": { + "type": "function", + "file": "git2/status.h", + "line": 448, + "lineto": 451, "args": [ + { + "name": "ignored", + "type": "int *", + "comment": "Boolean returning 0 if the file is not ignored, 1 if it is" + }, { "name": "repo", "type": "git_repository *", - "comment": "the repository to affect" + "comment": "A repository object" }, { - "name": "name", + "name": "path", "type": "const char *", - "comment": "the name of the submdule" + "comment": "The file to check ignores for, rooted at the repo's workdir." + } + ], + "argline": "int *ignored, git_repository *repo, const char *path", + "sig": "int *::git_repository *::const char *", + "return": { + "type": "int", + "comment": " 0 if ignore rules could be processed for the file (regardless\n of whether it exists or not), or an error \n<\n 0 if they could not." + }, + "description": "Test if the ignore rules apply to a given file.
\n", + "comments": "This function checks the ignore rules to see if they would apply to the given file. This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.
\n\nOne way to think of this is if you were to do "git add ." on the directory containing the file, would it be added or not?
\n", + "group": "status" + }, + "git_strarray_dispose": { + "type": "function", + "file": "git2/strarray.h", + "line": 37, + "lineto": 37, + "args": [ + { + "name": "array", + "type": "git_strarray *", + "comment": "The git_strarray that contains strings to free" + } + ], + "argline": "git_strarray *array", + "sig": "git_strarray *", + "return": { "type": "void", "comment": null }, + "description": "Free the strings contained in a string array. This method should\n be called on git_strarray objects that were provided by the\n library. Not doing so, will result in a memory leak.
This does not free the git_strarray itself, since the library will never allocate that object directly itself.
Set the ignore rule for the submodule in the configuration
\n", - "comments": "This does not affect any currently-loaded instances.
\n", + "description": "Initialize git_submodule_update_options structure
\n", + "comments": "Initializes a git_submodule_update_options with default values. Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.
Get the update rule that will be used for the submodule.
\n", - "comments": "This value controls the behavior of the git submodule update command. There are four useful values documented with git_submodule_update_t.
Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n the containing repository. If the submodule repository doesn't contain\n the target commit (e.g. because fetchRecurseSubmodules isn't set), then\n the submodule is fetched using the fetch options supplied in options.
\n", + "comments": "", "group": "submodule" }, - "git_submodule_set_update": { + "git_submodule_lookup": { "type": "function", - "file": "submodule.h", - "line": 492, - "lineto": 495, + "file": "git2/submodule.h", + "line": 230, + "lineto": 233, "args": [ + { + "name": "out", + "type": "git_submodule **", + "comment": "Output ptr to submodule; pass NULL to just get return code" + }, { "name": "repo", "type": "git_repository *", - "comment": "the repository to affect" + "comment": "The parent repository" }, { "name": "name", "type": "const char *", - "comment": "the name of the submodule to configure" - }, - { - "name": "update", - "type": "git_submodule_update_t", - "comment": "The new value to use" + "comment": "The name of or path to the submodule; trailing slashes okay" } ], - "argline": "git_repository *repo, const char *name, git_submodule_update_t update", - "sig": "git_repository *::const char *::git_submodule_update_t", + "argline": "git_submodule **out, git_repository *repo, const char *name", + "sig": "git_submodule **::git_repository *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 on success, GIT_ENOTFOUND if submodule does not exist,\n GIT_EEXISTS if a repository is found in working directory only,\n -1 on other errors." }, - "description": "Set the update rule for the submodule in the configuration
\n", - "comments": "This setting won't affect any existing instances.
\n", + "description": "Lookup submodule information by name or path.
\n", + "comments": "Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.
\n\nThere are two expected error scenarios:
\n\nYou must call git_submodule_free when done with the submodule.
Create an in-memory copy of a submodule. The copy must be explicitly\n free'd or it will leak.
\n", + "comments": "", + "group": "submodule" + }, + "git_submodule_free": { "type": "function", - "file": "submodule.h", - "line": 508, - "lineto": 509, + "file": "git2/submodule.h", + "line": 250, + "lineto": 250, "args": [ { "name": "submodule", "type": "git_submodule *", - "comment": null + "comment": "Submodule object" } ], "argline": "git_submodule *submodule", "sig": "git_submodule *", - "return": { - "type": "git_submodule_recurse_t", - "comment": " 0 if fetchRecurseSubmodules is false, 1 if true" - }, - "description": "Read the fetchRecurseSubmodules rule for a submodule.
\n", - "comments": "This accesses the submodule.
Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.
\n", + "return": { "type": "void", "comment": null }, + "description": "Release a submodule
\n", + "comments": "", "group": "submodule" }, - "git_submodule_set_fetch_recurse_submodules": { + "git_submodule_foreach": { "type": "function", - "file": "submodule.h", - "line": 521, - "lineto": 524, + "file": "git2/submodule.h", + "line": 270, + "lineto": 273, "args": [ { "name": "repo", "type": "git_repository *", - "comment": "the repository to affect" + "comment": "The repository" }, { - "name": "name", - "type": "const char *", - "comment": "the submodule to configure" + "name": "callback", + "type": "git_submodule_cb", + "comment": "Function to be called with the name of each submodule.\n Return a non-zero value to terminate the iteration." }, { - "name": "fetch_recurse_submodules", - "type": "git_submodule_recurse_t", - "comment": "Boolean value" + "name": "payload", + "type": "void *", + "comment": "Extra data to pass to callback" } ], - "argline": "git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules", - "sig": "git_repository *::const char *::git_submodule_recurse_t", + "argline": "git_repository *repo, git_submodule_cb callback, void *payload", + "sig": "git_repository *::git_submodule_cb::void *", "return": { "type": "int", - "comment": " old value for fetchRecurseSubmodules" + "comment": " 0 on success, -1 on error, or non-zero return value of callback" }, - "description": "Set the fetchRecurseSubmodules rule for a submodule in the configuration
\n", - "comments": "This setting won't affect any existing instances.
\n", - "group": "submodule" + "description": "Iterate over all tracked submodules of a repository.
\n", + "comments": "See the note on git_submodule above. This iterates over the tracked submodules as described therein.
If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir. Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.
\n", + "group": "submodule", + "examples": { + "status.c": ["ex/v1.9.1/status.html#git_submodule_foreach-19"] + } }, - "git_submodule_init": { + "git_submodule_add_setup": { "type": "function", - "file": "submodule.h", - "line": 539, - "lineto": 539, + "file": "git2/submodule.h", + "line": 301, + "lineto": 306, "args": [ { - "name": "submodule", - "type": "git_submodule *", - "comment": "The submodule to write into the superproject config" + "name": "out", + "type": "git_submodule **", + "comment": "The newly created submodule ready to open for clone" }, { - "name": "overwrite", + "name": "repo", + "type": "git_repository *", + "comment": "The repository in which you want to create the submodule" + }, + { + "name": "url", + "type": "const char *", + "comment": "URL for the submodule's remote" + }, + { + "name": "path", + "type": "const char *", + "comment": "Path at which the submodule should be created" + }, + { + "name": "use_gitlink", "type": "int", - "comment": "By default, existing entries will not be overwritten,\n but setting this to true forces them to be updated." + "comment": "Should workdir contain a gitlink to the repo in\n .git/modules vs. repo directly in workdir." } ], - "argline": "git_submodule *submodule, int overwrite", - "sig": "git_submodule *::int", + "argline": "git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink", + "sig": "git_submodule **::git_repository *::const char *::const char *::int", "return": { "type": "int", - "comment": " 0 on success, \n<\n0 on failure." + "comment": " 0 on success, GIT_EEXISTS if submodule already exists,\n -1 on other errors." }, - "description": "Copy submodule info into ".git/config" file.
\n", - "comments": "Just like "git submodule init", this copies information about the submodule into ".git/config". You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.
\n", + "description": "Set up a new git submodule for checkout.
\n", + "comments": "This does "git submodule add" up to the fetch and checkout of the submodule contents. It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.
\n\nTo fully emulate "git submodule add" call this function, then open the submodule repo and perform the clone step as needed (if you don't need anything custom see git_submodule_add_clone()). Lastly, call git_submodule_add_finalize() to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.
You must call git_submodule_free on the submodule object when done.
Set up the subrepository for a submodule in preparation for clone.
\n", - "comments": "This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.
\n", + "description": "Perform the clone step for a newly created submodule.
\n", + "comments": "This performs the necessary git_clone to setup a newly-created submodule.
Copy submodule remote info into submodule repo.
\n", - "comments": "This copies the information about the submodules URL into the checked out submodule config, acting like "git submodule sync". This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.
\n", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Resolve the setup of a new git submodule.
\n", + "comments": "This should be called on a submodule once you have called add setup and done the clone of the submodule. This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn't actually do the commit).
\n", "group": "submodule" }, - "git_submodule_open": { + "git_submodule_add_to_index": { "type": "function", - "file": "submodule.h", - "line": 581, - "lineto": 583, + "file": "git2/submodule.h", + "line": 347, + "lineto": 349, "args": [ - { - "name": "repo", - "type": "git_repository **", - "comment": "Pointer to the submodule repo which was opened" - }, { "name": "submodule", "type": "git_submodule *", - "comment": "Submodule to be opened" + "comment": "The submodule to add to the index" + }, + { + "name": "write_index", + "type": "int", + "comment": "Boolean if this should immediately write the index\n file. If you pass this as false, you will have to get the\n git_index and explicitly call `git_index_write()` on it to\n save the change." } ], - "argline": "git_repository **repo, git_submodule *submodule", - "sig": "git_repository **::git_submodule *", + "argline": "git_submodule *submodule, int write_index", + "sig": "git_submodule *::int", "return": { "type": "int", - "comment": " 0 on success, \n<\n0 if submodule repo could not be opened." + "comment": " 0 on success, \n<\n0 on failure" }, - "description": "Open the repository for a submodule.
\n", - "comments": "This is a newly opened repository object. The caller is responsible for calling git_repository_free() on it when done. Multiple calls to this function will return distinct git_repository objects. This will only work if the submodule is checked out into the working directory.
Add current submodule HEAD commit to index of superproject.
\n", + "comments": "", "group": "submodule" }, - "git_submodule_reload": { + "git_submodule_owner": { "type": "function", - "file": "submodule.h", - "line": 595, - "lineto": 595, + "file": "git2/submodule.h", + "line": 362, + "lineto": 362, "args": [ { "name": "submodule", "type": "git_submodule *", - "comment": "The submodule to reload" - }, - { - "name": "force", - "type": "int", - "comment": "Force reload even if the data doesn't seem out of date" + "comment": "Pointer to submodule object" } ], - "argline": "git_submodule *submodule, int force", - "sig": "git_submodule *::int", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "int", - "comment": " 0 on success, \n<\n0 on error" + "type": "git_repository *", + "comment": " Pointer to `git_repository`" }, - "description": "Reread submodule info from config, index, and HEAD.
\n", - "comments": "Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.
\n", + "description": "Get the containing repository for a submodule.
\n", + "comments": "This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original git_submodule_lookup() call, so if that repository has been freed, then this may be a dangling reference.
Get the status for a submodule.
\n", - "comments": "This looks at a submodule and tries to determine the status. It will return a combination of the GIT_SUBMODULE_STATUS values above. How deeply it examines the working directory to do this will depend on the git_submodule_ignore_t value for the submodule.
Get the name of submodule.
\n", + "comments": "", "group": "submodule", "examples": { - "status.c": [ - "ex/HEAD/status.html#git_submodule_status-26" - ] + "status.c": ["ex/v1.9.1/status.html#git_submodule_name-20"] } }, - "git_submodule_location": { + "git_submodule_path": { "type": "function", - "file": "submodule.h", - "line": 631, - "lineto": 633, + "file": "git2/submodule.h", + "line": 381, + "lineto": 381, "args": [ { - "name": "location_status", - "type": "unsigned int *", - "comment": "Combination of first four `GIT_SUBMODULE_STATUS` flags" - }, + "name": "submodule", + "type": "git_submodule *", + "comment": "Pointer to submodule object" + } + ], + "argline": "git_submodule *submodule", + "sig": "git_submodule *", + "return": { + "type": "const char *", + "comment": " Pointer to the submodule path" + }, + "description": "Get the path to the submodule.
\n", + "comments": "The path is almost always the same as the submodule name, but the two are actually not required to match.
\n", + "group": "submodule", + "examples": { + "status.c": ["ex/v1.9.1/status.html#git_submodule_path-21"] + } + }, + "git_submodule_url": { + "type": "function", + "file": "git2/submodule.h", + "line": 389, + "lineto": 389, + "args": [ { "name": "submodule", "type": "git_submodule *", - "comment": "Submodule for which to get status" + "comment": "Pointer to submodule object" } ], - "argline": "unsigned int *location_status, git_submodule *submodule", - "sig": "unsigned int *::git_submodule *", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "int", - "comment": " 0 on success, \n<\n0 on error" + "type": "const char *", + "comment": " Pointer to the submodule url" }, - "description": "Get the locations of submodule information.
\n", - "comments": "This is a bit like a very lightweight version of git_submodule_status. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.
Get the URL for the submodule.
\n", + "comments": "", "group": "submodule" }, - "git_commit_create_from_callback": { + "git_submodule_resolve_url": { "type": "function", - "file": "sys/commit.h", - "line": 66, - "lineto": 76, + "file": "git2/submodule.h", + "line": 399, + "lineto": 399, "args": [ { - "name": "id", - "type": "git_oid *", - "comment": null + "name": "out", + "type": "git_buf *", + "comment": "buffer to store the absolute submodule url in" }, { "name": "repo", "type": "git_repository *", - "comment": null - }, - { - "name": "update_ref", - "type": "const char *", - "comment": null - }, - { - "name": "author", - "type": "const git_signature *", - "comment": null - }, - { - "name": "committer", - "type": "const git_signature *", - "comment": null - }, - { - "name": "message_encoding", - "type": "const char *", - "comment": null - }, - { - "name": "message", - "type": "const char *", - "comment": null - }, - { - "name": "tree", - "type": "const git_oid *", - "comment": null - }, - { - "name": "parent_cb", - "type": "git_commit_parent_callback", - "comment": null + "comment": "Pointer to repository object" }, - { - "name": "parent_payload", - "type": "void *", - "comment": null - } + { "name": "url", "type": "const char *", "comment": "Relative url" } ], - "argline": "git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload", - "sig": "git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Create a new commit in the repository with an callback to supply parents.
\n", - "comments": "See documentation for git_commit_create() for information about the parameters, as the meaning is identical excepting that tree takes a git_oid and doesn't check for validity, and parent_cb is invoked with parent_payload and should return git_oid values or NULL to indicate that all parents are accounted for.
Resolve a submodule url relative to the given repository.
\n", + "comments": "", + "group": "submodule" }, - "git_config_init_backend": { + "git_submodule_branch": { "type": "function", - "file": "sys/config.h", - "line": 97, - "lineto": 99, + "file": "git2/submodule.h", + "line": 407, + "lineto": 407, "args": [ { - "name": "backend", - "type": "git_config_backend *", - "comment": "the `git_config_backend` struct to initialize." - }, - { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`" + "name": "submodule", + "type": "git_submodule *", + "comment": "Pointer to submodule object" } ], - "argline": "git_config_backend *backend, unsigned int version", - "sig": "git_config_backend *::unsigned int", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." + "type": "const char *", + "comment": " Pointer to the submodule branch" }, - "description": "Initializes a git_config_backend with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.
Get the branch for the submodule.
\n", "comments": "", - "group": "config" + "group": "submodule" }, - "git_config_add_backend": { + "git_submodule_set_branch": { "type": "function", - "file": "sys/config.h", - "line": 119, - "lineto": 123, + "file": "git2/submodule.h", + "line": 420, + "lineto": 420, "args": [ { - "name": "cfg", - "type": "git_config *", - "comment": "the configuration to add the file to" - }, - { - "name": "file", - "type": "git_config_backend *", - "comment": "the configuration file (backend) to add" + "name": "repo", + "type": "git_repository *", + "comment": "the repository to affect" }, { - "name": "level", - "type": "git_config_level_t", - "comment": "the priority level of the backend" + "name": "name", + "type": "const char *", + "comment": "the name of the submodule to configure" }, { - "name": "force", - "type": "int", - "comment": "if a config file already exists for the given\n priority level, replace it" + "name": "branch", + "type": "const char *", + "comment": "Branch that should be used for the submodule" } ], - "argline": "git_config *cfg, git_config_backend *file, git_config_level_t level, int force", - "sig": "git_config *::git_config_backend *::git_config_level_t::int", + "argline": "git_repository *repo, const char *name, const char *branch", + "sig": "git_repository *::const char *::const char *", "return": { "type": "int", - "comment": " 0 on success, GIT_EEXISTS when adding more than one file\n for a given priority level (and force_replace set to 0), or error code" + "comment": " 0 on success, \n<\n0 on failure" }, - "description": "Add a generic config file instance to an existing config
\n", - "comments": "Note that the configuration object will free the file automatically.
\n\nFurther queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).
\n", - "group": "config" + "description": "Set the branch for the submodule in the configuration
\n", + "comments": "After calling this, you may wish to call git_submodule_sync() to write the changes to the checked out submodule repository.
Diff print callback that writes to a git_buf.
\n", - "comments": "This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the git_diff_print or git_patch_print APIs. When using those APIs, you specify a callback to actually handle the diff and/or patch data.
Use this callback to easily write that data to a git_buf buffer. You must pass a git_buf * value as the payload to the git_diff_print and/or git_patch_print function. The data will be appended to the buffer (after any existing content).
Set the URL for the submodule in the configuration
\n", + "comments": "After calling this, you may wish to call git_submodule_sync() to write the changes to the checked out submodule repository.
Diff print callback that writes to stdio FILE handle.
\n", - "comments": "This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the git_diff_print or git_patch_print APIs. When using those APIs, you specify a callback to actually handle the diff and/or patch data.
Use this callback to easily write that data to a stdio FILE handle. You must pass a FILE * value (such as stdout or stderr or the return value from fopen()) as the payload to the git_diff_print and/or git_patch_print function. If you pass NULL, this will write data to stdout.
Get the OID for the submodule in the index.
\n", + "comments": "", + "group": "submodule" }, - "git_diff_get_perfdata": { + "git_submodule_head_id": { "type": "function", - "file": "sys/diff.h", - "line": 83, - "lineto": 84, + "file": "git2/submodule.h", + "line": 450, + "lineto": 450, "args": [ { - "name": "out", - "type": "git_diff_perfdata *", - "comment": "Structure to be filled with diff performance data" - }, - { - "name": "diff", - "type": "const git_diff *", - "comment": "Diff to read performance data from" + "name": "submodule", + "type": "git_submodule *", + "comment": "Pointer to submodule object" } ], - "argline": "git_diff_perfdata *out, const git_diff *diff", - "sig": "git_diff_perfdata *::const git_diff *", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "int", - "comment": " 0 for success, \n<\n0 for error" + "type": "const git_oid *", + "comment": " Pointer to git_oid or NULL if submodule is not in the HEAD." }, - "description": "Get performance data for a diff object.
\n", + "description": "Get the OID for the submodule in the current HEAD tree.
\n", "comments": "", - "group": "diff" + "group": "submodule" }, - "git_status_list_get_perfdata": { + "git_submodule_wd_id": { "type": "function", - "file": "sys/diff.h", - "line": 89, - "lineto": 90, + "file": "git2/submodule.h", + "line": 463, + "lineto": 463, "args": [ { - "name": "out", - "type": "git_diff_perfdata *", - "comment": null - }, - { - "name": "status", - "type": "const git_status_list *", - "comment": null + "name": "submodule", + "type": "git_submodule *", + "comment": "Pointer to submodule object" } ], - "argline": "git_diff_perfdata *out, const git_status_list *status", - "sig": "git_diff_perfdata *::const git_status_list *", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "int", - "comment": null + "type": "const git_oid *", + "comment": " Pointer to git_oid or NULL if submodule is not checked out." }, - "description": "Get performance data for diffs from a git_status_list
\n", - "comments": "", - "group": "status" + "description": "Get the OID for the submodule in the current working directory.
\n", + "comments": "This returns the OID that corresponds to looking up 'HEAD' in the checked out submodule. If there are pending changes in the index or anything else, this won't notice that. You should call git_submodule_status() for a more complete picture about the state of the working directory.
Look up a filter by name
\n", - "comments": "", - "group": "filter" + "description": "Get the ignore rule that will be used for the submodule.
\n", + "comments": "These values control the behavior of git_submodule_status() for this submodule. There are four ignore values:
git_status_foreach() on the submodule) but UNTRACKED files will not count as making the submodule dirty. - GIT_SUBMODULE_IGNORE_DIRTY means to only check if the HEAD of the submodule has moved for status. This is fast since it does not need to scan the working tree of the submodule at all. - GIT_SUBMODULE_IGNORE_ALL means not to open the submodule repo. The working directory will be consider clean so long as there is a checked out version present.Set the ignore rule for the submodule in the configuration
\n", + "comments": "This does not affect any currently-loaded instances.
\n", + "group": "submodule" + }, + "git_submodule_update_strategy": { + "type": "function", + "file": "git2/submodule.h", + "line": 516, + "lineto": 517, + "args": [ + { + "name": "submodule", + "type": "git_submodule *", + "comment": "The submodule to check" } ], - "argline": "git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options", - "sig": "git_filter_list **::git_repository *::git_filter_mode_t::uint32_t", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "int", - "comment": null + "type": "git_submodule_update_t", + "comment": " The current git_submodule_update_t value that will be used\n for this submodule." }, - "description": "Create a new empty filter list
\n", - "comments": "Normally you won't use this because git_filter_list_load will create the filter list for you, but you can use this in combination with the git_filter_lookup and git_filter_list_push functions to assemble your own chains of filters.
Get the update rule that will be used for the submodule.
\n", + "comments": "This value controls the behavior of the git submodule update command. There are four useful values documented with git_submodule_update_t.
Add a filter to a filter list with the given payload.
\n", - "comments": "Normally you won't have to do this because the filter list is created by calling the "check" function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.
\n\nNote that normally the "check" function can set up a payload for the filter. Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL. Some filters may fail with a NULL payload. Good luck!
\n", - "group": "filter" + "argline": "git_repository *repo, const char *name, git_submodule_update_t update", + "sig": "git_repository *::const char *::git_submodule_update_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Set the update rule for the submodule in the configuration
\n", + "comments": "This setting won't affect any existing instances.
\n", + "group": "submodule" }, - "git_filter_source_repo": { + "git_submodule_fetch_recurse_submodules": { "type": "function", - "file": "sys/filter.h", - "line": 100, - "lineto": 100, + "file": "git2/submodule.h", + "line": 546, + "lineto": 547, "args": [ { - "name": "src", - "type": "const git_filter_source *", - "comment": null + "name": "submodule", + "type": "git_submodule *", + "comment": "the submodule to examine" } ], - "argline": "const git_filter_source *src", - "sig": "const git_filter_source *", + "argline": "git_submodule *submodule", + "sig": "git_submodule *", "return": { - "type": "git_repository *", - "comment": null + "type": "git_submodule_recurse_t", + "comment": " the submodule recursion configuration" }, - "description": "Get the repository that the source data is coming from.
\n", - "comments": "", - "group": "filter" + "description": "Read the fetchRecurseSubmodules rule for a submodule.
\n", + "comments": "This accesses the submodule.
Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.
\n", + "group": "submodule" }, - "git_filter_source_path": { + "git_submodule_set_fetch_recurse_submodules": { "type": "function", - "file": "sys/filter.h", - "line": 105, - "lineto": 105, + "file": "git2/submodule.h", + "line": 559, + "lineto": 562, "args": [ { - "name": "src", - "type": "const git_filter_source *", - "comment": null + "name": "repo", + "type": "git_repository *", + "comment": "the repository to affect" + }, + { + "name": "name", + "type": "const char *", + "comment": "the submodule to configure" + }, + { + "name": "fetch_recurse_submodules", + "type": "git_submodule_recurse_t", + "comment": "the submodule recursion configuration" } ], - "argline": "const git_filter_source *src", - "sig": "const git_filter_source *", + "argline": "git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules", + "sig": "git_repository *::const char *::git_submodule_recurse_t", "return": { - "type": "const char *", - "comment": null + "type": "int", + "comment": " old value for fetchRecurseSubmodules" }, - "description": "Get the path that the source data is coming from.
\n", - "comments": "", - "group": "filter" + "description": "Set the fetchRecurseSubmodules rule for a submodule in the configuration
\n", + "comments": "This setting won't affect any existing instances.
\n", + "group": "submodule" }, - "git_filter_source_filemode": { + "git_submodule_init": { "type": "function", - "file": "sys/filter.h", - "line": 111, - "lineto": 111, + "file": "git2/submodule.h", + "line": 577, + "lineto": 577, "args": [ { - "name": "src", - "type": "const git_filter_source *", - "comment": null + "name": "submodule", + "type": "git_submodule *", + "comment": "The submodule to write into the superproject config" + }, + { + "name": "overwrite", + "type": "int", + "comment": "By default, existing entries will not be overwritten,\n but setting this to true forces them to be updated." } ], - "argline": "const git_filter_source *src", - "sig": "const git_filter_source *", + "argline": "git_submodule *submodule, int overwrite", + "sig": "git_submodule *::int", "return": { - "type": "uint16_t", - "comment": null + "type": "int", + "comment": " 0 on success, \n<\n0 on failure." }, - "description": "Get the file mode of the source file\n If the mode is unknown, this will return 0
\n", - "comments": "", - "group": "filter" + "description": "Copy submodule info into ".git/config" file.
\n", + "comments": "Just like "git submodule init", this copies information about the submodule into ".git/config". You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.
\n", + "group": "submodule" }, - "git_filter_source_id": { + "git_submodule_repo_init": { "type": "function", - "file": "sys/filter.h", - "line": 118, - "lineto": 118, + "file": "git2/submodule.h", + "line": 592, + "lineto": 595, "args": [ { - "name": "src", - "type": "const git_filter_source *", - "comment": null + "name": "out", + "type": "git_repository **", + "comment": "Output pointer to the created git repository." + }, + { + "name": "sm", + "type": "const git_submodule *", + "comment": "The submodule to create a new subrepository from." + }, + { + "name": "use_gitlink", + "type": "int", + "comment": "Should the workdir contain a gitlink to\n the repo in .git/modules vs. repo directly in workdir." } ], - "argline": "const git_filter_source *src", - "sig": "const git_filter_source *", + "argline": "git_repository **out, const git_submodule *sm, int use_gitlink", + "sig": "git_repository **::const git_submodule *::int", "return": { - "type": "const git_oid *", - "comment": null + "type": "int", + "comment": " 0 on success, \n<\n0 on failure." }, - "description": "Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.
\n", - "comments": "", - "group": "filter" + "description": "Set up the subrepository for a submodule in preparation for clone.
\n", + "comments": "This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.
\n", + "group": "submodule" }, - "git_filter_source_mode": { + "git_submodule_sync": { "type": "function", - "file": "sys/filter.h", - "line": 123, - "lineto": 123, + "file": "git2/submodule.h", + "line": 608, + "lineto": 608, "args": [ { - "name": "src", - "type": "const git_filter_source *", - "comment": null + "name": "submodule", + "type": "git_submodule *", + "comment": "The submodule to copy." } ], - "argline": "const git_filter_source *src", - "sig": "const git_filter_source *", - "return": { - "type": "git_filter_mode_t", - "comment": null - }, - "description": "Get the git_filter_mode_t to be used
\n", - "comments": "", - "group": "filter" + "argline": "git_submodule *submodule", + "sig": "git_submodule *", + "return": { "type": "int", "comment": " 0 or an error code." }, + "description": "Copy submodule remote info into submodule repo.
\n", + "comments": "This copies the information about the submodules URL into the checked out submodule config, acting like "git submodule sync". This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.
\n", + "group": "submodule" }, - "git_filter_source_flags": { + "git_submodule_open": { "type": "function", - "file": "sys/filter.h", - "line": 128, - "lineto": 128, + "file": "git2/submodule.h", + "line": 622, + "lineto": 624, "args": [ { - "name": "src", - "type": "const git_filter_source *", - "comment": null + "name": "repo", + "type": "git_repository **", + "comment": "Pointer to the submodule repo which was opened" + }, + { + "name": "submodule", + "type": "git_submodule *", + "comment": "Submodule to be opened" } ], - "argline": "const git_filter_source *src", - "sig": "const git_filter_source *", + "argline": "git_repository **repo, git_submodule *submodule", + "sig": "git_repository **::git_submodule *", "return": { - "type": "uint32_t", - "comment": null + "type": "int", + "comment": " 0 on success, \n<\n0 if submodule repo could not be opened." }, - "description": "Get the combination git_filter_flag_t options to be applied
\n", - "comments": "", - "group": "filter" + "description": "Open the repository for a submodule.
\n", + "comments": "This is a newly opened repository object. The caller is responsible for calling git_repository_free() on it when done. Multiple calls to this function will return distinct git_repository objects. This will only work if the submodule is checked out into the working directory.
Register a filter under a given name with a given priority.
\n", - "comments": "As mentioned elsewhere, the initialize callback will not be invoked immediately. It is deferred until the filter is used in some way.
\n\nA filter's attribute checks and check and apply callbacks will be issued in order of priority on smudge (to workdir), and in reverse order of priority on clean (to odb).
Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100
\n\nCurrently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).
\n", - "group": "filter" + "argline": "git_submodule *submodule, int force", + "sig": "git_submodule *::int", + "return": { "type": "int", "comment": " 0 on success, \n<\n0 on error" }, + "description": "Reread submodule info from config, index, and HEAD.
\n", + "comments": "Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.
\n", + "group": "submodule" }, - "git_filter_unregister": { + "git_submodule_status": { "type": "function", - "file": "sys/filter.h", - "line": 317, - "lineto": 317, + "file": "git2/submodule.h", + "line": 652, + "lineto": 656, "args": [ + { + "name": "status", + "type": "unsigned int *", + "comment": "Combination of `GIT_SUBMODULE_STATUS` flags" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to look" + }, { "name": "name", "type": "const char *", - "comment": "The name under which the filter was registered" + "comment": "name of the submodule" + }, + { + "name": "ignore", + "type": "git_submodule_ignore_t", + "comment": "the ignore rules to follow" } ], - "argline": "const char *name", - "sig": "const char *", - "return": { - "type": "int", - "comment": " 0 on success, error code \n<\n0 on failure" - }, - "description": "Remove the filter with the given name
\n", - "comments": "Attempting to remove the builtin libgit2 filters is not permitted and will return an error.
\n\nCurrently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).
\n", - "group": "filter" + "argline": "unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore", + "sig": "unsigned int *::git_repository *::const char *::git_submodule_ignore_t", + "return": { "type": "int", "comment": " 0 on success, \n<\n0 on error" }, + "description": "Get the status for a submodule.
\n", + "comments": "This looks at a submodule and tries to determine the status. It will return a combination of the GIT_SUBMODULE_STATUS values above. How deeply it examines the working directory to do this will depend on the git_submodule_ignore_t value for the submodule.
Compute a similarity signature for a text file
\n", - "comments": "This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like git_hashsig_create.
Get the locations of submodule information.
\n", + "comments": "This is a bit like a very lightweight version of git_submodule_status. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.
Release memory for a content similarity signature
\n", + "argline": "git_tag **out, git_repository *repo, const git_oid *id", + "sig": "git_tag **::git_repository *::const git_oid *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a tag object from the repository.
\n", "comments": "", - "group": "hashsig" + "group": "tag", + "examples": { "general.c": ["ex/v1.9.1/general.html#git_tag_lookup-91"] } }, - "git_hashsig_compare": { + "git_tag_lookup_prefix": { "type": "function", - "file": "sys/hashsig.h", - "line": 100, - "lineto": 102, + "file": "git2/tag.h", + "line": 48, + "lineto": 49, "args": [ { - "name": "a", - "type": "const git_hashsig *", - "comment": "The first similarity signature to compare." + "name": "out", + "type": "git_tag **", + "comment": "pointer to the looked up tag" }, { - "name": "b", - "type": "const git_hashsig *", - "comment": "The second similarity signature to compare." + "name": "repo", + "type": "git_repository *", + "comment": "the repo to use when locating the tag." + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "identity of the tag to locate." + }, + { + "name": "len", + "type": "size_t", + "comment": "the length of the short identifier" } ], - "argline": "const git_hashsig *a, const git_hashsig *b", - "sig": "const git_hashsig *::const git_hashsig *", - "return": { - "type": "int", - "comment": " [0 to 100] on success as the similarity score, or error code." - }, - "description": "Measure similarity score between two similarity signatures
\n", + "argline": "git_tag **out, git_repository *repo, const git_oid *id, size_t len", + "sig": "git_tag **::git_repository *::const git_oid *::size_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a tag object from the repository,\n given a prefix of its identifier (short id).
\n", "comments": "", - "group": "hashsig" + "group": "tag" }, - "git_mempack_new": { + "git_tag_free": { "type": "function", - "file": "sys/mempack.h", - "line": 44, - "lineto": 44, + "file": "git2/tag.h", + "line": 61, + "lineto": 61, "args": [ - { - "name": "out", - "type": "git_odb_backend **", - "comment": "Poiter where to store the ODB backend" - } + { "name": "tag", "type": "git_tag *", "comment": "the tag to close" } ], - "argline": "git_odb_backend **out", - "sig": "git_odb_backend **", - "return": { - "type": "int", - "comment": " 0 on success; error code otherwise" - }, - "description": "Instantiate a new mempack backend.\n\n",
- "comments": "The backend must be added to an existing ODB with the highest priority.\n\n git_mempack_new(&mempacker); git_repository_odb(&odb, repository); git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will instead be queued in memory, and can be finalized with `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store to ensure consistency, until the memory store is dumped.\n\n",
- "group": "mempack"
+ "argline": "git_tag *tag",
+ "sig": "git_tag *",
+ "return": { "type": "void", "comment": null },
+ "description": "Close an open tag
\n", + "comments": "You can no longer use the git_tag pointer after this call.
\n\nIMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.
\n", + "group": "tag", + "examples": { "general.c": ["ex/v1.9.1/general.html#git_tag_free-92"] } }, - "git_mempack_reset": { + "git_tag_id": { "type": "function", - "file": "sys/mempack.h", - "line": 81, - "lineto": 81, + "file": "git2/tag.h", + "line": 69, + "lineto": 69, "args": [ { - "name": "backend", - "type": "git_odb_backend *", - "comment": "The mempack backend" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "git_odb_backend *backend", - "sig": "git_odb_backend *", + "argline": "const git_tag *tag", + "sig": "const git_tag *", "return": { - "type": "void", - "comment": null + "type": "const git_oid *", + "comment": " object identity for the tag." }, - "description": "Reset the memory packer by clearing all the queued objects.\n\n",
- "comments": "This assumes that `git_mempack_dump` has been called before to store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to "undo" all the recently written objects, giving transaction-like semantics to the Git repository.\n\n",
- "group": "mempack"
+ "description": "Get the id of a tag.
\n", + "comments": "", + "group": "tag" }, - "git_odb_init_backend": { + "git_tag_owner": { "type": "function", - "file": "sys/odb_backend.h", - "line": 104, - "lineto": 106, + "file": "git2/tag.h", + "line": 77, + "lineto": 77, "args": [ { - "name": "backend", - "type": "git_odb_backend *", - "comment": "the `git_odb_backend` struct to initialize." - }, - { - "name": "version", - "type": "unsigned int", - "comment": "Version the struct; pass `GIT_ODB_BACKEND_VERSION`" + "name": "tag", + "type": "const git_tag *", + "comment": "A previously loaded tag." } ], - "argline": "git_odb_backend *backend, unsigned int version", - "sig": "git_odb_backend *::unsigned int", + "argline": "const git_tag *tag", + "sig": "const git_tag *", "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." + "type": "git_repository *", + "comment": " Repository that contains this tag." }, - "description": "Initializes a git_odb_backend with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.
Get the repository that contains the tag.
\n", "comments": "", - "group": "odb" - }, - "git_openssl_set_locking": { - "type": "function", - "file": "sys/openssl.h", - "line": 34, - "lineto": 34, - "args": [], - "argline": "", - "sig": "", - "return": { - "type": "int", - "comment": " 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support." - }, - "description": "Initialize the OpenSSL locks
\n", - "comments": "OpenSSL requires the application to determine how it performs locking.
\n\nThis is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system's native locking functions.
\n\nThe locking function will be cleared and the memory will be freed when you call git_threads_sutdown().
\n\nIf your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.
\n", - "group": "openssl" + "group": "tag" }, - "git_refdb_init_backend": { + "git_tag_target": { "type": "function", - "file": "sys/refdb_backend.h", - "line": 183, - "lineto": 185, + "file": "git2/tag.h", + "line": 89, + "lineto": 89, "args": [ { - "name": "backend", - "type": "git_refdb_backend *", - "comment": "the `git_refdb_backend` struct to initialize" + "name": "target_out", + "type": "git_object **", + "comment": "pointer where to store the target" }, { - "name": "version", - "type": "unsigned int", - "comment": "Version of struct; pass `GIT_REFDB_BACKEND_VERSION`" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "git_refdb_backend *backend, unsigned int version", - "sig": "git_refdb_backend *::unsigned int", - "return": { - "type": "int", - "comment": " Zero on success; -1 on failure." - }, - "description": "Initializes a git_refdb_backend with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.
Get the tagged object of a tag
\n", + "comments": "This method performs a repository lookup for the given object and returns it
\n", + "group": "tag", + "examples": { "general.c": ["ex/v1.9.1/general.html#git_tag_target-93"] } }, - "git_refdb_backend_fs": { + "git_tag_target_id": { "type": "function", - "file": "sys/refdb_backend.h", - "line": 198, - "lineto": 200, + "file": "git2/tag.h", + "line": 97, + "lineto": 97, "args": [ { - "name": "backend_out", - "type": "git_refdb_backend **", - "comment": "Output pointer to the git_refdb_backend object" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Git repository to access" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "git_refdb_backend **backend_out, git_repository *repo", - "sig": "git_refdb_backend **::git_repository *", - "return": { - "type": "int", - "comment": " 0 on success, \n<\n0 error code on failure" - }, - "description": "Constructors for default filesystem-based refdb backend
\n", - "comments": "Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.
\n", - "group": "refdb" + "argline": "const git_tag *tag", + "sig": "const git_tag *", + "return": { "type": "const git_oid *", "comment": " pointer to the OID" }, + "description": "Get the OID of the tagged object of a tag
\n", + "comments": "", + "group": "tag", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tag_target_id-31"] + } }, - "git_refdb_set_backend": { + "git_tag_target_type": { "type": "function", - "file": "sys/refdb_backend.h", - "line": 212, - "lineto": 214, + "file": "git2/tag.h", + "line": 105, + "lineto": 105, "args": [ { - "name": "refdb", - "type": "git_refdb *", - "comment": "database to add the backend to" - }, - { - "name": "backend", - "type": "git_refdb_backend *", - "comment": "pointer to a git_refdb_backend instance" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "git_refdb *refdb, git_refdb_backend *backend", - "sig": "git_refdb *::git_refdb_backend *", + "argline": "const git_tag *tag", + "sig": "const git_tag *", "return": { - "type": "int", - "comment": " 0 on success; error code otherwise" + "type": "git_object_t", + "comment": " type of the tagged object" }, - "description": "Sets the custom backend to an existing reference DB
\n", - "comments": "The git_refdb will take ownership of the git_refdb_backend so you should NOT free it after calling this function.
Get the type of a tag's tagged object
\n", + "comments": "", + "group": "tag", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tag_target_type-32"], + "general.c": ["ex/v1.9.1/general.html#git_tag_target_type-94"] + } }, - "git_reference__alloc": { + "git_tag_name": { "type": "function", - "file": "sys/refs.h", - "line": 31, - "lineto": 34, + "file": "git2/tag.h", + "line": 113, + "lineto": 113, "args": [ { - "name": "name", - "type": "const char *", - "comment": "the reference name" - }, - { - "name": "oid", - "type": "const git_oid *", - "comment": "the object id for a direct reference" - }, - { - "name": "peel", - "type": "const git_oid *", - "comment": "the first non-tag object's OID, or NULL" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "const char *name, const git_oid *oid, const git_oid *peel", - "sig": "const char *::const git_oid *::const git_oid *", - "return": { - "type": "git_reference *", - "comment": " the created git_reference or NULL on error" - }, - "description": "Create a new direct reference from an OID.
\n", + "argline": "const git_tag *tag", + "sig": "const git_tag *", + "return": { "type": "const char *", "comment": " name of the tag" }, + "description": "Get the name of a tag
\n", "comments": "", - "group": "reference" + "group": "tag", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tag_name-33"], + "general.c": ["ex/v1.9.1/general.html#git_tag_name-95"], + "tag.c": ["ex/v1.9.1/tag.html#git_tag_name-16"] + } }, - "git_reference__alloc_symbolic": { + "git_tag_tagger": { "type": "function", - "file": "sys/refs.h", - "line": 43, - "lineto": 45, + "file": "git2/tag.h", + "line": 121, + "lineto": 121, "args": [ { - "name": "name", - "type": "const char *", - "comment": "the reference name" - }, - { - "name": "target", - "type": "const char *", - "comment": "the target for a symbolic reference" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "const char *name, const char *target", - "sig": "const char *::const char *", + "argline": "const git_tag *tag", + "sig": "const git_tag *", "return": { - "type": "git_reference *", - "comment": " the created git_reference or NULL on error" + "type": "const git_signature *", + "comment": " reference to the tag's author or NULL when unspecified" }, - "description": "Create a new symbolic reference.
\n", + "description": "Get the tagger (author) of a tag
\n", "comments": "", - "group": "reference" + "group": "tag", + "examples": { + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tag_tagger-34"] + } }, - "git_repository_new": { + "git_tag_message": { "type": "function", - "file": "sys/repository.h", - "line": 31, - "lineto": 31, + "file": "git2/tag.h", + "line": 129, + "lineto": 129, "args": [ { - "name": "out", - "type": "git_repository **", - "comment": "The blank repository" + "name": "tag", + "type": "const git_tag *", + "comment": "a previously loaded tag." } ], - "argline": "git_repository **out", - "sig": "git_repository **", + "argline": "const git_tag *tag", + "sig": "const git_tag *", "return": { - "type": "int", - "comment": " 0 on success, or an error code" + "type": "const char *", + "comment": " message of the tag or NULL when unspecified" }, - "description": "Create a new repository with neither backends nor config object
\n", - "comments": "Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.
\n", - "group": "repository" + "description": "Get the message of a tag
\n", + "comments": "", + "group": "tag", + "examples": { + "cat-file.c": [ + "ex/v1.9.1/cat-file.html#git_tag_message-35", + "ex/v1.9.1/cat-file.html#git_tag_message-36" + ], + "general.c": ["ex/v1.9.1/general.html#git_tag_message-96"], + "tag.c": ["ex/v1.9.1/tag.html#git_tag_message-17"] + } }, - "git_repository__cleanup": { + "git_tag_create": { "type": "function", - "file": "sys/repository.h", - "line": 44, - "lineto": 44, + "file": "git2/tag.h", + "line": 171, + "lineto": 178, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": null - } - ], - "argline": "git_repository *repo", - "sig": "git_repository *", - "return": { - "type": "void", - "comment": null - }, - "description": "Reset all the internal state in a repository.
\n", - "comments": "This will free all the mapped memory and internal objects of the repository and leave it in a "blank" state.
\n\nThere's no need to call this function directly unless you're trying to aggressively cleanup the repo before its deallocation. git_repository_free already performs this operation before deallocation the repo.
Update the filesystem config settings for an open repository
\n", - "comments": "When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as "core.ignorecase", "core.filemode", "core.symlinks", etc. If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected. This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.
\n", - "group": "repository" + "description": "Create a new tag in the repository from an object
\n", + "comments": "A new reference will also be created pointing to this tag object. If force is true and a reference already exists with the given name, it'll be replaced.
The message will not be cleaned up. This can be achieved through git_message_prettify().
The tag name will be checked for validity. You must avoid the characters '~', '^', ':', '\\', '?', '[', and '*', and the sequences ".." and "@{" which have special meaning to revparse.
\n", + "group": "tag", + "examples": { "tag.c": ["ex/v1.9.1/tag.html#git_tag_create-18"] } }, - "git_repository_set_config": { + "git_tag_annotation_create": { "type": "function", - "file": "sys/repository.h", - "line": 78, - "lineto": 78, + "file": "git2/tag.h", + "line": 203, + "lineto": 209, "args": [ + { + "name": "oid", + "type": "git_oid *", + "comment": "Pointer where to store the OID of the\n newly created tag" + }, { "name": "repo", "type": "git_repository *", - "comment": "A repository object" + "comment": "Repository where to store the tag" }, { - "name": "config", - "type": "git_config *", - "comment": "A Config object" + "name": "tag_name", + "type": "const char *", + "comment": "Name for the tag" + }, + { + "name": "target", + "type": "const git_object *", + "comment": "Object to which this tag points. This object\n must belong to the given `repo`." + }, + { + "name": "tagger", + "type": "const git_signature *", + "comment": "Signature of the tagger for this tag, and\n of the tagging time" + }, + { + "name": "message", + "type": "const char *", + "comment": "Full message for this tag" } ], - "argline": "git_repository *repo, git_config *config", - "sig": "git_repository *::git_config *", - "return": { - "type": "void", - "comment": null - }, - "description": "Set the configuration file for this repository
\n", - "comments": "This configuration file will be used for all configuration queries involving this repository.
\n\nThe repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.
\n", - "group": "repository" + "argline": "git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message", + "sig": "git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Create a new tag in the object database pointing to a git_object
\n", + "comments": "The message will not be cleaned up. This can be achieved through git_message_prettify().
Set the Object Database for this repository
\n", - "comments": "The ODB will be used for all object-related operations involving this repository.
\n\nThe repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.
\n", - "group": "repository" + "description": "Create a new tag in the repository from a buffer
\n", + "comments": "", + "group": "tag" }, - "git_repository_set_refdb": { + "git_tag_create_lightweight": { "type": "function", - "file": "sys/repository.h", - "line": 108, - "lineto": 108, + "file": "git2/tag.h", + "line": 256, + "lineto": 261, "args": [ + { + "name": "oid", + "type": "git_oid *", + "comment": "Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code." + }, { "name": "repo", "type": "git_repository *", - "comment": "A repository object" + "comment": "Repository where to store the lightweight tag" }, { - "name": "refdb", - "type": "git_refdb *", - "comment": "An refdb object" + "name": "tag_name", + "type": "const char *", + "comment": "Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name" + }, + { + "name": "target", + "type": "const git_object *", + "comment": "Object to which this tag points. This object\n must belong to the given `repo`." + }, + { + "name": "force", + "type": "int", + "comment": "Overwrite existing references" } ], - "argline": "git_repository *repo, git_refdb *refdb", - "sig": "git_repository *::git_refdb *", + "argline": "git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force", + "sig": "git_oid *::git_repository *::const char *::const git_object *::int", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object" }, - "description": "Set the Reference Database Backend for this repository
\n", - "comments": "The refdb will be used for all reference related operations involving this repository.
\n\nThe repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.
\n", - "group": "repository" + "description": "Create a new lightweight tag pointing at a target object
\n", + "comments": "A new direct reference will be created pointing to this target object. If force is true and a reference already exists with the given name, it'll be replaced.
The tag name will be checked for validity. See git_tag_create() for rules about valid names.
Set the index file for this repository
\n", - "comments": "This index will be used for all index-related operations involving this repository.
\n\nThe repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.
\n", - "group": "repository" + "description": "Delete an existing tag reference.
\n", + "comments": "The tag name will be checked for validity. See git_tag_create() for rules about valid names.
Set a repository to be bare.
\n", - "comments": "Clear the working directory and set core.bare to true. You may also want to call git_repository_set_index(repo, NULL) since a bare repo typically does not have an index, but this function will not do that for you.
Fill a list with all the tags in the Repository
\n", + "comments": "The string array will be filled with the names of the matching tags; these values are owned by the user and should be free'd manually when no longer needed, using git_strarray_free.
Register a TLS stream constructor for the library to use
\n", - "comments": "If a constructor is already set, it will be overwritten. Pass NULL in order to deregister the current constructor.
Fill a list with all the tags in the Repository\n which name match a defined pattern
\n", + "comments": "If an empty pattern is provided, all the tags will be returned.
\n\nThe string array will be filled with the names of the matching tags; these values are owned by the user and should be free'd manually when no longer needed, using git_strarray_free.
Initializes a git_transport with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.
Call callback `cb' for each tag in the repository
\n", "comments": "", - "group": "transport" + "group": "tag" }, - "git_transport_new": { + "git_tag_peel": { "type": "function", - "file": "sys/transport.h", - "line": 133, - "lineto": 133, + "file": "git2/tag.h", + "line": 356, + "lineto": 358, "args": [ { - "name": "out", - "type": "git_transport **", - "comment": "The newly created transport (out)" - }, - { - "name": "owner", - "type": "git_remote *", - "comment": "The git_remote which will own this transport" + "name": "tag_target_out", + "type": "git_object **", + "comment": "Pointer to the peeled git_object" }, { - "name": "url", - "type": "const char *", - "comment": "The URL to connect to" + "name": "tag", + "type": "const git_tag *", + "comment": "The tag to be processed" } ], - "argline": "git_transport **out, git_remote *owner, const char *url", - "sig": "git_transport **::git_remote *::const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.
\n", - "comments": "", - "group": "transport" + "argline": "git_object **tag_target_out, const git_tag *tag", + "sig": "git_object **::const git_tag *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Recursively peel a tag until a non tag git_object is found
\n", + "comments": "The retrieved tag_target object is owned by the repository and should be closed with the git_object_free method.
Create an ssh transport with custom git command paths
\n", - "comments": "This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).
\n\nThe payload argument must be a strarray pointer with the paths for the git-upload-pack and git-receive-pack at index 0 and 1.
Create an in-memory copy of a tag. The copy must be explicitly\n free'd or it will leak.
\n", + "comments": "", + "group": "tag" }, - "git_transport_unregister": { + "git_tag_name_is_valid": { "type": "function", - "file": "sys/transport.h", - "line": 177, - "lineto": 178, + "file": "git2/tag.h", + "line": 380, + "lineto": 380, "args": [ { - "name": "prefix", + "name": "valid", + "type": "int *", + "comment": "output pointer to set with validity of given tag name" + }, + { + "name": "name", "type": "const char *", - "comment": "From the previous call to git_transport_register" + "comment": "a tag name to test" } ], - "argline": "const char *prefix", - "sig": "const char *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Unregister a custom transport definition which was previously registered\n with git_transport_register.
\n", + "argline": "int *valid, const char *name", + "sig": "int *::const char *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Determine whether a tag name is valid, meaning that (when prefixed\n with refs/tags/) that it is a valid reference name, and that any\n additional tag name restrictions are imposed (eg, it cannot start\n with a -).
Create an instance of the dummy transport.
\n", + "argline": "git_trace_level_t level, git_trace_cb cb", + "sig": "git_trace_level_t::git_trace_cb", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Sets the system tracing configuration to the specified level with the\n specified callback. When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.
\n", "comments": "", - "group": "transport" + "group": "trace" }, - "git_transport_local": { + "git_transaction_new": { "type": "function", - "file": "sys/transport.h", - "line": 204, - "lineto": 207, + "file": "git2/transaction.h", + "line": 32, + "lineto": 32, "args": [ { "name": "out", - "type": "git_transport **", - "comment": "The newly created transport (out)" - }, - { - "name": "owner", - "type": "git_remote *", - "comment": "The git_remote which will own this transport" + "type": "git_transaction **", + "comment": "the resulting transaction" }, { - "name": "payload", - "type": "void *", - "comment": "You must pass NULL for this parameter." + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to lock" } ], - "argline": "git_transport **out, git_remote *owner, void *payload", - "sig": "git_transport **::git_remote *::void *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Create an instance of the local transport.
\n", - "comments": "", - "group": "transport" + "argline": "git_transaction **out, git_repository *repo", + "sig": "git_transaction **::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a new transaction object
\n", + "comments": "This does not lock anything, but sets up the transaction object to know from which repository to lock.
\n", + "group": "transaction" }, - "git_transport_smart": { + "git_transaction_lock_ref": { "type": "function", - "file": "sys/transport.h", - "line": 217, - "lineto": 220, + "file": "git2/transaction.h", + "line": 44, + "lineto": 44, "args": [ { - "name": "out", - "type": "git_transport **", - "comment": "The newly created transport (out)" - }, - { - "name": "owner", - "type": "git_remote *", - "comment": "The git_remote which will own this transport" + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" }, { - "name": "payload", - "type": "void *", - "comment": "A pointer to a git_smart_subtransport_definition" + "name": "refname", + "type": "const char *", + "comment": "the reference to lock" } ], - "argline": "git_transport **out, git_remote *owner, void *payload", - "sig": "git_transport **::git_remote *::void *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Create an instance of the smart transport.
\n", - "comments": "", - "group": "transport" + "argline": "git_transaction *tx, const char *refname", + "sig": "git_transaction *::const char *", + "return": { "type": "int", "comment": " 0 or an error message" }, + "description": "Lock a reference
\n", + "comments": "Lock the specified reference. This is the first step to updating a reference.
\n", + "group": "transaction" }, - "git_transport_smart_certificate_check": { + "git_transaction_set_target": { "type": "function", - "file": "sys/transport.h", - "line": 231, - "lineto": 231, + "file": "git2/transaction.h", + "line": 59, + "lineto": 59, "args": [ { - "name": "transport", - "type": "git_transport *", - "comment": "a smart transport" + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" }, { - "name": "cert", - "type": "git_cert *", - "comment": "the certificate to pass to the caller" + "name": "refname", + "type": "const char *", + "comment": "reference to update" }, { - "name": "valid", - "type": "int", - "comment": "whether we believe the certificate is valid" + "name": "target", + "type": "const git_oid *", + "comment": "target to set the reference to" + }, + { + "name": "sig", + "type": "const git_signature *", + "comment": "signature to use in the reflog; pass NULL to read the identity from the config" }, { - "name": "hostname", + "name": "msg", "type": "const char *", - "comment": "the hostname we connected to" + "comment": "message to use in the reflog" } ], - "argline": "git_transport *transport, git_cert *cert, int valid, const char *hostname", - "sig": "git_transport *::git_cert *::int::const char *", + "argline": "git_transaction *tx, const char *refname, const git_oid *target, const git_signature *sig, const char *msg", + "sig": "git_transaction *::const char *::const git_oid *::const git_signature *::const char *", "return": { "type": "int", - "comment": " the return value of the callback" + "comment": " 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code" }, - "description": "Call the certificate check for this transport.
\n", - "comments": "", - "group": "transport" + "description": "Set the target of a reference
\n", + "comments": "Set the target of the specified reference. This reference must be locked.
\n", + "group": "transaction" }, - "git_smart_subtransport_http": { + "git_transaction_set_symbolic_target": { "type": "function", - "file": "sys/transport.h", - "line": 352, - "lineto": 355, + "file": "git2/transaction.h", + "line": 74, + "lineto": 74, "args": [ { - "name": "out", - "type": "git_smart_subtransport **", - "comment": "The newly created subtransport" + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" }, { - "name": "owner", - "type": "git_transport *", - "comment": "The smart transport to own this subtransport" + "name": "refname", + "type": "const char *", + "comment": "reference to update" }, { - "name": "param", - "type": "void *", - "comment": null + "name": "target", + "type": "const char *", + "comment": "target to set the reference to" + }, + { + "name": "sig", + "type": "const git_signature *", + "comment": "signature to use in the reflog; pass NULL to read the identity from the config" + }, + { + "name": "msg", + "type": "const char *", + "comment": "message to use in the reflog" } ], - "argline": "git_smart_subtransport **out, git_transport *owner, void *param", - "sig": "git_smart_subtransport **::git_transport *::void *", + "argline": "git_transaction *tx, const char *refname, const char *target, const git_signature *sig, const char *msg", + "sig": "git_transaction *::const char *::const char *::const git_signature *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code" }, - "description": "Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.
\n", - "comments": "", - "group": "smart" + "description": "Set the target of a reference
\n", + "comments": "Set the target of the specified reference. This reference must be locked.
\n", + "group": "transaction" }, - "git_smart_subtransport_git": { + "git_transaction_set_reflog": { "type": "function", - "file": "sys/transport.h", - "line": 364, - "lineto": 367, + "file": "git2/transaction.h", + "line": 87, + "lineto": 87, "args": [ { - "name": "out", - "type": "git_smart_subtransport **", - "comment": "The newly created subtransport" + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" }, { - "name": "owner", - "type": "git_transport *", - "comment": "The smart transport to own this subtransport" + "name": "refname", + "type": "const char *", + "comment": "the reference whose reflog to set" }, { - "name": "param", - "type": "void *", - "comment": null + "name": "reflog", + "type": "const git_reflog *", + "comment": "the reflog as it should be written out" } ], - "argline": "git_smart_subtransport **out, git_transport *owner, void *param", - "sig": "git_smart_subtransport **::git_transport *::void *", + "argline": "git_transaction *tx, const char *refname, const git_reflog *reflog", + "sig": "git_transaction *::const char *::const git_reflog *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code" }, - "description": "Create an instance of the git subtransport.
\n", - "comments": "", - "group": "smart" + "description": "Set the reflog of a reference
\n", + "comments": "Set the specified reference's reflog. If this is combined with setting the target, that update won't be written to the reflog.
\n", + "group": "transaction" }, - "git_smart_subtransport_ssh": { + "git_transaction_remove": { "type": "function", - "file": "sys/transport.h", - "line": 376, - "lineto": 379, + "file": "git2/transaction.h", + "line": 96, + "lineto": 96, "args": [ { - "name": "out", - "type": "git_smart_subtransport **", - "comment": "The newly created subtransport" - }, - { - "name": "owner", - "type": "git_transport *", - "comment": "The smart transport to own this subtransport" + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" }, { - "name": "param", - "type": "void *", - "comment": null + "name": "refname", + "type": "const char *", + "comment": "the reference to remove" } ], - "argline": "git_smart_subtransport **out, git_transport *owner, void *param", - "sig": "git_smart_subtransport **::git_transport *::void *", + "argline": "git_transaction *tx, const char *refname", + "sig": "git_transaction *::const char *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0, GIT_ENOTFOUND if the reference is not among the locked ones, or an error code" }, - "description": "Create an instance of the ssh subtransport.
\n", + "description": "Remove a reference
\n", "comments": "", - "group": "smart" + "group": "transaction" }, - "git_tag_lookup": { + "git_transaction_commit": { "type": "function", - "file": "tag.h", - "line": 33, - "lineto": 34, + "file": "git2/transaction.h", + "line": 107, + "lineto": 107, + "args": [ + { + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" + } + ], + "argline": "git_transaction *tx", + "sig": "git_transaction *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Commit the changes from the transaction
\n", + "comments": "Perform the changes that have been queued. The updates will be made one by one, and the first failure will stop the processing.
\n", + "group": "transaction" + }, + "git_transaction_free": { + "type": "function", + "file": "git2/transaction.h", + "line": 117, + "lineto": 117, + "args": [ + { + "name": "tx", + "type": "git_transaction *", + "comment": "the transaction" + } + ], + "argline": "git_transaction *tx", + "sig": "git_transaction *", + "return": { "type": "void", "comment": null }, + "description": "Free the resources allocated by this transaction
\n", + "comments": "If any references remain locked, they will be unlocked without any changes made to them.
\n", + "group": "transaction" + }, + "git_tree_lookup": { + "type": "function", + "file": "git2/tree.h", + "line": 32, + "lineto": 33, "args": [ { "name": "out", - "type": "git_tag **", - "comment": "pointer to the looked up tag" + "type": "git_tree **", + "comment": "Pointer to the looked up tree" }, { "name": "repo", "type": "git_repository *", - "comment": "the repo to use when locating the tag." + "comment": "The repo to use when locating the tree." }, { "name": "id", "type": "const git_oid *", - "comment": "identity of the tag to locate." + "comment": "Identity of the tree to locate." } ], - "argline": "git_tag **out, git_repository *repo, const git_oid *id", - "sig": "git_tag **::git_repository *::const git_oid *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Lookup a tag object from the repository.
\n", + "argline": "git_tree **out, git_repository *repo, const git_oid *id", + "sig": "git_tree **::git_repository *::const git_oid *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a tree object from the repository.
\n", "comments": "", - "group": "tag", + "group": "tree", "examples": { + "commit.c": ["ex/v1.9.1/commit.html#git_tree_lookup-13"], "general.c": [ - "ex/HEAD/general.html#git_tag_lookup-70" - ] + "ex/v1.9.1/general.html#git_tree_lookup-97", + "ex/v1.9.1/general.html#git_tree_lookup-98" + ], + "init.c": ["ex/v1.9.1/init.html#git_tree_lookup-13"], + "merge.c": ["ex/v1.9.1/merge.html#git_tree_lookup-37"] } }, - "git_tag_lookup_prefix": { + "git_tree_lookup_prefix": { "type": "function", - "file": "tag.h", - "line": 48, - "lineto": 49, + "file": "git2/tree.h", + "line": 47, + "lineto": 51, "args": [ { "name": "out", - "type": "git_tag **", - "comment": "pointer to the looked up tag" + "type": "git_tree **", + "comment": "pointer to the looked up tree" }, { "name": "repo", "type": "git_repository *", - "comment": "the repo to use when locating the tag." + "comment": "the repo to use when locating the tree." }, { "name": "id", "type": "const git_oid *", - "comment": "identity of the tag to locate." + "comment": "identity of the tree to locate." }, { "name": "len", @@ -21727,8555 +22386,8795 @@ "comment": "the length of the short identifier" } ], - "argline": "git_tag **out, git_repository *repo, const git_oid *id, size_t len", - "sig": "git_tag **::git_repository *::const git_oid *::size_t", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Lookup a tag object from the repository,\n given a prefix of its identifier (short id).
\n", + "argline": "git_tree **out, git_repository *repo, const git_oid *id, size_t len", + "sig": "git_tree **::git_repository *::const git_oid *::size_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a tree object from the repository,\n given a prefix of its identifier (short id).
\n", "comments": "", - "group": "tag" + "group": "tree" }, - "git_tag_free": { + "git_tree_free": { "type": "function", - "file": "tag.h", - "line": 61, - "lineto": 61, + "file": "git2/tree.h", + "line": 63, + "lineto": 63, "args": [ - { - "name": "tag", - "type": "git_tag *", - "comment": "the tag to close" - } + { "name": "tree", "type": "git_tree *", "comment": "The tree to close" } ], - "argline": "git_tag *tag", - "sig": "git_tag *", - "return": { - "type": "void", - "comment": null - }, - "description": "Close an open tag
\n", - "comments": "You can no longer use the git_tag pointer after this call.
\n\nIMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.
\n", - "group": "tag" + "argline": "git_tree *tree", + "sig": "git_tree *", + "return": { "type": "void", "comment": null }, + "description": "Close an open tree
\n", + "comments": "You can no longer use the git_tree pointer after this call.
\n\nIMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.
\n", + "group": "tree", + "examples": { + "commit.c": ["ex/v1.9.1/commit.html#git_tree_free-14"], + "diff.c": [ + "ex/v1.9.1/diff.html#git_tree_free-19", + "ex/v1.9.1/diff.html#git_tree_free-20" + ], + "general.c": [ + "ex/v1.9.1/general.html#git_tree_free-99", + "ex/v1.9.1/general.html#git_tree_free-100" + ], + "init.c": ["ex/v1.9.1/init.html#git_tree_free-14"], + "log.c": [ + "ex/v1.9.1/log.html#git_tree_free-55", + "ex/v1.9.1/log.html#git_tree_free-56", + "ex/v1.9.1/log.html#git_tree_free-57", + "ex/v1.9.1/log.html#git_tree_free-58", + "ex/v1.9.1/log.html#git_tree_free-59" + ] + } }, - "git_tag_id": { + "git_tree_id": { "type": "function", - "file": "tag.h", - "line": 69, - "lineto": 69, + "file": "git2/tree.h", + "line": 71, + "lineto": 71, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "tree", + "type": "const git_tree *", + "comment": "a previously loaded tree." } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree *tree", + "sig": "const git_tree *", "return": { "type": "const git_oid *", - "comment": " object identity for the tag." + "comment": " object identity for the tree." }, - "description": "Get the id of a tag.
\n", + "description": "Get the id of a tree.
\n", "comments": "", - "group": "tag" + "group": "tree" }, - "git_tag_owner": { + "git_tree_owner": { "type": "function", - "file": "tag.h", - "line": 77, - "lineto": 77, + "file": "git2/tree.h", + "line": 79, + "lineto": 79, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "A previously loaded tag." + "name": "tree", + "type": "const git_tree *", + "comment": "A previously loaded tree." } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree *tree", + "sig": "const git_tree *", "return": { "type": "git_repository *", - "comment": " Repository that contains this tag." + "comment": " Repository that contains this tree." }, - "description": "Get the repository that contains the tag.
\n", + "description": "Get the repository that contains the tree.
\n", "comments": "", - "group": "tag" + "group": "tree" }, - "git_tag_target": { + "git_tree_entrycount": { "type": "function", - "file": "tag.h", - "line": 89, - "lineto": 89, + "file": "git2/tree.h", + "line": 87, + "lineto": 87, "args": [ { - "name": "target_out", - "type": "git_object **", - "comment": "pointer where to store the target" - }, - { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "tree", + "type": "const git_tree *", + "comment": "a previously loaded tree." } ], - "argline": "git_object **target_out, const git_tag *tag", - "sig": "git_object **::const git_tag *", + "argline": "const git_tree *tree", + "sig": "const git_tree *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "size_t", + "comment": " the number of entries in the tree" }, - "description": "Get the tagged object of a tag
\n", - "comments": "This method performs a repository lookup for the given object and returns it
\n", - "group": "tag", + "description": "Get the number of entries listed in a tree
\n", + "comments": "", + "group": "tree", "examples": { - "general.c": [ - "ex/HEAD/general.html#git_tag_target-71" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tree_entrycount-37"], + "general.c": ["ex/v1.9.1/general.html#git_tree_entrycount-101"] } }, - "git_tag_target_id": { + "git_tree_entry_byname": { "type": "function", - "file": "tag.h", - "line": 97, - "lineto": 97, + "file": "git2/tree.h", + "line": 99, + "lineto": 100, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "tree", + "type": "const git_tree *", + "comment": "a previously loaded tree." + }, + { + "name": "filename", + "type": "const char *", + "comment": "the filename of the desired entry" } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree *tree, const char *filename", + "sig": "const git_tree *::const char *", "return": { - "type": "const git_oid *", - "comment": " pointer to the OID" + "type": "const git_tree_entry *", + "comment": " the tree entry; NULL if not found" }, - "description": "Get the OID of the tagged object of a tag
\n", - "comments": "", - "group": "tag", + "description": "Lookup a tree entry by its filename
\n", + "comments": "This returns a git_tree_entry that is owned by the git_tree. You don't have to free it, but you must not use it after the git_tree is released.
\n", + "group": "tree", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tag_target_id-35" - ] + "general.c": ["ex/v1.9.1/general.html#git_tree_entry_byname-102"] } }, - "git_tag_target_type": { + "git_tree_entry_byindex": { "type": "function", - "file": "tag.h", - "line": 105, - "lineto": 105, + "file": "git2/tree.h", + "line": 112, + "lineto": 113, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "tree", + "type": "const git_tree *", + "comment": "a previously loaded tree." + }, + { + "name": "idx", + "type": "size_t", + "comment": "the position in the entry list" } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree *tree, size_t idx", + "sig": "const git_tree *::size_t", "return": { - "type": "git_otype", - "comment": " type of the tagged object" + "type": "const git_tree_entry *", + "comment": " the tree entry; NULL if not found" }, - "description": "Get the type of a tag's tagged object
\n", - "comments": "", - "group": "tag", + "description": "Lookup a tree entry by its position in the tree
\n", + "comments": "This returns a git_tree_entry that is owned by the git_tree. You don't have to free it, but you must not use it after the git_tree is released.
\n", + "group": "tree", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tag_target_type-36" - ], - "general.c": [ - "ex/HEAD/general.html#git_tag_target_type-72" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tree_entry_byindex-38"], + "general.c": ["ex/v1.9.1/general.html#git_tree_entry_byindex-103"] } }, - "git_tag_name": { + "git_tree_entry_byid": { "type": "function", - "file": "tag.h", - "line": 113, - "lineto": 113, + "file": "git2/tree.h", + "line": 127, + "lineto": 128, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "tree", + "type": "const git_tree *", + "comment": "a previously loaded tree." + }, + { + "name": "id", + "type": "const git_oid *", + "comment": "the sha being looked for" } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree *tree, const git_oid *id", + "sig": "const git_tree *::const git_oid *", "return": { - "type": "const char *", - "comment": " name of the tag" + "type": "const git_tree_entry *", + "comment": " the tree entry; NULL if not found" }, - "description": "Get the name of a tag
\n", + "description": "Lookup a tree entry by SHA value.
\n", + "comments": "This returns a git_tree_entry that is owned by the git_tree. You don't have to free it, but you must not use it after the git_tree is released.
\n\nWarning: this must examine every entry in the tree, so it is not fast.
\n", + "group": "tree" + }, + "git_tree_entry_bypath": { + "type": "function", + "file": "git2/tree.h", + "line": 142, + "lineto": 145, + "args": [ + { + "name": "out", + "type": "git_tree_entry **", + "comment": "Pointer where to store the tree entry" + }, + { + "name": "root", + "type": "const git_tree *", + "comment": "Previously loaded tree which is the root of the relative path" + }, + { + "name": "path", + "type": "const char *", + "comment": "Path to the contained entry" + } + ], + "argline": "git_tree_entry **out, const git_tree *root, const char *path", + "sig": "git_tree_entry **::const git_tree *::const char *", + "return": { + "type": "int", + "comment": " 0 on success; GIT_ENOTFOUND if the path does not exist" + }, + "description": "Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.
\n", + "comments": "Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with git_tree_entry_free().
Duplicate a tree entry
\n", + "comments": "Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with git_tree_entry_free().
Free a user-owned tree entry
\n", + "comments": "IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by git_tree_entry_dup() or git_tree_entry_bypath().
Get the filename of a tree entry
\n", "comments": "", - "group": "tag", + "group": "tree", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tag_name-37" - ], + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tree_entry_name-39"], "general.c": [ - "ex/HEAD/general.html#git_tag_name-73" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_tag_name-20" + "ex/v1.9.1/general.html#git_tree_entry_name-104", + "ex/v1.9.1/general.html#git_tree_entry_name-105" ] } }, - "git_tag_tagger": { + "git_tree_entry_id": { "type": "function", - "file": "tag.h", - "line": 121, - "lineto": 121, + "file": "git2/tree.h", + "line": 184, + "lineto": 184, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "entry", + "type": "const git_tree_entry *", + "comment": "a tree entry" } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree_entry *entry", + "sig": "const git_tree_entry *", "return": { - "type": "const git_signature *", - "comment": " reference to the tag's author or NULL when unspecified" + "type": "const git_oid *", + "comment": " the oid of the object" }, - "description": "Get the tagger (author) of a tag
\n", + "description": "Get the id of the object pointed by the entry
\n", "comments": "", - "group": "tag", + "group": "tree", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tag_tagger-38" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tree_entry_id-40"] } }, - "git_tag_message": { + "git_tree_entry_type": { "type": "function", - "file": "tag.h", - "line": 129, - "lineto": 129, + "file": "git2/tree.h", + "line": 192, + "lineto": 192, "args": [ { - "name": "tag", - "type": "const git_tag *", - "comment": "a previously loaded tag." + "name": "entry", + "type": "const git_tree_entry *", + "comment": "a tree entry" } ], - "argline": "const git_tag *tag", - "sig": "const git_tag *", + "argline": "const git_tree_entry *entry", + "sig": "const git_tree_entry *", "return": { - "type": "const char *", - "comment": " message of the tag or NULL when unspecified" + "type": "git_object_t", + "comment": " the type of the pointed object" }, - "description": "Get the message of a tag
\n", + "description": "Get the type of the object pointed by the entry
\n", "comments": "", - "group": "tag", + "group": "tree", "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tag_message-39", - "ex/HEAD/cat-file.html#git_tag_message-40" - ], - "general.c": [ - "ex/HEAD/general.html#git_tag_message-74" - ], - "tag.c": [ - "ex/HEAD/tag.html#git_tag_message-21" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tree_entry_type-41"] } }, - "git_tag_create": { + "git_tree_entry_filemode": { "type": "function", - "file": "tag.h", - "line": 171, - "lineto": 178, + "file": "git2/tree.h", + "line": 200, + "lineto": 200, "args": [ { - "name": "oid", - "type": "git_oid *", - "comment": "Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code." - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where to store the tag" - }, - { - "name": "tag_name", - "type": "const char *", - "comment": "Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name" - }, - { - "name": "target", - "type": "const git_object *", - "comment": "Object to which this tag points. This object\n must belong to the given `repo`." - }, - { - "name": "tagger", - "type": "const git_signature *", - "comment": "Signature of the tagger for this tag, and\n of the tagging time" - }, - { - "name": "message", - "type": "const char *", - "comment": "Full message for this tag" - }, - { - "name": "force", - "type": "int", - "comment": "Overwrite existing references" + "name": "entry", + "type": "const git_tree_entry *", + "comment": "a tree entry" } ], - "argline": "git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force", - "sig": "git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int", + "argline": "const git_tree_entry *entry", + "sig": "const git_tree_entry *", "return": { - "type": "int", - "comment": " 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it" + "type": "git_filemode_t", + "comment": " filemode as an integer" }, - "description": "Create a new tag in the repository from an object
\n", - "comments": "A new reference will also be created pointing to this tag object. If force is true and a reference already exists with the given name, it'll be replaced.
The message will not be cleaned up. This can be achieved through git_message_prettify().
The tag name will be checked for validity. You must avoid the characters '~', '^', ':', '\\', '?', '[', and '*', and the sequences ".." and "@{" which have special meaning to revparse.
\n", - "group": "tag", + "description": "Get the UNIX file attributes of a tree entry
\n", + "comments": "", + "group": "tree", "examples": { - "tag.c": [ - "ex/HEAD/tag.html#git_tag_create-22" - ] + "cat-file.c": ["ex/v1.9.1/cat-file.html#git_tree_entry_filemode-42"] } }, - "git_tag_annotation_create": { + "git_tree_entry_filemode_raw": { "type": "function", - "file": "tag.h", - "line": 203, - "lineto": 209, + "file": "git2/tree.h", + "line": 212, + "lineto": 212, "args": [ { - "name": "oid", - "type": "git_oid *", - "comment": "Pointer where to store the OID of the\n newly created tag" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where to store the tag" - }, - { - "name": "tag_name", - "type": "const char *", - "comment": "Name for the tag" - }, - { - "name": "target", - "type": "const git_object *", - "comment": "Object to which this tag points. This object\n must belong to the given `repo`." - }, - { - "name": "tagger", - "type": "const git_signature *", - "comment": "Signature of the tagger for this tag, and\n of the tagging time" - }, - { - "name": "message", - "type": "const char *", - "comment": "Full message for this tag" + "name": "entry", + "type": "const git_tree_entry *", + "comment": "a tree entry" } ], - "argline": "git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message", - "sig": "git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *", + "argline": "const git_tree_entry *entry", + "sig": "const git_tree_entry *", "return": { - "type": "int", - "comment": " 0 on success or an error code" + "type": "git_filemode_t", + "comment": " filemode as an integer" }, - "description": "Create a new tag in the object database pointing to a git_object
\n", - "comments": "The message will not be cleaned up. This can be achieved through git_message_prettify().
Get the raw UNIX file attributes of a tree entry
\n", + "comments": "This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.
\n", + "group": "tree" }, - "git_tag_create_frombuffer": { + "git_tree_entry_cmp": { "type": "function", - "file": "tag.h", + "file": "git2/tree.h", "line": 220, - "lineto": 224, + "lineto": 220, "args": [ { - "name": "oid", - "type": "git_oid *", - "comment": "Pointer where to store the OID of the newly created tag" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where to store the tag" - }, - { - "name": "buffer", - "type": "const char *", - "comment": "Raw tag data" + "name": "e1", + "type": "const git_tree_entry *", + "comment": "first tree entry" }, { - "name": "force", - "type": "int", - "comment": "Overwrite existing tags" + "name": "e2", + "type": "const git_tree_entry *", + "comment": "second tree entry" } ], - "argline": "git_oid *oid, git_repository *repo, const char *buffer, int force", - "sig": "git_oid *::git_repository *::const char *::int", + "argline": "const git_tree_entry *e1, const git_tree_entry *e2", + "sig": "const git_tree_entry *::const git_tree_entry *", "return": { "type": "int", - "comment": " 0 on success; error code otherwise" + "comment": " \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2" }, - "description": "Create a new tag in the repository from a buffer
\n", + "description": "Compare two tree entries
\n", "comments": "", - "group": "tag" + "group": "tree" }, - "git_tag_create_lightweight": { + "git_tree_entry_to_object": { "type": "function", - "file": "tag.h", - "line": 256, - "lineto": 261, + "file": "git2/tree.h", + "line": 232, + "lineto": 235, "args": [ { - "name": "oid", - "type": "git_oid *", - "comment": "Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code." + "name": "object_out", + "type": "git_object **", + "comment": "pointer to the converted object" }, { "name": "repo", "type": "git_repository *", - "comment": "Repository where to store the lightweight tag" - }, - { - "name": "tag_name", - "type": "const char *", - "comment": "Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name" - }, - { - "name": "target", - "type": "const git_object *", - "comment": "Object to which this tag points. This object\n must belong to the given `repo`." + "comment": "repository where to lookup the pointed object" }, { - "name": "force", - "type": "int", - "comment": "Overwrite existing references" + "name": "entry", + "type": "const git_tree_entry *", + "comment": "a tree entry" } ], - "argline": "git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force", - "sig": "git_oid *::git_repository *::const char *::const git_object *::int", - "return": { - "type": "int", - "comment": " 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object" - }, - "description": "Create a new lightweight tag pointing at a target object
\n", - "comments": "A new direct reference will be created pointing to this target object. If force is true and a reference already exists with the given name, it'll be replaced.
The tag name will be checked for validity. See git_tag_create() for rules about valid names.
Convert a tree entry to the git_object it points to.
\n", + "comments": "You must call git_object_free() on the object when you are done with it.
Delete an existing tag reference.
\n", - "comments": "The tag name will be checked for validity. See git_tag_create() for rules about valid names.
Create a new tree builder.
\n", + "comments": "The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.
\n\nIf the source parameter is not NULL, the tree builder will be initialized with the entries of the given tree.
If the source parameter is NULL, the tree builder will start with no entries and will have to be filled manually.
Fill a list with all the tags in the Repository
\n", - "comments": "The string array will be filled with the names of the matching tags; these values are owned by the user and should be free'd manually when no longer needed, using git_strarray_free.
Clear all the entries in the builder
\n", + "comments": "", + "group": "treebuilder" }, - "git_tag_list_match": { + "git_treebuilder_entrycount": { "type": "function", - "file": "tag.h", - "line": 315, - "lineto": 318, + "file": "git2/tree.h", + "line": 271, + "lineto": 271, "args": [ { - "name": "tag_names", - "type": "git_strarray *", - "comment": "Pointer to a git_strarray structure where\n\t\tthe tag names will be stored" - }, - { - "name": "pattern", - "type": "const char *", - "comment": "Standard fnmatch pattern" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "Repository where to find the tags" + "name": "bld", + "type": "git_treebuilder *", + "comment": "a previously loaded treebuilder." } ], - "argline": "git_strarray *tag_names, const char *pattern, git_repository *repo", - "sig": "git_strarray *::const char *::git_repository *", + "argline": "git_treebuilder *bld", + "sig": "git_treebuilder *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "size_t", + "comment": " the number of entries in the treebuilder" }, - "description": "Fill a list with all the tags in the Repository\n which name match a defined pattern
\n", - "comments": "If an empty pattern is provided, all the tags will be returned.
\n\nThe string array will be filled with the names of the matching tags; these values are owned by the user and should be free'd manually when no longer needed, using git_strarray_free.
Get the number of entries listed in a treebuilder
\n", + "comments": "", + "group": "treebuilder" }, - "git_tag_foreach": { + "git_treebuilder_free": { "type": "function", - "file": "tag.h", - "line": 330, - "lineto": 333, + "file": "git2/tree.h", + "line": 282, + "lineto": 282, "args": [ { - "name": "repo", - "type": "git_repository *", - "comment": "Repository" - }, - { - "name": "callback", - "type": "git_tag_foreach_cb", - "comment": "Callback function" - }, - { - "name": "payload", - "type": "void *", - "comment": "Pointer to callback data (optional)" + "name": "bld", + "type": "git_treebuilder *", + "comment": "Builder to free" } ], - "argline": "git_repository *repo, git_tag_foreach_cb callback, void *payload", - "sig": "git_repository *::git_tag_foreach_cb::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Call callback `cb' for each tag in the repository
\n", - "comments": "", - "group": "tag" + "argline": "git_treebuilder *bld", + "sig": "git_treebuilder *", + "return": { "type": "void", "comment": null }, + "description": "Free a tree builder
\n", + "comments": "This will clear all the entries and free to builder. Failing to free the builder after you're done using it will result in a memory leak
\n", + "group": "treebuilder" }, - "git_tag_peel": { + "git_treebuilder_get": { "type": "function", - "file": "tag.h", - "line": 346, - "lineto": 348, + "file": "git2/tree.h", + "line": 294, + "lineto": 295, "args": [ { - "name": "tag_target_out", - "type": "git_object **", - "comment": "Pointer to the peeled git_object" + "name": "bld", + "type": "git_treebuilder *", + "comment": "Tree builder" }, { - "name": "tag", - "type": "const git_tag *", - "comment": "The tag to be processed" + "name": "filename", + "type": "const char *", + "comment": "Name of the entry" } ], - "argline": "git_object **tag_target_out, const git_tag *tag", - "sig": "git_object **::const git_tag *", + "argline": "git_treebuilder *bld, const char *filename", + "sig": "git_treebuilder *::const char *", "return": { - "type": "int", - "comment": " 0 or an error code" + "type": "const git_tree_entry *", + "comment": " pointer to the entry; NULL if not found" }, - "description": "Recursively peel a tag until a non tag git_object is found
\n", - "comments": "The retrieved tag_target object is owned by the repository and should be closed with the git_object_free method.
Get an entry from the builder from its filename
\n", + "comments": "The returned entry is owned by the builder and should not be freed manually.
\n", + "group": "treebuilder" }, - "git_tag_dup": { + "git_treebuilder_insert": { "type": "function", - "file": "tag.h", - "line": 357, - "lineto": 357, + "file": "git2/tree.h", + "line": 325, + "lineto": 330, "args": [ { "name": "out", - "type": "git_tag **", - "comment": "Pointer to store the copy of the tag" + "type": "const git_tree_entry **", + "comment": "Pointer to store the entry (optional)" }, { - "name": "source", - "type": "git_tag *", - "comment": "Original tag to copy" - } - ], - "argline": "git_tag **out, git_tag *source", - "sig": "git_tag **::git_tag *", - "return": { - "type": "int", - "comment": null - }, - "description": "Create an in-memory copy of a tag. The copy must be explicitly\n free'd or it will leak.
\n", - "comments": "", - "group": "tag" - }, - "git_trace_set": { - "type": "function", - "file": "trace.h", - "line": 63, - "lineto": 63, - "args": [ + "name": "bld", + "type": "git_treebuilder *", + "comment": "Tree builder" + }, { - "name": "level", - "type": "git_trace_level_t", - "comment": "Level to set tracing to" + "name": "filename", + "type": "const char *", + "comment": "Filename of the entry" }, { - "name": "cb", - "type": "git_trace_callback", - "comment": "Function to call with trace data" + "name": "id", + "type": "const git_oid *", + "comment": "SHA1 oid of the entry" + }, + { + "name": "filemode", + "type": "git_filemode_t", + "comment": "Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000." } ], - "argline": "git_trace_level_t level, git_trace_callback cb", - "sig": "git_trace_level_t::git_trace_callback", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Sets the system tracing configuration to the specified level with the\n specified callback. When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.
\n", - "comments": "", - "group": "trace" + "argline": "const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode", + "sig": "const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Add or update an entry to the builder
\n", + "comments": "Insert a new entry for filename in the builder with the given attributes.
If an entry named filename already exists, its attributes will be updated with the given ones.
The optional pointer out can be used to retrieve a pointer to the newly created/updated entry. Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.
By default the entry that you are inserting will be checked for validity; that it exists in the object database and is of the correct type. If you do not want this behavior, set the GIT_OPT_ENABLE_STRICT_OBJECT_CREATION library option to false.
Check whether a credential object contains username information.
\n", + "argline": "git_treebuilder *bld, const char *filename", + "sig": "git_treebuilder *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Remove an entry from the builder by its filename
\n", "comments": "", - "group": "cred" + "group": "treebuilder" }, - "git_cred_userpass_plaintext_new": { + "git_treebuilder_filter": { "type": "function", - "file": "transport.h", - "line": 201, - "lineto": 204, + "file": "git2/tree.h", + "line": 368, + "lineto": 371, "args": [ { - "name": "out", - "type": "git_cred **", - "comment": "The newly created credential object." + "name": "bld", + "type": "git_treebuilder *", + "comment": "Tree builder" }, { - "name": "username", - "type": "const char *", - "comment": "The username of the credential." + "name": "filter", + "type": "git_treebuilder_filter_cb", + "comment": "Callback to filter entries" }, { - "name": "password", - "type": "const char *", - "comment": "The password of the credential." + "name": "payload", + "type": "void *", + "comment": "Extra data to pass to filter callback" } ], - "argline": "git_cred **out, const char *username, const char *password", - "sig": "git_cred **::const char *::const char *", + "argline": "git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload", + "sig": "git_treebuilder *::git_treebuilder_filter_cb::void *", "return": { "type": "int", - "comment": " 0 for success or an error code for failure" + "comment": " 0 on success, non-zero callback return value, or error code" }, - "description": "Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.
\n", - "comments": "", - "group": "cred" + "description": "Selectively remove entries in the tree
\n", + "comments": "The filter callback will be called for each entry in the tree with a pointer to the entry and the provided payload; if the callback returns non-zero, the entry will be filtered (removed from the builder).
Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.
\n", - "comments": "", - "group": "cred" + "argline": "git_oid *id, git_treebuilder *bld", + "sig": "git_oid *::git_treebuilder *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Write the contents of the tree builder as a tree object
\n", + "comments": "The tree builder will be written to the given repo, and its identifying SHA1 hash will be stored in the id pointer.
Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.
\n", - "comments": "", - "group": "cred" + "argline": "const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload", + "sig": "const git_tree *::git_treewalk_mode::git_treewalk_cb::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Traverse the entries in a tree and its subtrees in post or pre order.
\n", + "comments": "The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the callback will be called once per entry with the current (relative) root for the entry and the entry data itself.
If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.
\n", + "group": "tree" }, - "git_cred_ssh_key_from_agent": { + "git_tree_dup": { "type": "function", - "file": "transport.h", - "line": 247, - "lineto": 249, + "file": "git2/tree.h", + "line": 434, + "lineto": 434, "args": [ { "name": "out", - "type": "git_cred **", - "comment": "The newly created credential object." + "type": "git_tree **", + "comment": "Pointer to store the copy of the tree" }, { - "name": "username", - "type": "const char *", - "comment": "username to use to authenticate" + "name": "source", + "type": "git_tree *", + "comment": "Original tree to copy" } ], - "argline": "git_cred **out, const char *username", - "sig": "git_cred **::const char *", - "return": { - "type": "int", - "comment": " 0 for success or an error code for failure" - }, - "description": "Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.
\n", + "argline": "git_tree **out, git_tree *source", + "sig": "git_tree **::git_tree *", + "return": { "type": "int", "comment": " 0" }, + "description": "Create an in-memory copy of a tree. The copy must be explicitly\n free'd or it will leak.
\n", "comments": "", - "group": "cred" + "group": "tree" }, - "git_cred_ssh_custom_new": { + "git_tree_create_updated": { "type": "function", - "file": "transport.h", - "line": 269, - "lineto": 275, + "file": "git2/tree.h", + "line": 481, + "lineto": 481, "args": [ + { "name": "out", "type": "git_oid *", "comment": "id of the new tree" }, { - "name": "out", - "type": "git_cred **", - "comment": "The newly created credential object." - }, - { - "name": "username", - "type": "const char *", - "comment": "username to use to authenticate" + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to create the tree, must be the\n same as for `baseline`" }, { - "name": "publickey", - "type": "const char *", - "comment": "The bytes of the public key." + "name": "baseline", + "type": "git_tree *", + "comment": "the tree to base these changes on" }, { - "name": "publickey_len", + "name": "nupdates", "type": "size_t", - "comment": "The length of the public key in bytes." - }, - { - "name": "sign_callback", - "type": "git_cred_sign_callback", - "comment": "The callback method to sign the data during the challenge." + "comment": "the number of elements in the update list" }, { - "name": "payload", - "type": "void *", - "comment": "Additional data to pass to the callback." + "name": "updates", + "type": "const git_tree_update *", + "comment": "the list of updates to perform" } ], - "argline": "git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload", - "sig": "git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *", - "return": { - "type": "int", - "comment": " 0 for success or an error code for failure" - }, - "description": "Create an ssh key credential with a custom signing function.
\n", - "comments": "This lets you use your own function to sign the challenge.
\n\nThis function and its credential type is provided for completeness and wraps libssh2_userauth_publickey(), which is undocumented.
The supplied credential parameter will be internally duplicated.
\n", - "group": "cred" + "argline": "git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates", + "sig": "git_oid *::git_repository *::git_tree *::size_t::const git_tree_update *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Create a tree based on another one with the specified modifications
\n", + "comments": "Given the baseline perform the changes described in the list of updates and create a new tree.
This function is optimized for common file/directory addition, removal and replacement in trees. It is much more efficient than reading the tree into a git_index and modifying that, but in exchange it is not as flexible.
Deleting and adding the same entry is undefined behaviour, changing a tree to a blob or viceversa is not supported.
\n", + "group": "tree" }, - "git_cred_default_new": { + "git_worktree_list": { "type": "function", - "file": "transport.h", - "line": 283, - "lineto": 283, + "file": "git2/worktree.h", + "line": 35, + "lineto": 35, "args": [ { "name": "out", - "type": "git_cred **", - "comment": null + "type": "git_strarray *", + "comment": "pointer to the array of working tree names" + }, + { + "name": "repo", + "type": "git_repository *", + "comment": "the repo to use when listing working trees" } ], - "argline": "git_cred **out", - "sig": "git_cred **", - "return": { - "type": "int", - "comment": " 0 for success or an error code for failure" - }, - "description": "Create a "default" credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.
\n", - "comments": "", - "group": "cred" + "argline": "git_strarray *out, git_repository *repo", + "sig": "git_strarray *::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "List names of linked working trees
\n", + "comments": "The returned list should be released with git_strarray_free when no longer needed.
Create a credential to specify a username.
\n", - "comments": "This is used with ssh authentication to query for the username if none is specified in the url.
\n", - "group": "cred" + "argline": "git_worktree **out, git_repository *repo, const char *name", + "sig": "git_worktree **::git_repository *::const char *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Lookup a working tree by its name for a given repository
\n", + "comments": "", + "group": "worktree" }, - "git_cred_ssh_key_memory_new": { + "git_worktree_open_from_repository": { "type": "function", - "file": "transport.h", - "line": 303, - "lineto": 308, + "file": "git2/worktree.h", + "line": 58, + "lineto": 58, "args": [ { "name": "out", - "type": "git_cred **", - "comment": "The newly created credential object." - }, - { - "name": "username", - "type": "const char *", - "comment": "username to use to authenticate." - }, - { - "name": "publickey", - "type": "const char *", - "comment": "The public key of the credential." + "type": "git_worktree **", + "comment": "Out-pointer for the newly allocated worktree" }, { - "name": "privatekey", - "type": "const char *", - "comment": "The private key of the credential." - }, + "name": "repo", + "type": "git_repository *", + "comment": "Repository to look up worktree for" + } + ], + "argline": "git_worktree **out, git_repository *repo", + "sig": "git_worktree **::git_repository *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Open a worktree of a given repository
\n", + "comments": "If a repository is not the main tree but a worktree, this function will look up the worktree inside the parent repository and create a new git_worktree structure.
Create a new ssh key credential object reading the keys from memory.
\n", + "argline": "git_worktree *wt", + "sig": "git_worktree *", + "return": { "type": "void", "comment": null }, + "description": "Free a previously allocated worktree
\n", "comments": "", - "group": "cred" + "group": "worktree" }, - "git_cred_free": { + "git_worktree_validate": { "type": "function", - "file": "transport.h", - "line": 319, - "lineto": 319, + "file": "git2/worktree.h", + "line": 77, + "lineto": 77, "args": [ { - "name": "cred", - "type": "git_cred *", - "comment": "the object to free" + "name": "wt", + "type": "const git_worktree *", + "comment": "Worktree to check" } ], - "argline": "git_cred *cred", - "sig": "git_cred *", + "argline": "const git_worktree *wt", + "sig": "const git_worktree *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 when worktree is valid, error-code otherwise" }, - "description": "Free a credential.
\n", - "comments": "This is only necessary if you own the object; that is, if you are a transport.
\n", - "group": "cred" + "description": "Check if worktree is valid
\n", + "comments": "A valid worktree requires both the git data structures inside the linked parent repository and the linked working copy to be present.
\n", + "group": "worktree" }, - "git_tree_lookup": { + "git_worktree_add_options_init": { "type": "function", - "file": "tree.h", - "line": 32, - "lineto": 33, + "file": "git2/worktree.h", + "line": 116, + "lineto": 117, "args": [ { - "name": "out", - "type": "git_tree **", - "comment": "Pointer to the looked up tree" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "The repo to use when locating the tree." + "name": "opts", + "type": "git_worktree_add_options *", + "comment": "The `git_worktree_add_options` struct to initialize." }, { - "name": "id", - "type": "const git_oid *", - "comment": "Identity of the tree to locate." + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_WORKTREE_ADD_OPTIONS_VERSION`." } ], - "argline": "git_tree **out, git_repository *repo, const git_oid *id", - "sig": "git_tree **::git_repository *::const git_oid *", + "argline": "git_worktree_add_options *opts, unsigned int version", + "sig": "git_worktree_add_options *::unsigned int", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " Zero on success; -1 on failure." }, - "description": "Lookup a tree object from the repository.
\n", - "comments": "", - "group": "tree", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_tree_lookup-75", - "ex/HEAD/general.html#git_tree_lookup-76" - ], - "init.c": [ - "ex/HEAD/init.html#git_tree_lookup-14" - ] - } + "description": "Initialize git_worktree_add_options structure
\n", + "comments": "Initializes a git_worktree_add_options with default values. Equivalent to creating an instance with GIT_WORKTREE_ADD_OPTIONS_INIT.
Lookup a tree object from the repository,\n given a prefix of its identifier (short id).
\n", - "comments": "", - "group": "tree" + "argline": "git_worktree **out, git_repository *repo, const char *name, const char *path, const git_worktree_add_options *opts", + "sig": "git_worktree **::git_repository *::const char *::const char *::const git_worktree_add_options *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "Add a new working tree
\n", + "comments": "Add a new working tree for the repository, that is create the required data structures inside the repository and check out the current HEAD at path
Close an open tree
\n", - "comments": "You can no longer use the git_tree pointer after this call.
\n\nIMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.
\n", - "group": "tree", - "examples": { - "diff.c": [ - "ex/HEAD/diff.html#git_tree_free-17", - "ex/HEAD/diff.html#git_tree_free-18" - ], - "init.c": [ - "ex/HEAD/init.html#git_tree_free-15" - ], - "log.c": [ - "ex/HEAD/log.html#git_tree_free-58", - "ex/HEAD/log.html#git_tree_free-59", - "ex/HEAD/log.html#git_tree_free-60", - "ex/HEAD/log.html#git_tree_free-61", - "ex/HEAD/log.html#git_tree_free-62" - ] - } + "description": "Lock worktree if not already locked
\n", + "comments": "Lock a worktree, optionally specifying a reason why the linked working tree is being locked.
\n", + "group": "worktree" }, - "git_tree_id": { + "git_worktree_unlock": { "type": "function", - "file": "tree.h", - "line": 71, - "lineto": 71, + "file": "git2/worktree.h", + "line": 156, + "lineto": 156, "args": [ { - "name": "tree", - "type": "const git_tree *", - "comment": "a previously loaded tree." + "name": "wt", + "type": "git_worktree *", + "comment": "Worktree to unlock" } ], - "argline": "const git_tree *tree", - "sig": "const git_tree *", + "argline": "git_worktree *wt", + "sig": "git_worktree *", "return": { - "type": "const git_oid *", - "comment": " object identity for the tree." + "type": "int", + "comment": " 0 on success, 1 if worktree was not locked, error-code\n otherwise" }, - "description": "Get the id of a tree.
\n", + "description": "Unlock a locked worktree
\n", "comments": "", - "group": "tree" + "group": "worktree" }, - "git_tree_owner": { + "git_worktree_is_locked": { "type": "function", - "file": "tree.h", - "line": 79, - "lineto": 79, + "file": "git2/worktree.h", + "line": 170, + "lineto": 170, "args": [ { - "name": "tree", - "type": "const git_tree *", - "comment": "A previously loaded tree." + "name": "reason", + "type": "git_buf *", + "comment": "Buffer to store reason in. If NULL no reason is stored." + }, + { + "name": "wt", + "type": "const git_worktree *", + "comment": "Worktree to check" } ], - "argline": "const git_tree *tree", - "sig": "const git_tree *", + "argline": "git_buf *reason, const git_worktree *wt", + "sig": "git_buf *::const git_worktree *", "return": { - "type": "git_repository *", - "comment": " Repository that contains this tree." + "type": "int", + "comment": " 0 when the working tree not locked, a value greater\n than zero if it is locked, less than zero if there was an\n error" }, - "description": "Get the repository that contains the tree.
\n", - "comments": "", - "group": "tree" + "description": "Check if worktree is locked
\n", + "comments": "A worktree may be locked if the linked working tree is stored on a portable device which is not available.
\n", + "group": "worktree" }, - "git_tree_entrycount": { + "git_worktree_name": { "type": "function", - "file": "tree.h", - "line": 87, - "lineto": 87, + "file": "git2/worktree.h", + "line": 179, + "lineto": 179, "args": [ { - "name": "tree", - "type": "const git_tree *", - "comment": "a previously loaded tree." + "name": "wt", + "type": "const git_worktree *", + "comment": "Worktree to get the name for" } ], - "argline": "const git_tree *tree", - "sig": "const git_tree *", + "argline": "const git_worktree *wt", + "sig": "const git_worktree *", "return": { - "type": "size_t", - "comment": " the number of entries in the tree" + "type": "const char *", + "comment": " The worktree's name. The pointer returned is valid for the\n lifetime of the git_worktree" }, - "description": "Get the number of entries listed in a tree
\n", + "description": "Retrieve the name of the worktree
\n", "comments": "", - "group": "tree", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tree_entrycount-41" - ], - "general.c": [ - "ex/HEAD/general.html#git_tree_entrycount-77" - ] - } + "group": "worktree" }, - "git_tree_entry_byname": { + "git_worktree_path": { "type": "function", - "file": "tree.h", - "line": 99, - "lineto": 100, + "file": "git2/worktree.h", + "line": 188, + "lineto": 188, "args": [ { - "name": "tree", - "type": "const git_tree *", - "comment": "a previously loaded tree." - }, - { - "name": "filename", - "type": "const char *", - "comment": "the filename of the desired entry" + "name": "wt", + "type": "const git_worktree *", + "comment": "Worktree to get the path for" } ], - "argline": "const git_tree *tree, const char *filename", - "sig": "const git_tree *::const char *", + "argline": "const git_worktree *wt", + "sig": "const git_worktree *", "return": { - "type": "const git_tree_entry *", - "comment": " the tree entry; NULL if not found" + "type": "const char *", + "comment": " The worktree's filesystem path. The pointer returned\n is valid for the lifetime of the git_worktree." }, - "description": "Lookup a tree entry by its filename
\n", - "comments": "This returns a git_tree_entry that is owned by the git_tree. You don't have to free it, but you must not use it after the git_tree is released.
\n", - "group": "tree", - "examples": { - "general.c": [ - "ex/HEAD/general.html#git_tree_entry_byname-78" - ] - } + "description": "Retrieve the filesystem path for the worktree
\n", + "comments": "", + "group": "worktree" }, - "git_tree_entry_byindex": { + "git_worktree_prune_options_init": { "type": "function", - "file": "tree.h", - "line": 112, - "lineto": 113, + "file": "git2/worktree.h", + "line": 233, + "lineto": 235, "args": [ { - "name": "tree", - "type": "const git_tree *", - "comment": "a previously loaded tree." + "name": "opts", + "type": "git_worktree_prune_options *", + "comment": "The `git_worktree_prune_options` struct to initialize." }, { - "name": "idx", - "type": "size_t", - "comment": "the position in the entry list" + "name": "version", + "type": "unsigned int", + "comment": "The struct version; pass `GIT_WORKTREE_PRUNE_OPTIONS_VERSION`." } ], - "argline": "const git_tree *tree, size_t idx", - "sig": "const git_tree *::size_t", + "argline": "git_worktree_prune_options *opts, unsigned int version", + "sig": "git_worktree_prune_options *::unsigned int", "return": { - "type": "const git_tree_entry *", - "comment": " the tree entry; NULL if not found" + "type": "int", + "comment": " Zero on success; -1 on failure." }, - "description": "Lookup a tree entry by its position in the tree
\n", - "comments": "This returns a git_tree_entry that is owned by the git_tree. You don't have to free it, but you must not use it after the git_tree is released.
\n", - "group": "tree", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tree_entry_byindex-42" - ], - "general.c": [ - "ex/HEAD/general.html#git_tree_entry_byindex-79" - ] - } + "description": "Initialize git_worktree_prune_options structure
\n", + "comments": "Initializes a git_worktree_prune_options with default values. Equivalent to creating an instance with GIT_WORKTREE_PRUNE_OPTIONS_INIT.
Lookup a tree entry by SHA value.
\n", - "comments": "This returns a git_tree_entry that is owned by the git_tree. You don't have to free it, but you must not use it after the git_tree is released.
\n\nWarning: this must examine every entry in the tree, so it is not fast.
\n", - "group": "tree" + "description": "Is the worktree prunable with the given options?
\n", + "comments": "A worktree is not prunable in the following scenarios:
\n\nvalid member will cause this check to be ignored. - the worktree is locked. The locked flag will cause this check to be ignored.If the worktree is not valid and not locked or if the above flags have been passed in, this function will return a positive value. If the worktree is not prunable, an error message will be set (visible in giterr_last) with details about why.
Prune working tree
\n", + "comments": "Prune the working tree, that is remove the git data structures on disk. The repository will only be pruned of git_worktree_is_prunable succeeds.
Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.
\n", - "comments": "Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with git_tree_entry_free().
When applying a patch, callback that will be made per delta (file).
\n", + "comments": "When the callback: - returns < 0, the apply process will be aborted. - returns > 0, the delta will not be applied, but the apply process continues - returns 0, the delta is applied, and the apply process continues.
\n" }, - "git_tree_entry_dup": { - "type": "function", - "file": "tree.h", - "line": 157, - "lineto": 157, + "git_apply_hunk_cb": { + "type": "callback", + "file": "git2/apply.h", + "line": 59, + "lineto": 61, "args": [ { - "name": "dest", - "type": "git_tree_entry **", - "comment": "pointer where to store the copy" + "name": "hunk", + "type": "const git_diff_hunk *", + "comment": "The hunk to be applied" }, { - "name": "source", - "type": "const git_tree_entry *", - "comment": "tree entry to duplicate" + "name": "payload", + "type": "void *", + "comment": "User-specified payload" } ], - "argline": "git_tree_entry **dest, const git_tree_entry *source", - "sig": "git_tree_entry **::const git_tree_entry *", + "argline": "const git_diff_hunk *hunk, void *payload", + "sig": "const git_diff_hunk *::void *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 if the hunk is applied, \n<\n 0 if the apply process will be aborted\n\tor > 0 if the hunk will not be applied." }, - "description": "Duplicate a tree entry
\n", - "comments": "Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with git_tree_entry_free().
When applying a patch, callback that will be made per hunk.
\n", + "comments": "When the callback: - returns < 0, the apply process will be aborted. - returns > 0, the hunk will not be applied, but the apply process continues - returns 0, the hunk is applied, and the apply process continues.
\n" }, - "git_tree_entry_free": { - "type": "function", - "file": "tree.h", - "line": 168, - "lineto": 168, + "git_attr_foreach_cb": { + "type": "callback", + "file": "git2/attr.h", + "line": 304, + "lineto": 304, "args": [ { - "name": "entry", - "type": "git_tree_entry *", - "comment": "The entry to free" + "name": "name", + "type": "const char *", + "comment": "The attribute name." + }, + { + "name": "value", + "type": "const char *", + "comment": "The attribute value. May be NULL if the attribute is explicitly\n set to UNSPECIFIED using the '!' sign." + }, + { + "name": "payload", + "type": "void *", + "comment": "A user-specified pointer." } ], - "argline": "git_tree_entry *entry", - "sig": "git_tree_entry *", + "argline": "const char *name, const char *value, void *payload", + "sig": "const char *::const char *::void *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 to continue looping, non-zero to stop. This value will be returned\n from git_attr_foreach." }, - "description": "Free a user-owned tree entry
\n", - "comments": "IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by git_tree_entry_dup() or git_tree_entry_bypath().
The callback used with git_attr_foreach.
\n", + "comments": "This callback will be invoked only once per attribute name, even if there are multiple rules for a given file. The highest priority rule will be used.
\n" }, - "git_tree_entry_name": { - "type": "function", - "file": "tree.h", - "line": 176, - "lineto": 176, + "git_transport_certificate_check_cb": { + "type": "callback", + "file": "git2/cert.h", + "line": 72, + "lineto": 72, "args": [ { - "name": "entry", - "type": "const git_tree_entry *", - "comment": "a tree entry" + "name": "cert", + "type": "git_cert *", + "comment": "The host certificate" + }, + { + "name": "valid", + "type": "int", + "comment": "Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid" + }, + { + "name": "host", + "type": "const char *", + "comment": "Hostname of the host libgit2 connected to" + }, + { + "name": "payload", + "type": "void *", + "comment": "Payload provided by the caller" } ], - "argline": "const git_tree_entry *entry", - "sig": "const git_tree_entry *", + "argline": "git_cert *cert, int valid, const char *host, void *payload", + "sig": "git_cert *::int::const char *::void *", "return": { - "type": "const char *", - "comment": " the name of the file" + "type": "int", + "comment": " 0 to proceed with the connection, \n<\n 0 to fail the connection\n or > 0 to indicate that the callback refused to act and that\n the existing validity determination should be honored" }, - "description": "Get the filename of a tree entry
\n", - "comments": "", - "group": "tree", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tree_entry_name-43" - ], - "general.c": [ - "ex/HEAD/general.html#git_tree_entry_name-80", - "ex/HEAD/general.html#git_tree_entry_name-81" - ] - } + "description": "Callback for the user's custom certificate checks.
\n", + "comments": "" }, - "git_tree_entry_id": { - "type": "function", - "file": "tree.h", - "line": 184, - "lineto": 184, + "git_checkout_notify_cb": { + "type": "callback", + "file": "git2/checkout.h", + "line": 275, + "lineto": 281, "args": [ { - "name": "entry", - "type": "const git_tree_entry *", - "comment": "a tree entry" + "name": "why", + "type": "git_checkout_notify_t", + "comment": "the notification reason" + }, + { + "name": "path", + "type": "const char *", + "comment": "the path to the file being checked out" + }, + { + "name": "baseline", + "type": "const git_diff_file *", + "comment": "the baseline's diff file information" + }, + { + "name": "target", + "type": "const git_diff_file *", + "comment": "the checkout target diff file information" + }, + { + "name": "workdir", + "type": "const git_diff_file *", + "comment": "the working directory diff file information" + }, + { + "name": "payload", + "type": "void *", + "comment": "the user-supplied callback payload" } ], - "argline": "const git_tree_entry *entry", - "sig": "const git_tree_entry *", - "return": { - "type": "const git_oid *", - "comment": " the oid of the object" - }, - "description": "Get the id of the object pointed by the entry
\n", - "comments": "", - "group": "tree", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tree_entry_id-44" - ] - } + "argline": "git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload", + "sig": "git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Checkout notification callback function.
\n", + "comments": "" }, - "git_tree_entry_type": { - "type": "function", - "file": "tree.h", - "line": 192, - "lineto": 192, + "git_checkout_progress_cb": { + "type": "callback", + "file": "git2/checkout.h", + "line": 291, + "lineto": 295, "args": [ { - "name": "entry", - "type": "const git_tree_entry *", - "comment": "a tree entry" - } - ], - "argline": "const git_tree_entry *entry", - "sig": "const git_tree_entry *", - "return": { - "type": "git_otype", - "comment": " the type of the pointed object" - }, - "description": "Get the type of the object pointed by the entry
\n", - "comments": "", - "group": "tree", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tree_entry_type-45" - ] - } - }, - "git_tree_entry_filemode": { - "type": "function", - "file": "tree.h", - "line": 200, - "lineto": 200, - "args": [ + "name": "path", + "type": "const char *", + "comment": "the path to the file being checked out" + }, { - "name": "entry", - "type": "const git_tree_entry *", - "comment": "a tree entry" + "name": "completed_steps", + "type": "size_t", + "comment": "number of checkout steps completed" + }, + { + "name": "total_steps", + "type": "size_t", + "comment": "number of total steps in the checkout process" + }, + { + "name": "payload", + "type": "void *", + "comment": "the user-supplied callback payload" } ], - "argline": "const git_tree_entry *entry", - "sig": "const git_tree_entry *", - "return": { - "type": "git_filemode_t", - "comment": " filemode as an integer" - }, - "description": "Get the UNIX file attributes of a tree entry
\n", - "comments": "", - "group": "tree", - "examples": { - "cat-file.c": [ - "ex/HEAD/cat-file.html#git_tree_entry_filemode-46" - ] - } + "argline": "const char *path, size_t completed_steps, size_t total_steps, void *payload", + "sig": "const char *::size_t::size_t::void *", + "return": { "type": "void", "comment": null }, + "description": "Checkout progress notification function.
\n", + "comments": "" }, - "git_tree_entry_filemode_raw": { - "type": "function", - "file": "tree.h", - "line": 212, - "lineto": 212, + "git_checkout_perfdata_cb": { + "type": "callback", + "file": "git2/checkout.h", + "line": 303, + "lineto": 305, "args": [ { - "name": "entry", - "type": "const git_tree_entry *", - "comment": "a tree entry" + "name": "perfdata", + "type": "const git_checkout_perfdata *", + "comment": "the performance data for the checkout" + }, + { + "name": "payload", + "type": "void *", + "comment": "the user-supplied callback payload" } ], - "argline": "const git_tree_entry *entry", - "sig": "const git_tree_entry *", - "return": { - "type": "git_filemode_t", - "comment": " filemode as an integer" - }, - "description": "Get the raw UNIX file attributes of a tree entry
\n", - "comments": "This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.
\n", - "group": "tree" + "argline": "const git_checkout_perfdata *perfdata, void *payload", + "sig": "const git_checkout_perfdata *::void *", + "return": { "type": "void", "comment": null }, + "description": "Checkout performance data reporting function.
\n", + "comments": "" }, - "git_tree_entry_cmp": { - "type": "function", - "file": "tree.h", - "line": 220, - "lineto": 220, + "git_remote_create_cb": { + "type": "callback", + "file": "git2/clone.h", + "line": 73, + "lineto": 78, "args": [ { - "name": "e1", - "type": "const git_tree_entry *", - "comment": "first tree entry" + "name": "out", + "type": "git_remote **", + "comment": "the resulting remote" }, { - "name": "e2", - "type": "const git_tree_entry *", - "comment": "second tree entry" - } + "name": "repo", + "type": "git_repository *", + "comment": "the repository in which to create the remote" + }, + { + "name": "name", + "type": "const char *", + "comment": "the remote's name" + }, + { + "name": "url", + "type": "const char *", + "comment": "the remote's url" + }, + { "name": "payload", "type": "void *", "comment": "an opaque payload" } ], - "argline": "const git_tree_entry *e1, const git_tree_entry *e2", - "sig": "const git_tree_entry *::const git_tree_entry *", + "argline": "git_remote **out, git_repository *repo, const char *name, const char *url, void *payload", + "sig": "git_remote **::git_repository *::const char *::const char *::void *", "return": { "type": "int", - "comment": " \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2" + "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" }, - "description": "Compare two tree entries
\n", - "comments": "", - "group": "tree" + "description": "The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.
\n", + "comments": "Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.
\n" }, - "git_tree_entry_to_object": { - "type": "function", - "file": "tree.h", - "line": 232, - "lineto": 235, + "git_repository_create_cb": { + "type": "callback", + "file": "git2/clone.h", + "line": 94, + "lineto": 98, "args": [ { - "name": "object_out", - "type": "git_object **", - "comment": "pointer to the converted object" + "name": "out", + "type": "git_repository **", + "comment": "the resulting repository" }, { - "name": "repo", - "type": "git_repository *", - "comment": "repository where to lookup the pointed object" + "name": "path", + "type": "const char *", + "comment": "path in which to create the repository" }, { - "name": "entry", - "type": "const git_tree_entry *", - "comment": "a tree entry" + "name": "bare", + "type": "int", + "comment": "whether the repository is bare. This is the value from the clone options" + }, + { + "name": "payload", + "type": "void *", + "comment": "payload specified by the options" } ], - "argline": "git_object **object_out, git_repository *repo, const git_tree_entry *entry", - "sig": "git_object **::git_repository *::const git_tree_entry *", + "argline": "git_repository **out, const char *path, int bare, void *payload", + "sig": "git_repository **::const char *::int::void *", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0, or a negative value to indicate error" }, - "description": "Convert a tree entry to the git_object it points to.
\n", - "comments": "You must call git_object_free() on the object when you are done with it.
The signature of a function matching git_repository_init, with an\n additional void * as callback payload.
\n", + "comments": "Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.
\n" }, - "git_treebuilder_new": { - "type": "function", - "file": "tree.h", - "line": 254, - "lineto": 255, + "git_commit_create_cb": { + "type": "callback", + "file": "git2/commit.h", + "line": 643, + "lineto": 652, "args": [ { "name": "out", - "type": "git_treebuilder **", - "comment": "Pointer where to store the tree builder" + "type": "git_oid *", + "comment": "pointer that this callback will populate with the object\n id of the commit that is created" }, { - "name": "repo", - "type": "git_repository *", - "comment": "Repository in which to store the object" + "name": "author", + "type": "const git_signature *", + "comment": "the author name and time of the commit" }, { - "name": "source", + "name": "committer", + "type": "const git_signature *", + "comment": "the committer name and time of the commit" + }, + { + "name": "message_encoding", + "type": "const char *", + "comment": "the encoding of the given message, or NULL\n to assume UTF8" + }, + { + "name": "message", + "type": "const char *", + "comment": "the commit message" + }, + { + "name": "tree", "type": "const git_tree *", - "comment": "Source tree to initialize the builder (optional)" + "comment": "the tree to be committed" + }, + { + "name": "parent_count", + "type": "size_t", + "comment": "the number of parents for this commit" + }, + { + "name": "parents", + "type": "const git_commit *[]", + "comment": "the commit parents" + }, + { + "name": "payload", + "type": "void *", + "comment": "the payload pointer in the rebase options" } ], - "argline": "git_treebuilder **out, git_repository *repo, const git_tree *source", - "sig": "git_treebuilder **::git_repository *::const git_tree *", + "argline": "git_oid *out, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents, void *payload", + "sig": "git_oid *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]::void *", "return": { "type": "int", - "comment": " 0 on success; error code otherwise" + "comment": " 0 if this callback has created the commit and populated the out\n parameter, GIT_PASSTHROUGH if the callback has not created a\n commit and wants the calling function to create the commit as\n if no callback had been specified, any other value to stop\n and return a failure" }, - "description": "Create a new tree builder.
\n", - "comments": "The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.
\n\nIf the source parameter is not NULL, the tree builder will be initialized with the entries of the given tree.
If the source parameter is NULL, the tree builder will start with no entries and will have to be filled manually.
Commit creation callback: used when a function is going to create\n commits (for example, in git_rebase_commit) to allow callers to\n override the commit creation behavior. For example, users may\n wish to sign commits by providing this information to\n git_commit_create_buffer, signing that buffer, then calling\n git_commit_create_with_signature. The resultant commit id\n should be set in the out object id parameter.
Clear all the entires in the builder
\n", - "comments": "", - "group": "treebuilder" + "description": "A config enumeration callback.
\n", + "comments": "" }, - "git_treebuilder_entrycount": { - "type": "function", - "file": "tree.h", - "line": 270, - "lineto": 270, + "git_credential_acquire_cb": { + "type": "callback", + "file": "git2/credential.h", + "line": 134, + "lineto": 139, "args": [ { - "name": "bld", - "type": "git_treebuilder *", - "comment": "a previously loaded treebuilder." - } - ], - "argline": "git_treebuilder *bld", - "sig": "git_treebuilder *", - "return": { - "type": "unsigned int", - "comment": " the number of entries in the treebuilder" - }, - "description": "Get the number of entries listed in a treebuilder
\n", - "comments": "", - "group": "treebuilder" - }, - "git_treebuilder_free": { - "type": "function", - "file": "tree.h", - "line": 281, - "lineto": 281, - "args": [ + "name": "out", + "type": "git_credential **", + "comment": "The newly created credential object." + }, { - "name": "bld", - "type": "git_treebuilder *", - "comment": "Builder to free" + "name": "url", + "type": "const char *", + "comment": "The resource for which we are demanding a credential." + }, + { + "name": "username_from_url", + "type": "const char *", + "comment": "The username that was embedded in a \"user\n@\nhost\"\n remote url, or NULL if not included." + }, + { + "name": "allowed_types", + "type": "unsigned int", + "comment": "A bitmask stating which credential types are OK to return." + }, + { + "name": "payload", + "type": "void *", + "comment": "The payload provided when specifying this callback." } ], - "argline": "git_treebuilder *bld", - "sig": "git_treebuilder *", + "argline": "git_credential **out, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload", + "sig": "git_credential **::const char *::const char *::unsigned int::void *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 for success, \n<\n 0 to indicate an error, > 0 to indicate\n no credential was acquired" }, - "description": "Free a tree builder
\n", - "comments": "This will clear all the entries and free to builder. Failing to free the builder after you're done using it will result in a memory leak
\n", - "group": "treebuilder" + "description": "Credential acquisition callback.
\n", + "comments": "This callback is usually involved any time another system might need authentication. As such, you are expected to provide a valid git_credential object back, depending on allowed_types (a git_credential_t bitmask).
\n\nNote that most authentication details are your responsibility - this callback will be called until the authentication succeeds, or you report an error. As such, it's easy to get in a loop if you fail to stop providing the same incorrect credentials.
\n" }, - "git_treebuilder_get": { - "type": "function", - "file": "tree.h", - "line": 293, - "lineto": 294, + "git_credential_ssh_interactive_cb": { + "type": "callback", + "file": "git2/credential.h", + "line": 259, + "lineto": 265, "args": [ + { "name": "name", "type": "const char *", "comment": "the name" }, { - "name": "bld", - "type": "git_treebuilder *", - "comment": "Tree builder" + "name": "name_len", + "type": "int", + "comment": "the length of the name" }, { - "name": "filename", + "name": "instruction", "type": "const char *", - "comment": "Name of the entry" - } + "comment": "the authentication instruction" + }, + { + "name": "instruction_len", + "type": "int", + "comment": "the length of the instruction" + }, + { + "name": "num_prompts", + "type": "int", + "comment": "the number of prompts" + }, + { + "name": "prompts", + "type": "const LIBSSH2_USERAUTH_KBDINT_PROMPT *", + "comment": "the prompts" + }, + { + "name": "responses", + "type": "LIBSSH2_USERAUTH_KBDINT_RESPONSE *", + "comment": "the responses" + }, + { "name": "abstract", "type": "void **", "comment": "the abstract" } ], - "argline": "git_treebuilder *bld, const char *filename", - "sig": "git_treebuilder *::const char *", - "return": { - "type": "const git_tree_entry *", - "comment": " pointer to the entry; NULL if not found" - }, - "description": "Get an entry from the builder from its filename
\n", - "comments": "The returned entry is owned by the builder and should not be freed manually.
\n", - "group": "treebuilder" + "argline": "const char *name, int name_len, const char *instruction, int instruction_len, int num_prompts, const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract", + "sig": "const char *::int::const char *::int::int::const LIBSSH2_USERAUTH_KBDINT_PROMPT *::LIBSSH2_USERAUTH_KBDINT_RESPONSE *::void **", + "return": { "type": "void", "comment": null }, + "description": "Callback for interactive SSH credentials.
\n", + "comments": "" }, - "git_treebuilder_insert": { - "type": "function", - "file": "tree.h", - "line": 323, - "lineto": 328, + "git_credential_sign_cb": { + "type": "callback", + "file": "git2/credential.h", + "line": 308, + "lineto": 312, "args": [ { - "name": "out", - "type": "const git_tree_entry **", - "comment": "Pointer to store the entry (optional)" + "name": "session", + "type": "LIBSSH2_SESSION *", + "comment": "the libssh2 session" }, { - "name": "bld", - "type": "git_treebuilder *", - "comment": "Tree builder" + "name": "sig", + "type": "unsigned char **", + "comment": "the signature" }, { - "name": "filename", - "type": "const char *", - "comment": "Filename of the entry" + "name": "sig_len", + "type": "size_t *", + "comment": "the length of the signature" }, { - "name": "id", - "type": "const git_oid *", - "comment": "SHA1 oid of the entry" + "name": "data", + "type": "const unsigned char *", + "comment": "the data" }, { - "name": "filemode", - "type": "git_filemode_t", - "comment": "Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000." - } + "name": "data_len", + "type": "size_t", + "comment": "the length of the data" + }, + { "name": "abstract", "type": "void **", "comment": "the abstract" } ], - "argline": "const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode", - "sig": "const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t", + "argline": "LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, const unsigned char *data, size_t data_len, void **abstract", + "sig": "LIBSSH2_SESSION *::unsigned char **::size_t *::const unsigned char *::size_t::void **", "return": { "type": "int", - "comment": " 0 or an error code" + "comment": " 0 for success, \n<\n 0 to indicate an error, > 0 to indicate\n no credential was acquired" }, - "description": "Add or update an entry to the builder
\n", - "comments": "Insert a new entry for filename in the builder with the given attributes.
If an entry named filename already exists, its attributes will be updated with the given ones.
The optional pointer out can be used to retrieve a pointer to the newly created/updated entry. Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.
No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.
\n", - "group": "treebuilder" + "description": "Callback for credential signing.
\n", + "comments": "" }, - "git_treebuilder_remove": { - "type": "function", - "file": "tree.h", - "line": 336, - "lineto": 337, + "git_commit_signing_cb": { + "type": "callback", + "file": "git2/deprecated.h", + "line": 285, + "lineto": 289, + "args": [ + { "name": "signature", "type": "git_buf *", "comment": null }, + { "name": "signature_field", "type": "git_buf *", "comment": null }, + { "name": "commit_content", "type": "const char *", "comment": null }, + { "name": "payload", "type": "void *", "comment": null } + ], + "argline": "git_buf *signature, git_buf *signature_field, const char *commit_content, void *payload", + "sig": "git_buf *::git_buf *::const char *::void *", + "return": { "type": "int", "comment": null }, + "description": "Provide a commit signature during commit creation.
\n", + "comments": "Callers should instead define a git_commit_create_cb that generates a commit buffer using git_commit_create_buffer, sign that buffer and call git_commit_create_with_signature.
Callback for listing the remote heads
\n", + "comments": "" + }, + "git_diff_notify_cb": { + "type": "callback", + "file": "git2/diff.h", + "line": 352, + "lineto": 356, "args": [ { - "name": "bld", - "type": "git_treebuilder *", - "comment": "Tree builder" + "name": "diff_so_far", + "type": "const git_diff *", + "comment": "the diff structure as it currently exists" }, { - "name": "filename", + "name": "delta_to_add", + "type": "const git_diff_delta *", + "comment": "the delta that is to be added" + }, + { + "name": "matched_pathspec", "type": "const char *", - "comment": "Filename of the entry to remove" + "comment": "the pathspec" + }, + { + "name": "payload", + "type": "void *", + "comment": "the user-specified callback payload" } ], - "argline": "git_treebuilder *bld, const char *filename", - "sig": "git_treebuilder *::const char *", + "argline": "const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload", + "sig": "const git_diff *::const git_diff_delta *::const char *::void *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, 1 to skip this delta, or an error code" }, - "description": "Remove an entry from the builder by its filename
\n", - "comments": "", - "group": "treebuilder" + "description": "Diff notification callback function.
\n", + "comments": "The callback will be called for each file, just before the git_diff_delta gets inserted into the diff.
When the callback: - returns < 0, the diff process will be aborted. - returns > 0, the delta will not be inserted into the diff, but the diff process continues. - returns 0, the delta is inserted into the diff, and the diff process continues.
\n" }, - "git_treebuilder_filter": { - "type": "function", - "file": "tree.h", - "line": 360, - "lineto": 363, + "git_diff_progress_cb": { + "type": "callback", + "file": "git2/diff.h", + "line": 369, + "lineto": 373, "args": [ { - "name": "bld", - "type": "git_treebuilder *", - "comment": "Tree builder" + "name": "diff_so_far", + "type": "const git_diff *", + "comment": "The diff being generated." }, { - "name": "filter", - "type": "git_treebuilder_filter_cb", - "comment": "Callback to filter entries" + "name": "old_path", + "type": "const char *", + "comment": "The path to the old file or NULL." + }, + { + "name": "new_path", + "type": "const char *", + "comment": "The path to the new file or NULL." }, { "name": "payload", "type": "void *", - "comment": "Extra data to pass to filter callback" + "comment": "the user-specified callback payload" } ], - "argline": "git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload", - "sig": "git_treebuilder *::git_treebuilder_filter_cb::void *", - "return": { - "type": "void", - "comment": null - }, - "description": "Selectively remove entries in the tree
\n", - "comments": "The filter callback will be called for each entry in the tree with a pointer to the entry and the provided payload; if the callback returns non-zero, the entry will be filtered (removed from the builder).
Diff progress callback.
\n", + "comments": "Called before each file comparison.
\n" }, - "git_treebuilder_write": { - "type": "function", - "file": "tree.h", - "line": 375, - "lineto": 376, + "git_diff_file_cb": { + "type": "callback", + "file": "git2/diff.h", + "line": 504, + "lineto": 507, "args": [ { - "name": "id", - "type": "git_oid *", - "comment": "Pointer to store the OID of the newly written tree" + "name": "delta", + "type": "const git_diff_delta *", + "comment": "A pointer to the delta data for the file" }, { - "name": "bld", - "type": "git_treebuilder *", - "comment": "Tree builder to write" + "name": "progress", + "type": "float", + "comment": "Goes from 0 to 1 over the diff" + }, + { + "name": "payload", + "type": "void *", + "comment": "User-specified pointer from foreach function" } ], - "argline": "git_oid *id, git_treebuilder *bld", - "sig": "git_oid *::git_treebuilder *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Write the contents of the tree builder as a tree object
\n", - "comments": "The tree builder will be written to the given repo, and its identifying SHA1 hash will be stored in the id pointer.
When iterating over a diff, callback that will be made per file.
\n", + "comments": "" }, - "git_tree_walk": { - "type": "function", - "file": "tree.h", - "line": 406, - "lineto": 410, + "git_diff_binary_cb": { + "type": "callback", + "file": "git2/diff.h", + "line": 576, + "lineto": 579, "args": [ { - "name": "tree", - "type": "const git_tree *", - "comment": "The tree to walk" + "name": "delta", + "type": "const git_diff_delta *", + "comment": "the delta" }, { - "name": "mode", - "type": "git_treewalk_mode", - "comment": "Traversal mode (pre or post-order)" - }, - { - "name": "callback", - "type": "git_treewalk_cb", - "comment": "Function to call on each tree entry" + "name": "binary", + "type": "const git_diff_binary *", + "comment": "the binary content" }, { "name": "payload", "type": "void *", - "comment": "Opaque pointer to be passed on each callback" + "comment": "the user-specified callback payload" } ], - "argline": "const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload", - "sig": "const git_tree *::git_treewalk_mode::git_treewalk_cb::void *", - "return": { - "type": "int", - "comment": " 0 or an error code" - }, - "description": "Traverse the entries in a tree and its subtrees in post or pre order.
\n", - "comments": "The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the callback will be called once per entry with the current (relative) root for the entry and the entry data itself.
If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.
\n", - "group": "tree" + "argline": "const git_diff_delta *delta, const git_diff_binary *binary, void *payload", + "sig": "const git_diff_delta *::const git_diff_binary *::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "When iterating over a diff, callback that will be made for\n binary content within the diff.
\n", + "comments": "" }, - "git_tree_dup": { - "type": "function", - "file": "tree.h", - "line": 419, - "lineto": 419, + "git_diff_hunk_cb": { + "type": "callback", + "file": "git2/diff.h", + "line": 607, + "lineto": 610, "args": [ { - "name": "out", - "type": "git_tree **", - "comment": "Pointer to store the copy of the tree" + "name": "delta", + "type": "const git_diff_delta *", + "comment": "the delta" }, { - "name": "source", - "type": "git_tree *", - "comment": "Original tree to copy" + "name": "hunk", + "type": "const git_diff_hunk *", + "comment": "the hunk" + }, + { + "name": "payload", + "type": "void *", + "comment": "the user-specified callback payload" } ], - "argline": "git_tree **out, git_tree *source", - "sig": "git_tree **::git_tree *", - "return": { - "type": "int", - "comment": null - }, - "description": "Create an in-memory copy of a tree. The copy must be explicitly\n free'd or it will leak.
\n", - "comments": "", - "group": "tree" - } - }, - "callbacks": { - "git_checkout_notify_cb": { + "argline": "const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload", + "sig": "const git_diff_delta *::const git_diff_hunk *::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "When iterating over a diff, callback that will be made per hunk.
\n", + "comments": "" + }, + "git_diff_line_cb": { "type": "callback", - "file": "checkout.h", - "line": 223, - "lineto": 229, + "file": "git2/diff.h", + "line": 674, + "lineto": 678, "args": [ { - "name": "why", - "type": "git_checkout_notify_t", - "comment": null + "name": "delta", + "type": "const git_diff_delta *", + "comment": "the delta that contains the line" }, { - "name": "path", - "type": "const char *", - "comment": null + "name": "hunk", + "type": "const git_diff_hunk *", + "comment": "the hunk that contains the line" }, { - "name": "baseline", - "type": "const git_diff_file *", - "comment": null + "name": "line", + "type": "const git_diff_line *", + "comment": "the line in the diff" }, { - "name": "target", - "type": "const git_diff_file *", - "comment": null - }, + "name": "payload", + "type": "void *", + "comment": "the user-specified callback payload" + } + ], + "argline": "const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload", + "sig": "const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *", + "return": { "type": "int", "comment": " 0 or an error code" }, + "description": "When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.
\n", + "comments": "When printing a diff, callback that will be made to output each line of text. This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.
\n" + }, + "git_index_matched_path_cb": { + "type": "callback", + "file": "git2/index.h", + "line": 158, + "lineto": 159, + "args": [ + { "name": "path", "type": "const char *", "comment": "the path" }, { - "name": "workdir", - "type": "const git_diff_file *", - "comment": null + "name": "matched_pathspec", + "type": "const char *", + "comment": "the given pathspec" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "the user-specified payload" } ], - "argline": "git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload", - "sig": "git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *", + "argline": "const char *path, const char *matched_pathspec, void *payload", + "sig": "const char *::const char *::void *", "return": { "type": "int", - "comment": null + "comment": " 0 to continue with the index operation, positive number to skip this file for the index operation, negative number on failure" }, - "description": "Checkout notification callback function
\n", + "description": "Callback for APIs that add/remove/update files matching pathspec
\n", "comments": "" }, - "git_checkout_progress_cb": { + "git_indexer_progress_cb": { "type": "callback", - "file": "checkout.h", - "line": 232, - "lineto": 236, + "file": "git2/indexer.h", + "line": 68, + "lineto": 68, "args": [ { - "name": "path", - "type": "const char *", - "comment": null + "name": "stats", + "type": "const git_indexer_progress *", + "comment": "Structure containing information about the state of the transfer" }, { - "name": "completed_steps", - "type": "size_t", - "comment": null + "name": "payload", + "type": "void *", + "comment": "Payload provided by caller" + } + ], + "argline": "const git_indexer_progress *stats, void *payload", + "sig": "const git_indexer_progress *::void *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Type for progress callbacks during indexing. Return a value less\n than zero to cancel the indexing or download.
\n", + "comments": "" + }, + "git_note_foreach_cb": { + "type": "callback", + "file": "git2/notes.h", + "line": 29, + "lineto": 32, + "args": [ + { + "name": "blob_id", + "type": "const git_oid *", + "comment": "object id of the blob containing the message" }, { - "name": "total_steps", - "type": "size_t", - "comment": null + "name": "annotated_object_id", + "type": "const git_oid *", + "comment": "the id of the object being annotated" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "user-specified data to the foreach function" } ], - "argline": "const char *path, size_t completed_steps, size_t total_steps, void *payload", - "sig": "const char *::size_t::size_t::void *", + "argline": "const git_oid *blob_id, const git_oid *annotated_object_id, void *payload", + "sig": "const git_oid *::const git_oid *::void *", "return": { - "type": "void", - "comment": null + "type": "int", + "comment": " 0 on success, or a negative number on failure" }, - "description": "Checkout progress notification function
\n", + "description": "Callback for git_note_foreach.
\n", "comments": "" }, - "git_checkout_perfdata_cb": { + "git_odb_foreach_cb": { "type": "callback", - "file": "checkout.h", - "line": 239, - "lineto": 241, + "file": "git2/odb.h", + "line": 43, + "lineto": 43, "args": [ { - "name": "perfdata", - "type": "const git_checkout_perfdata *", - "comment": null + "name": "id", + "type": "const git_oid *", + "comment": "an id of an object in the object database" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "the payload from the initial call to git_odb_foreach" } ], - "argline": "const git_checkout_perfdata *perfdata, void *payload", - "sig": "const git_checkout_perfdata *::void *", - "return": { - "type": "void", - "comment": null - }, - "description": "Checkout perfdata notification function
\n", + "argline": "const git_oid *id, void *payload", + "sig": "const git_oid *::void *", + "return": { "type": "int", "comment": " 0 on success, or an error code" }, + "description": "Function type for callbacks from git_odb_foreach.
\n", "comments": "" }, - "git_remote_create_cb": { + "git_packbuilder_foreach_cb": { "type": "callback", - "file": "clone.h", - "line": 69, - "lineto": 74, + "file": "git2/pack.h", + "line": 208, + "lineto": 208, "args": [ { - "name": "out", - "type": "git_remote **", - "comment": "the resulting remote" - }, - { - "name": "repo", - "type": "git_repository *", - "comment": "the repository in which to create the remote" - }, - { - "name": "name", - "type": "const char *", - "comment": "the remote's name" + "name": "buf", + "type": "void *", + "comment": "A pointer to the object's data" }, { - "name": "url", - "type": "const char *", - "comment": "the remote's url" + "name": "size", + "type": "size_t", + "comment": "The size of the underlying object" }, { "name": "payload", "type": "void *", - "comment": "an opaque payload" + "comment": "Payload passed to git_packbuilder_foreach" } ], - "argline": "git_remote **out, git_repository *repo, const char *name, const char *url, void *payload", - "sig": "git_remote **::git_repository *::const char *::const char *::void *", + "argline": "void *buf, size_t size, void *payload", + "sig": "void *::size_t::void *", "return": { "type": "int", - "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code" + "comment": " non-zero to terminate the iteration" }, - "description": "The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.
\n", - "comments": "Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.
\n" + "description": "Callback used to iterate over packed objects
\n", + "comments": "" }, - "git_repository_create_cb": { + "git_packbuilder_progress": { "type": "callback", - "file": "clone.h", - "line": 90, - "lineto": 94, + "file": "git2/pack.h", + "line": 245, + "lineto": 249, "args": [ { - "name": "out", - "type": "git_repository **", - "comment": "the resulting repository" + "name": "stage", + "type": "int", + "comment": "the stage of the packbuilder" }, { - "name": "path", - "type": "const char *", - "comment": "path in which to create the repository" + "name": "current", + "type": "uint32_t", + "comment": "the current object" }, { - "name": "bare", - "type": "int", - "comment": "whether the repository is bare. This is the value from the clone options" + "name": "total", + "type": "uint32_t", + "comment": "the total number of objects" }, { "name": "payload", "type": "void *", - "comment": "payload specified by the options" + "comment": "the callback payload" } ], - "argline": "git_repository **out, const char *path, int bare, void *payload", - "sig": "git_repository **::const char *::int::void *", - "return": { - "type": "int", - "comment": " 0, or a negative value to indicate error" - }, - "description": "The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.
\n", - "comments": "Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.
\n" + "argline": "int stage, uint32_t current, uint32_t total, void *payload", + "sig": "int::uint32_t::uint32_t::void *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Packbuilder progress notification function.
\n", + "comments": "" }, - "git_diff_notify_cb": { + "git_reference_foreach_cb": { "type": "callback", - "file": "diff.h", - "line": 347, - "lineto": 351, + "file": "git2/refs.h", + "line": 439, + "lineto": 439, "args": [ { - "name": "diff_so_far", - "type": "const git_diff *", - "comment": null - }, - { - "name": "delta_to_add", - "type": "const git_diff_delta *", - "comment": null - }, - { - "name": "matched_pathspec", - "type": "const char *", - "comment": null + "name": "reference", + "type": "git_reference *", + "comment": "The reference object" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload passed to git_reference_foreach" } ], - "argline": "const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload", - "sig": "const git_diff *::const git_diff_delta *::const char *::void *", + "argline": "git_reference *reference, void *payload", + "sig": "git_reference *::void *", "return": { "type": "int", - "comment": null + "comment": " non-zero to terminate the iteration" }, - "description": "Diff notification callback function.
\n", - "comments": "The callback will be called for each file, just before the git_delta_t gets inserted into the diff.
When the callback: - returns < 0, the diff process will be aborted. - returns > 0, the delta will not be inserted into the diff, but the diff process continues. - returns 0, the delta is inserted into the diff, and the diff process continues.
\n" + "description": "Callback used to iterate over references
\n", + "comments": "" }, - "git_diff_progress_cb": { + "git_reference_foreach_name_cb": { "type": "callback", - "file": "diff.h", - "line": 363, - "lineto": 367, + "file": "git2/refs.h", + "line": 450, + "lineto": 450, "args": [ { - "name": "diff_so_far", - "type": "const git_diff *", - "comment": "The diff being generated." - }, - { - "name": "old_path", - "type": "const char *", - "comment": "The path to the old file or NULL." - }, - { - "name": "new_path", + "name": "name", "type": "const char *", - "comment": "The path to the new file or NULL." + "comment": "The reference name" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload passed to git_reference_foreach_name" } ], - "argline": "const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload", - "sig": "const git_diff *::const char *::const char *::void *", + "argline": "const char *name, void *payload", + "sig": "const char *::void *", "return": { "type": "int", - "comment": " Non-zero to abort the diff." + "comment": " non-zero to terminate the iteration" }, - "description": "Diff progress callback.
\n", - "comments": "Called before each file comparison.
\n" + "description": "Callback used to iterate over reference names
\n", + "comments": "" }, - "git_diff_file_cb": { + "git_push_transfer_progress_cb": { "type": "callback", - "file": "diff.h", - "line": 446, - "lineto": 449, + "file": "git2/remote.h", + "line": 481, + "lineto": 485, "args": [ { - "name": "delta", - "type": "const git_diff_delta *", - "comment": "A pointer to the delta data for the file" + "name": "current", + "type": "unsigned int", + "comment": "The number of objects pushed so far" }, { - "name": "progress", - "type": "float", - "comment": "Goes from 0 to 1 over the diff" + "name": "total", + "type": "unsigned int", + "comment": "The total number of objects to push" + }, + { + "name": "bytes", + "type": "size_t", + "comment": "The number of bytes pushed" }, { "name": "payload", "type": "void *", - "comment": "User-specified pointer from foreach function" + "comment": "The user-specified payload callback" } ], - "argline": "const git_diff_delta *delta, float progress, void *payload", - "sig": "const git_diff_delta *::float::void *", + "argline": "unsigned int current, unsigned int total, size_t bytes, void *payload", + "sig": "unsigned int::unsigned int::size_t::void *", "return": { "type": "int", - "comment": null + "comment": " 0 or an error code to stop the transfer" }, - "description": "When iterating over a diff, callback that will be made per file.
\n", + "description": "Push network progress notification callback.
\n", "comments": "" }, - "git_diff_binary_cb": { + "git_push_negotiation": { "type": "callback", - "file": "diff.h", - "line": 493, - "lineto": 496, + "file": "git2/remote.h", + "line": 518, + "lineto": 521, "args": [ { - "name": "delta", - "type": "const git_diff_delta *", - "comment": null + "name": "updates", + "type": "const git_push_update **", + "comment": "an array containing the updates which will be sent\n as commands to the destination." }, { - "name": "binary", - "type": "const git_diff_binary *", - "comment": null + "name": "len", + "type": "size_t", + "comment": "number of elements in `updates`" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload provided by the caller" } ], - "argline": "const git_diff_delta *delta, const git_diff_binary *binary, void *payload", - "sig": "const git_diff_delta *::const git_diff_binary *::void *", + "argline": "const git_push_update **updates, size_t len, void *payload", + "sig": "const git_push_update **::size_t::void *", "return": { "type": "int", - "comment": null + "comment": " 0 or an error code to stop the push" }, - "description": "When iterating over a diff, callback that will be made for\n binary content within the diff.
\n", + "description": "Callback used to inform of upcoming updates.
\n", "comments": "" }, - "git_diff_hunk_cb": { + "git_push_update_reference_cb": { "type": "callback", - "file": "diff.h", - "line": 513, - "lineto": 516, + "file": "git2/remote.h", + "line": 535, + "lineto": 535, "args": [ { - "name": "delta", - "type": "const git_diff_delta *", - "comment": null + "name": "refname", + "type": "const char *", + "comment": "refname specifying to the remote ref" }, { - "name": "hunk", - "type": "const git_diff_hunk *", - "comment": null + "name": "status", + "type": "const char *", + "comment": "status message sent from the remote" }, { - "name": "payload", + "name": "data", "type": "void *", - "comment": null + "comment": "data provided by the caller" } ], - "argline": "const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload", - "sig": "const git_diff_delta *::const git_diff_hunk *::void *", + "argline": "const char *refname, const char *status, void *data", + "sig": "const char *::const char *::void *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, otherwise an error" }, - "description": "When iterating over a diff, callback that will be made per hunk.
\n", - "comments": "" + "description": "Callback used to inform of the update status from the remote.
\n", + "comments": "Called for each updated reference on push. If status is not NULL, the update was rejected by the remote server and status contains the reason given.
When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.
\n", - "comments": "When printing a diff, callback that will be made to output each line of text. This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.
\n" + "description": "Callback to resolve URLs before connecting to remote
\n", + "comments": "If you return GIT_PASSTHROUGH, you don't need to write anything to url_resolved.
\n" }, - "git_index_matched_path_cb": { + "git_remote_ready_cb": { "type": "callback", - "file": "index.h", - "line": 146, - "lineto": 147, + "file": "git2/remote.h", + "line": 564, + "lineto": 564, "args": [ { - "name": "path", - "type": "const char *", - "comment": null + "name": "remote", + "type": "git_remote *", + "comment": "The remote to be connected" }, { - "name": "matched_pathspec", - "type": "const char *", - "comment": null + "name": "direction", + "type": "int", + "comment": "GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload provided by the caller" } ], - "argline": "const char *path, const char *matched_pathspec, void *payload", - "sig": "const char *::const char *::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Callback for APIs that add/remove/update files matching pathspec
\n", + "argline": "git_remote *remote, int direction, void *payload", + "sig": "git_remote *::int::void *", + "return": { "type": "int", "comment": " 0 on success, or an error" }, + "description": "Callback invoked immediately before we attempt to connect to the\n given url. Callers may change the URL before the connection by\n calling git_remote_set_instance_url in the callback.
Callback for listing the remote heads
\n", + "description": "Callback used to iterate over each FETCH_HEAD entry
\n", "comments": "" }, - "git_note_foreach_cb": { + "git_repository_mergehead_foreach_cb": { "type": "callback", - "file": "notes.h", - "line": 29, - "lineto": 30, + "file": "git2/repository.h", + "line": 777, + "lineto": 778, "args": [ { - "name": "blob_id", - "type": "const git_oid *", - "comment": null - }, - { - "name": "annotated_object_id", + "name": "oid", "type": "const git_oid *", - "comment": null + "comment": "The merge OID" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload passed to git_repository_mergehead_foreach" } ], - "argline": "const git_oid *blob_id, const git_oid *annotated_object_id, void *payload", - "sig": "const git_oid *::const git_oid *::void *", + "argline": "const git_oid *oid, void *payload", + "sig": "const git_oid *::void *", "return": { "type": "int", - "comment": null + "comment": " non-zero to terminate the iteration" }, - "description": "Callback for git_note_foreach.
\n", - "comments": "Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to git_note_foreach
Callback used to iterate over each MERGE_HEAD entry
\n", + "comments": "" }, - "git_odb_foreach_cb": { + "git_revwalk_hide_cb": { "type": "callback", - "file": "odb.h", - "line": 27, - "lineto": 27, + "file": "git2/revwalk.h", + "line": 283, + "lineto": 285, "args": [ { - "name": "id", + "name": "commit_id", "type": "const git_oid *", - "comment": null + "comment": "oid of Commit" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "User-specified pointer to data to be passed as data payload" } ], - "argline": "const git_oid *id, void *payload", + "argline": "const git_oid *commit_id, void *payload", "sig": "const git_oid *::void *", "return": { "type": "int", - "comment": null + "comment": " non-zero to hide the commmit and it parent." }, - "description": "Function type for callbacks from git_odb_foreach.
\n", + "description": "This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.
\n", "comments": "" }, - "git_packbuilder_progress": { + "git_stash_apply_progress_cb": { "type": "callback", - "file": "pack.h", - "line": 210, - "lineto": 214, + "file": "git2/stash.h", + "line": 181, + "lineto": 183, "args": [ { - "name": "stage", - "type": "int", - "comment": null - }, - { - "name": "current", - "type": "unsigned int", - "comment": null - }, - { - "name": "total", - "type": "unsigned int", - "comment": null + "name": "progress", + "type": "git_stash_apply_progress_t", + "comment": "the progress information" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "the user-specified payload to the apply function" } ], - "argline": "int stage, unsigned int current, unsigned int total, void *payload", - "sig": "int::unsigned int::unsigned int::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Packbuilder progress notification function
\n", + "argline": "git_stash_apply_progress_t progress, void *payload", + "sig": "git_stash_apply_progress_t::void *", + "return": { "type": "int", "comment": " 0 on success, -1 on error" }, + "description": "Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.
\n", "comments": "" }, - "git_remote_rename_problem_cb": { + "git_stash_cb": { "type": "callback", - "file": "remote.h", - "line": 29, - "lineto": 29, + "file": "git2/stash.h", + "line": 268, + "lineto": 272, "args": [ { - "name": "problematic_refspec", + "name": "index", + "type": "size_t", + "comment": "The position within the stash list. 0 points to the\n most recent stashed state." + }, + { + "name": "message", "type": "const char *", - "comment": null + "comment": "The stash message." + }, + { + "name": "stash_id", + "type": "const git_oid *", + "comment": "The commit oid of the stashed state." }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Extra parameter to callback function." } ], - "argline": "const char *problematic_refspec, void *payload", - "sig": "const char *::void *", + "argline": "size_t index, const char *message, const git_oid *stash_id, void *payload", + "sig": "size_t::const char *::const git_oid *::void *", "return": { "type": "int", - "comment": null + "comment": " 0 to continue iterating or non-zero to stop." }, - "description": "git2/remote.h
\n", - "comments": "@{
\n" + "description": "This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.
\n", + "comments": "" }, - "git_push_transfer_progress": { + "git_status_cb": { "type": "callback", - "file": "remote.h", - "line": 335, - "lineto": 339, + "file": "git2/status.h", + "line": 62, + "lineto": 63, "args": [ { - "name": "current", - "type": "unsigned int", - "comment": null + "name": "path", + "type": "const char *", + "comment": "is the path to the file" }, { - "name": "total", + "name": "status_flags", "type": "unsigned int", - "comment": null - }, - { - "name": "bytes", - "type": "size_t", - "comment": null + "comment": "the `git_status_t` values for file's status" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "the user-specified payload to the foreach function" } ], - "argline": "unsigned int current, unsigned int total, size_t bytes, void *payload", - "sig": "unsigned int::unsigned int::size_t::void *", + "argline": "const char *path, unsigned int status_flags, void *payload", + "sig": "const char *::unsigned int::void *", "return": { "type": "int", - "comment": null + "comment": " 0 on success, or a negative number on failure" }, - "description": "Push network progress notification function
\n", + "description": "Function pointer to receive status on individual files
\n", "comments": "" }, - "git_push_negotiation": { + "git_submodule_cb": { "type": "callback", - "file": "remote.h", - "line": 368, - "lineto": 368, + "file": "git2/submodule.h", + "line": 125, + "lineto": 126, "args": [ { - "name": "updates", - "type": "const git_push_update **", - "comment": "an array containing the updates which will be sent\n as commands to the destination." + "name": "sm", + "type": "git_submodule *", + "comment": "git_submodule currently being visited" }, { - "name": "len", - "type": "size_t", - "comment": "number of elements in `updates`" + "name": "name", + "type": "const char *", + "comment": "name of the submodule" }, { "name": "payload", "type": "void *", - "comment": "Payload provided by the caller" + "comment": "value you passed to the foreach function as payload" } ], - "argline": "const git_push_update **updates, size_t len, void *payload", - "sig": "const git_push_update **::size_t::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "", - "comments": "" - }, - "git_revwalk_hide_cb": { - "type": "callback", - "file": "revwalk.h", - "line": 279, - "lineto": 281, - "args": [ - { - "name": "commit_id", - "type": "const git_oid *", - "comment": "oid of Commit" - }, - { - "name": "payload", - "type": "void *", - "comment": "User-specified pointer to data to be passed as data payload" - } - ], - "argline": "const git_oid *commit_id, void *payload", - "sig": "const git_oid *::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.
\n", + "argline": "git_submodule *sm, const char *name, void *payload", + "sig": "git_submodule *::const char *::void *", + "return": { "type": "int", "comment": " 0 on success or error code" }, + "description": "Function pointer to receive each submodule
\n", "comments": "" }, - "git_stash_apply_progress_cb": { + "git_tag_foreach_cb": { "type": "callback", - "file": "stash.h", - "line": 113, - "lineto": 115, + "file": "git2/tag.h", + "line": 330, + "lineto": 330, "args": [ - { - "name": "progress", - "type": "git_stash_apply_progress_t", - "comment": null - }, + { "name": "name", "type": "const char *", "comment": "The tag name" }, + { "name": "oid", "type": "git_oid *", "comment": "The tag's OID" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload passed to git_tag_foreach" } ], - "argline": "git_stash_apply_progress_t progress, void *payload", - "sig": "git_stash_apply_progress_t::void *", + "argline": "const char *name, git_oid *oid, void *payload", + "sig": "const char *::git_oid *::void *", "return": { "type": "int", - "comment": null + "comment": " non-zero to terminate the iteration" }, - "description": "Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.
\n", + "description": "Callback used to iterate over tag names
\n", "comments": "" }, - "git_stash_cb": { + "git_trace_cb": { "type": "callback", - "file": "stash.h", - "line": 198, - "lineto": 202, + "file": "git2/trace.h", + "line": 55, + "lineto": 57, "args": [ { - "name": "index", - "type": "size_t", - "comment": "The position within the stash list. 0 points to the\n most recent stashed state." + "name": "level", + "type": "git_trace_level_t", + "comment": "the trace level" }, { - "name": "message", + "name": "msg", "type": "const char *", - "comment": "The stash message." - }, - { - "name": "stash_id", - "type": "const int *", - "comment": "The commit oid of the stashed state." - }, - { - "name": "payload", - "type": "void *", - "comment": "Extra parameter to callback function." + "comment": "the trace message" } ], - "argline": "size_t index, const char *message, const int *stash_id, void *payload", - "sig": "size_t::const char *::const int *::void *", - "return": { - "type": "int", - "comment": " 0 to continue iterating or non-zero to stop." - }, - "description": "This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.
\n", + "argline": "git_trace_level_t level, const char *msg", + "sig": "git_trace_level_t::const char *", + "return": { "type": "void", "comment": null }, + "description": "An instance for a tracing function
\n", "comments": "" }, - "git_status_cb": { + "git_transport_message_cb": { "type": "callback", - "file": "status.h", - "line": 61, - "lineto": 62, + "file": "git2/transport.h", + "line": 35, + "lineto": 35, "args": [ { - "name": "path", + "name": "str", "type": "const char *", - "comment": null + "comment": "The message from the transport" }, { - "name": "status_flags", - "type": "unsigned int", - "comment": null + "name": "len", + "type": "int", + "comment": "The length of the message" }, { "name": "payload", "type": "void *", - "comment": null + "comment": "Payload provided by the caller" } ], - "argline": "const char *path, unsigned int status_flags, void *payload", - "sig": "const char *::unsigned int::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Function pointer to receive status on individual files
\n", - "comments": "path is the relative path to the file from the root of the repository.
status_flags is a combination of git_status_t values that apply.
payload is the value you passed to the foreach function as payload.
Callback for messages received by the transport.
\n", + "comments": "Return a negative value to cancel the network operation.
\n" }, - "git_submodule_cb": { + "git_transport_cb": { "type": "callback", - "file": "submodule.h", - "line": 118, - "lineto": 119, + "file": "git2/transport.h", + "line": 45, + "lineto": 45, "args": [ { - "name": "sm", - "type": "git_submodule *", - "comment": "git_submodule currently being visited" + "name": "out", + "type": "git_transport **", + "comment": "the transport generate" }, { - "name": "name", - "type": "const char *", - "comment": "name of the submodule" + "name": "owner", + "type": "git_remote *", + "comment": "the owner for the transport" }, { - "name": "payload", + "name": "param", "type": "void *", - "comment": "value you passed to the foreach function as payload" + "comment": "the param to the transport creation" } ], - "argline": "git_submodule *sm, const char *name, void *payload", - "sig": "git_submodule *::const char *::void *", - "return": { - "type": "int", - "comment": " 0 on success or error code" - }, - "description": "Function pointer to receive each submodule
\n", + "argline": "git_transport **out, git_remote *owner, void *param", + "sig": "git_transport **::git_remote *::void *", + "return": { "type": "int", "comment": " 0 on success or an error code" }, + "description": "Signature of a function which creates a transport.
\n", "comments": "" }, - "git_filter_init_fn": { - "type": "callback", - "file": "sys/filter.h", - "line": 141, - "lineto": 141, - "args": [ - { - "name": "self", - "type": "git_filter *", - "comment": null - } - ], - "argline": "git_filter *self", - "sig": "git_filter *", - "return": { - "type": "int", - "comment": null - }, - "description": "Initialize callback on filter
\n", - "comments": "Specified as filter.initialize, this is an optional callback invoked before a filter is first used. It will be called once at most.
If non-NULL, the filter's initialize callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn't need the filter).
Shutdown callback on filter
\n", - "comments": "Specified as filter.shutdown, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the initialize callback was not made.
Typically this function will free the git_filter object itself.
Callback to decide if a given source needs this filter
\n", - "comments": "Specified as filter.check, this is an optional callback that checks if filtering is needed for a given source.
It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.
\n\nThe attr_values will be set to the values of any attributes given in the filter definition. See git_filter below for more detail.
The payload will be a pointer to a reference payload for the filter. This will start as NULL, but check can assign to this pointer for later use by the apply callback. Note that the value should be heap allocated (not stack), so that it doesn't go away before the apply callback can use it. If a filter allocates and assigns a value to the payload, it will need a cleanup callback to free the payload.
Callback for git_treebuilder_filter
\n", + "comments": "The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).
\n" }, - "git_filter_apply_fn": { + "git_treewalk_cb": { "type": "callback", - "file": "sys/filter.h", - "line": 193, - "lineto": 198, + "file": "git2/tree.h", + "line": 394, + "lineto": 395, "args": [ { - "name": "self", - "type": "git_filter *", - "comment": null - }, - { - "name": "payload", - "type": "void **", - "comment": null - }, - { - "name": "to", - "type": "git_buf *", - "comment": null - }, - { - "name": "from", - "type": "const git_buf *", - "comment": null + "name": "root", + "type": "const char *", + "comment": "the current (relative) root to the entry" }, { - "name": "src", - "type": "const git_filter_source *", - "comment": null - } - ], - "argline": "git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src", - "sig": "git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *", - "return": { - "type": "int", - "comment": null - }, - "description": "Callback to actually perform the data filtering
\n", - "comments": "Specified as filter.apply, this is the callback that actually filters data. If it successfully writes the output, it should return 0. Like check, it can return GIT_PASSTHROUGH to indicate that the filter doesn't want to run. Other error codes will stop filter processing and return to the caller.
The payload value will refer to any payload that was set by the check callback. It may be read from or written to as needed.
Callback to clean up after filtering has been applied
\n", - "comments": "Specified as filter.cleanup, this is an optional callback invoked after the filter has been applied. If the check or apply callbacks allocated a payload to keep per-source filter state, use this callback to free that payload and release resources as required.
Initialize callback on merge driver
\n", - "comments": "Specified as driver.initialize, this is an optional callback invoked before a merge driver is first used. It will be called once at most per library lifetime.
If non-NULL, the merge driver's initialize callback will be invoked right before the first use of the driver, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn't need the merge driver).
Callback for the tree traversal method.
\n", + "comments": "" + } + }, + "globals": {}, + "types": [ + [ + "git_annotated_commit", + { + "decl": "git_annotated_commit", + "type": "struct", + "value": "git_annotated_commit", + "file": "git2/types.h", + "line": 214, + "lineto": 214, + "tdef": "typedef", + "description": " Annotated commits are commits with additional metadata about how the\n commit was resolved, which can be used for maintaining the user's\n \"intent\" through commands like merge and rebase.", + "comments": "For example, if a user wants to conceptually "merge HEAD", then the commit portion of an annotated commit will point to the HEAD commit, but the annotation will denote the ref HEAD. This allows git to perform the internal bookkeeping so that the system knows both the content of what is being merged but also how the content was looked up so that it can be recorded in the reflog appropriately.
Shutdown callback on merge driver
\n", - "comments": "Specified as driver.shutdown, this is an optional callback invoked when the merge driver is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the initialize callback was not made.
Typically this function will free the git_merge_driver object itself.
Callback to perform the merge.
\n", - "comments": "Specified as driver.apply, this is the callback that actually does the merge. If it can successfully perform a merge, it should populate path_out with a pointer to the filename to accept, mode_out with the resultant mode, and merged_out with the buffer of the merged file and then return 0. If the driver returns GIT_PASSTHROUGH, then the default merge driver should instead be run. It can also return GIT_EMERGECONFLICT if the driver is not able to produce a merge result, and the file will remain conflicted. Any other errors will fail and return to the caller.
The filter_name contains the name of the filter that was invoked, as specified by the file's attributes.
The src contains the data about the file to be merged.
When the callback: - returns < 0, the apply process will be aborted. - returns > 0, the hunk will not be applied, but the apply process continues - returns 0, the hunk is applied, and the apply process continues.
\n", + "fields": [ + { + "type": "int", + "name": "GIT_APPLY_CHECK", + "comments": "Don't actually make changes, just test that the patch applies.\n This is the equivalent of git apply --check.
Apply the patch to the workdir, leaving the index untouched.\n This is the equivalent of git apply with no location argument.
Apply the patch to the index, leaving the working directory\n untouched. This is the equivalent of git apply --cached.
Apply the patch to both the working directory and the index.\n This is the equivalent of git apply --index.
When the callback: - returns < 0, the apply process will be aborted. - returns > 0, the hunk will not be applied, but the apply process continues - returns 0, the hunk is applied, and the apply process continues.
\n\nInitialize with GIT_APPLY_OPTIONS_INIT. Alternatively, you can use git_apply_options_init.
An instance for a tracing function
\n", - "comments": "" - }, - "git_transport_cb": { - "type": "callback", - "file": "transport.h", - "line": 24, - "lineto": 24, - "args": [ - { - "name": "out", - "type": "git_transport **", - "comment": null - }, - { - "name": "owner", - "type": "git_remote *", - "comment": null - }, - { - "name": "param", - "type": "void *", - "comment": null + } + ], + [ + "git_attr_options", + { + "decl": [ + "unsigned int version", + "unsigned int flags", + "git_oid * commit_id", + "git_oid attr_commit_id" + ], + "type": "struct", + "value": "git_attr_options", + "file": "git2/attr.h", + "line": 154, + "lineto": 171, + "block": "unsigned int version\nunsigned int flags\ngit_oid * commit_id\ngit_oid attr_commit_id", + "tdef": "typedef", + "description": " An options structure for querying attributes.", + "comments": "", + "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, + { + "type": "unsigned int", + "name": "flags", + "comments": " A combination of GIT_ATTR_CHECK flags " + }, + { "type": "git_oid *", "name": "commit_id", "comments": "" }, + { + "type": "git_oid", + "name": "attr_commit_id", + "comments": " The commit to load attributes from, when\n `GIT_ATTR_CHECK_INCLUDE_COMMIT` is specified." + } + ], + "used": { + "returns": [], + "needs": [ + "git_attr_foreach_ext", + "git_attr_get_ext", + "git_attr_get_many_ext" + ] } - ], - "argline": "git_transport **out, git_remote *owner, void *param", - "sig": "git_transport **::git_remote *::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Signature of a function which creates a transport
\n", - "comments": "" - }, - "git_cred_acquire_cb": { - "type": "callback", - "file": "transport.h", - "line": 333, - "lineto": 338, - "args": [ - { - "name": "cred", - "type": "git_cred **", - "comment": null - }, - { - "name": "url", - "type": "const char *", - "comment": null - }, - { - "name": "username_from_url", - "type": "const char *", - "comment": null - }, - { - "name": "allowed_types", - "type": "unsigned int", - "comment": null - }, - { - "name": "payload", - "type": "void *", - "comment": null + } + ], + [ + "git_attr_value_t", + { + "decl": [ + "GIT_ATTR_VALUE_UNSPECIFIED", + "GIT_ATTR_VALUE_TRUE", + "GIT_ATTR_VALUE_FALSE", + "GIT_ATTR_VALUE_STRING" + ], + "type": "enum", + "file": "git2/attr.h", + "line": 86, + "lineto": 91, + "block": "GIT_ATTR_VALUE_UNSPECIFIED\nGIT_ATTR_VALUE_TRUE\nGIT_ATTR_VALUE_FALSE\nGIT_ATTR_VALUE_STRING", + "tdef": "typedef", + "description": " Possible states for an attribute", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_ATTR_VALUE_UNSPECIFIED", + "comments": "The attribute has been left unspecified
\n", + "value": 0 + }, + { + "type": "int", + "name": "GIT_ATTR_VALUE_TRUE", + "comments": "The attribute has been set
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_ATTR_VALUE_FALSE", + "comments": "The attribute has been unset
\n", + "value": 2 + }, + { + "type": "int", + "name": "GIT_ATTR_VALUE_STRING", + "comments": "This attribute has a value
\n", + "value": 3 + } + ], + "used": { "returns": ["git_attr_value"], "needs": [] } + } + ], + [ + "git_blame", + { + "decl": "git_blame", + "type": "struct", + "value": "git_blame", + "file": "git2/blame.h", + "line": 236, + "lineto": 236, + "tdef": "typedef", + "description": " Opaque structure to hold blame results ", + "comments": "", + "used": { + "returns": [ + "git_blame_get_hunk_byindex", + "git_blame_get_hunk_byline", + "git_blame_hunk_byindex", + "git_blame_hunk_byline", + "git_blame_line_byindex" + ], + "needs": [ + "git_blame_buffer", + "git_blame_free", + "git_blame_get_hunk_byindex", + "git_blame_get_hunk_byline", + "git_blame_get_hunk_count", + "git_blame_hunk_byindex", + "git_blame_hunk_byline", + "git_blame_hunkcount", + "git_blame_init_options", + "git_blame_line_byindex", + "git_blame_linecount", + "git_blame_options_init" + ] } - ], - "argline": "git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload", - "sig": "git_cred **::const char *::const char *::unsigned int::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Signature of a function which acquires a credential object.
\n", - "comments": "Callback for git_treebuilder_filter
\n", - "comments": "The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).
\n" - }, - "git_treewalk_cb": { - "type": "callback", - "file": "tree.h", - "line": 380, - "lineto": 381, - "args": [ - { - "name": "root", - "type": "const char *", - "comment": null - }, - { - "name": "entry", - "type": "const git_tree_entry *", - "comment": null - }, - { - "name": "payload", - "type": "void *", - "comment": null - } - ], - "argline": "const char *root, const git_tree_entry *entry, void *payload", - "sig": "const char *::const git_tree_entry *::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Callback for the tree traversal method
\n", - "comments": "" - }, - "git_transfer_progress_cb": { - "type": "callback", - "file": "types.h", - "line": 270, - "lineto": 270, - "args": [ - { - "name": "stats", - "type": "const git_transfer_progress *", - "comment": "Structure containing information about the state of the transfer" - }, - { - "name": "payload", - "type": "void *", - "comment": "Payload provided by caller" + } + ], + [ + "git_blame_flag_t", + { + "decl": [ + "GIT_BLAME_NORMAL", + "GIT_BLAME_TRACK_COPIES_SAME_FILE", + "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES", + "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES", + "GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES", + "GIT_BLAME_FIRST_PARENT", + "GIT_BLAME_USE_MAILMAP", + "GIT_BLAME_IGNORE_WHITESPACE" + ], + "type": "enum", + "file": "git2/blame.h", + "line": 31, + "lineto": 82, + "block": "GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT\nGIT_BLAME_USE_MAILMAP\nGIT_BLAME_IGNORE_WHITESPACE", + "tdef": "typedef", + "description": " Flags for indicating option behavior for git_blame APIs.", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_BLAME_NORMAL", + "comments": "Normal blame, the default
\n", + "value": 0 + }, + { + "type": "int", + "name": "GIT_BLAME_TRACK_COPIES_SAME_FILE", + "comments": "Track lines that have moved within a file (like git blame -M).
This is not yet implemented and reserved for future use.
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES", + "comments": "Track lines that have moved across files in the same commit\n (like git blame -C).
This is not yet implemented and reserved for future use.
\n", + "value": 2 + }, + { + "type": "int", + "name": "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES", + "comments": "Track lines that have been copied from another file that exists\n in the same commit (like git blame -CC). Implies SAME_FILE.
This is not yet implemented and reserved for future use.
\n", + "value": 4 + }, + { + "type": "int", + "name": "GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES", + "comments": "Track lines that have been copied from another file that exists in\n any commit (like git blame -CCC). Implies SAME_COMMIT_COPIES.
This is not yet implemented and reserved for future use.
\n", + "value": 8 + }, + { + "type": "int", + "name": "GIT_BLAME_FIRST_PARENT", + "comments": "Restrict the search of commits to those reachable following only\n the first parents.
\n", + "value": 16 + }, + { + "type": "int", + "name": "GIT_BLAME_USE_MAILMAP", + "comments": "Use mailmap file to map author and committer names and email\n addresses to canonical real names and email addresses. The\n mailmap will be read from the working directory, or HEAD in a\n bare repository.
\n", + "value": 32 + }, + { + "type": "int", + "name": "GIT_BLAME_IGNORE_WHITESPACE", + "comments": "Ignore whitespace differences
\n", + "value": 64 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_blame_line", + { + "decl": ["const char * ptr", "size_t len"], + "type": "struct", + "value": "git_blame_line", + "file": "git2/blame.h", + "line": 230, + "lineto": 233, + "block": "const char * ptr\nsize_t len", + "tdef": "typedef", + "description": " Structure that represents a line in a blamed file.", + "comments": "", + "fields": [ + { "type": "const char *", "name": "ptr", "comments": "" }, + { "type": "size_t", "name": "len", "comments": "" } + ], + "used": { "returns": ["git_blame_line_byindex"], "needs": [] } + } + ], + [ + "git_blame_options", + { + "decl": [ + "unsigned int version", + "unsigned int flags", + "uint16_t min_match_characters", + "git_oid newest_commit", + "git_oid oldest_commit", + "size_t min_line", + "size_t max_line" + ], + "type": "struct", + "value": "git_blame_options", + "file": "git2/blame.h", + "line": 91, + "lineto": 128, + "block": "unsigned int version\nunsigned int flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line", + "tdef": "typedef", + "description": " Blame options structure", + "comments": "Initialize with GIT_BLAME_OPTIONS_INIT. Alternatively, you can use git_blame_options_init.
Type for progress callbacks during indexing. Return a value less than zero\n to cancel the transfer.
\n", - "comments": "" - }, - "git_transport_message_cb": { - "type": "callback", - "file": "types.h", - "line": 280, - "lineto": 280, - "args": [ - { - "name": "str", - "type": "const char *", - "comment": "The message from the transport" - }, - { - "name": "len", - "type": "int", - "comment": "The length of the message" - }, - { - "name": "payload", - "type": "void *", - "comment": "Payload provided by the caller" + } + ], + [ + "git_blob", + { + "decl": "git_blob", + "type": "struct", + "value": "git_blob", + "file": "git2/types.h", + "line": 138, + "lineto": 138, + "tdef": "typedef", + "description": " In-memory representation of a blob object. ", + "comments": "", + "used": { + "returns": [], + "needs": [ + "git_blob_dup", + "git_blob_filter", + "git_blob_filter_options_init", + "git_blob_filtered_content", + "git_blob_free", + "git_blob_id", + "git_blob_is_binary", + "git_blob_lookup", + "git_blob_lookup_prefix", + "git_blob_owner", + "git_blob_rawcontent", + "git_blob_rawsize", + "git_diff_blob_to_buffer", + "git_diff_blobs", + "git_filter_list_apply_to_blob", + "git_filter_list_load", + "git_filter_list_load_ext", + "git_filter_list_stream_blob", + "git_patch_from_blob_and_buffer", + "git_patch_from_blobs" + ] } - ], - "argline": "const char *str, int len, void *payload", - "sig": "const char *::int::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Type for messages delivered by the transport. Return a negative value\n to cancel the network operation.
\n", - "comments": "" - }, - "git_transport_certificate_check_cb": { - "type": "callback", - "file": "types.h", - "line": 330, - "lineto": 330, - "args": [ - { - "name": "cert", - "type": "git_cert *", - "comment": "The host certificate" - }, - { - "name": "valid", - "type": "int", - "comment": "Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid" - }, - { - "name": "host", - "type": "const char *", - "comment": "Hostname of the host libgit2 connected to" - }, - { - "name": "payload", - "type": "void *", - "comment": "Payload provided by the caller" + } + ], + [ + "git_blob_filter_flag_t", + { + "decl": [ + "GIT_BLOB_FILTER_CHECK_FOR_BINARY", + "GIT_BLOB_FILTER_NO_SYSTEM_ATTRIBUTES", + "GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD", + "GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT" + ], + "type": "enum", + "file": "git2/blob.h", + "line": 111, + "lineto": 132, + "block": "GIT_BLOB_FILTER_CHECK_FOR_BINARY\nGIT_BLOB_FILTER_NO_SYSTEM_ATTRIBUTES\nGIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD\nGIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT", + "tdef": "typedef", + "description": " Flags to control the functionality of `git_blob_filter`.", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_BLOB_FILTER_CHECK_FOR_BINARY", + "comments": "When set, filters will not be applied to binary files.
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_BLOB_FILTER_NO_SYSTEM_ATTRIBUTES", + "comments": "When set, filters will not load configuration from the\n system-wide gitattributes in /etc (or system equivalent).
When set, filters will be loaded from a .gitattributes file\n in the HEAD commit.
When set, filters will be loaded from a .gitattributes file\n in the specified commit.
Initialize with GIT_BLOB_FILTER_OPTIONS_INIT. Alternatively, you can use git_blob_filter_options_init.
[version] GIT_BLOB_FILTER_OPTIONS_VERSION [init_macro] GIT_BLOB_FILTER_OPTIONS_INIT [init_function] git_blob_filter_options_init
\n", + "fields": [ + { + "type": "int", + "name": "version", + "comments": " Version number of the options structure. " + }, + { + "type": "uint32_t", + "name": "flags", + "comments": " Flags to control the filtering process, see `git_blob_filter_flag_t` above.\n\n \n\n[flags] git_blob_filter_flag_t" + }, + { + "type": "git_oid *", + "name": "commit_id", + "comments": " This value is unused and reserved for API compatibility.\n\n " + }, + { + "type": "git_oid", + "name": "attr_commit_id", + "comments": " The commit to load attributes from, when\n `GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT` is specified." + } + ], + "used": { + "returns": [], + "needs": ["git_blob_filter", "git_blob_filter_options_init"] } - ], - "argline": "git_cert *cert, int valid, const char *host, void *payload", - "sig": "git_cert *::int::const char *::void *", - "return": { - "type": "int", - "comment": null - }, - "description": "Callback for the user's custom certificate checks.
\n", - "comments": "" - } - }, - "globals": {}, - "types": [ + } + ], [ - "git_annotated_commit", + "git_branch_iterator", { - "decl": "git_annotated_commit", + "decl": "git_branch_iterator", "type": "struct", - "value": "git_annotated_commit", - "file": "types.h", - "line": 178, - "lineto": 178, + "value": "git_branch_iterator", + "file": "git2/branch.h", + "line": 97, + "lineto": 97, "tdef": "typedef", - "description": " Annotated commits, the input to merge and rebase. ", + "description": " Iterator type for branches ", "comments": "", "used": { "returns": [], "needs": [ - "git_annotated_commit_free", - "git_annotated_commit_from_fetchhead", - "git_annotated_commit_from_ref", - "git_annotated_commit_from_revspec", - "git_annotated_commit_id", - "git_annotated_commit_lookup", - "git_branch_create_from_annotated", - "git_merge", - "git_merge_analysis", - "git_rebase_init", - "git_repository_set_head_detached_from_annotated", - "git_reset_from_annotated" + "git_branch_iterator_free", + "git_branch_iterator_new", + "git_branch_next" + ] + } + } + ], + [ + "git_branch_t", + { + "decl": ["GIT_BRANCH_LOCAL", "GIT_BRANCH_REMOTE", "GIT_BRANCH_ALL"], + "type": "enum", + "file": "git2/types.h", + "line": 231, + "lineto": 235, + "block": "GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL", + "tdef": "typedef", + "description": " Basic type of any Git branch. ", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_BRANCH_LOCAL", + "comments": "", + "value": 1 + }, + { + "type": "int", + "name": "GIT_BRANCH_REMOTE", + "comments": "", + "value": 2 + }, + { + "type": "int", + "name": "GIT_BRANCH_ALL", + "comments": "", + "value": 3 + } + ], + "used": { + "returns": [], + "needs": [ + "git_branch_iterator_new", + "git_branch_lookup", + "git_branch_next" + ] + } + } + ], + [ + "git_buf", + { + "decl": ["char * ptr", "size_t reserved", "size_t size"], + "type": "struct", + "value": "git_buf", + "file": "git2/buffer.h", + "line": 36, + "lineto": 55, + "block": "char * ptr\nsize_t reserved\nsize_t size", + "tdef": "typedef", + "description": " A data buffer for exporting data from libgit2", + "comments": "Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. To make ownership clear in these cases, libgit2 uses git_buf to return this data. Callers should use git_buf_dispose() to release the memory when they are done.
A git_buf contains a pointer to a NUL-terminated C string, and the length of the string (not including the NUL terminator).
MD5 is available
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_CERT_SSH_SHA1", + "comments": "SHA-1 is available
\n", + "value": 2 + }, + { + "type": "int", + "name": "GIT_CERT_SSH_SHA256", + "comments": "SHA-256 is available
\n", + "value": 4 + }, + { + "type": "int", + "name": "GIT_CERT_SSH_RAW", + "comments": "Raw hostkey is available
\n", + "value": 8 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_cert_t", { "decl": [ - "GIT_ATTR_UNSPECIFIED_T", - "GIT_ATTR_TRUE_T", - "GIT_ATTR_FALSE_T", - "GIT_ATTR_VALUE_T" + "GIT_CERT_NONE", + "GIT_CERT_X509", + "GIT_CERT_HOSTKEY_LIBSSH2", + "GIT_CERT_STRARRAY" ], "type": "enum", - "file": "attr.h", - "line": 82, - "lineto": 87, - "block": "GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T", + "file": "git2/cert.h", + "line": 25, + "lineto": 48, + "block": "GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY", "tdef": "typedef", - "description": " Possible states for an attribute", + "description": " Type of host certificate structure that is passed to the check callback", "comments": "", "fields": [ { "type": "int", - "name": "GIT_ATTR_UNSPECIFIED_T", - "comments": "The attribute has been left unspecified
\n", + "name": "GIT_CERT_NONE", + "comments": "No information about the certificate is available. This may\n happen when using curl.
\n", "value": 0 }, { "type": "int", - "name": "GIT_ATTR_TRUE_T", - "comments": "The attribute has been set
\n", + "name": "GIT_CERT_X509", + "comments": "The data argument to the callback will be a pointer to\n the DER-encoded data.
The attribute has been unset
\n", + "name": "GIT_CERT_HOSTKEY_LIBSSH2", + "comments": "The data argument to the callback will be a pointer to a\n git_cert_hostkey structure.
This attribute has a value
\n", + "name": "GIT_CERT_STRARRAY", + "comments": "The data argument to the callback will be a pointer to a\n git_strarray with name:content strings containing\n information about the certificate. This is used when using\n curl.
Checkout will invoke an options notification callback (notify_cb) for certain cases - you pick which ones via notify_flags:
Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.
\n\nNotification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.
\n", "fields": [ { "type": "int", - "name": "GIT_BLAME_NORMAL", - "comments": "Normal blame, the default
\n", + "name": "GIT_CHECKOUT_NOTIFY_NONE", + "comments": "", "value": 0 }, { "type": "int", - "name": "GIT_BLAME_TRACK_COPIES_SAME_FILE", - "comments": "Track lines that have moved within a file (like git blame -M).\n NOT IMPLEMENTED.
Invokes checkout on conflicting paths.
\n", "value": 1 }, { "type": "int", - "name": "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES", - "comments": "Track lines that have moved across files in the same commit (like git blame -C).\n NOT IMPLEMENTED.
Notifies about "dirty" files, i.e. those that do not need an update\n but no longer match the baseline. Core git displays these files when\n checkout runs, but won't stop the checkout.
\n", "value": 2 }, { "type": "int", - "name": "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES", - "comments": "Track lines that have been copied from another file that exists in the\n same commit (like git blame -CC). Implies SAME_FILE.\n NOT IMPLEMENTED.
Sends notification for any file changed.
\n", "value": 4 }, { "type": "int", - "name": "GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES", - "comments": "Track lines that have been copied from another file that exists in any\n commit (like git blame -CCC). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED.
Notifies about untracked files.
\n", "value": 8 }, { "type": "int", - "name": "GIT_BLAME_FIRST_PARENT", - "comments": "Restrict the search of commits to those reachable following only the\n first parents.
\n", + "name": "GIT_CHECKOUT_NOTIFY_IGNORED", + "comments": "Notifies about ignored files.
\n", "value": 16 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_NOTIFY_ALL", + "comments": "Notifies about ignored files.
\n", + "value": 65535 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": ["git_checkout_notify_cb"] } } ], [ - "git_blame_hunk", + "git_checkout_options", { "decl": [ - "size_t lines_in_hunk", - "git_oid final_commit_id", - "size_t final_start_line_number", - "git_signature * final_signature", - "git_oid orig_commit_id", - "const char * orig_path", - "size_t orig_start_line_number", - "git_signature * orig_signature", - "char boundary" + "unsigned int version", + "unsigned int checkout_strategy", + "int disable_filters", + "unsigned int dir_mode", + "unsigned int file_mode", + "int file_open_flags", + "unsigned int notify_flags", + "git_checkout_notify_cb notify_cb", + "void * notify_payload", + "git_checkout_progress_cb progress_cb", + "void * progress_payload", + "git_strarray paths", + "git_tree * baseline", + "git_index * baseline_index", + "const char * target_directory", + "const char * ancestor_label", + "const char * our_label", + "const char * their_label", + "git_checkout_perfdata_cb perfdata_cb", + "void * perfdata_payload" ], "type": "struct", - "value": "git_blame_hunk", - "file": "blame.h", - "line": 115, - "lineto": 128, - "block": "size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary", + "value": "git_checkout_options", + "file": "git2/checkout.h", + "line": 317, + "lineto": 391, + "block": "unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload", "tdef": "typedef", - "description": " Structure that represents a blame hunk.", - "comments": "lines_in_hunk is the number of lines in this hunk - final_commit_id is the OID of the commit where this line was last changed. - final_start_line_number is the 1-based line number where this hunk begins, in the final version of the file - orig_commit_id is the OID of the commit where this hunk was found. This will usually be the same as final_commit_id, except when GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES has been specified. - orig_path is the path to the file where this hunk originated, as of the commit specified by orig_commit_id. - orig_start_line_number is the 1-based line number where this hunk begins in the file named by orig_path in the commit specified by orig_commit_id. - boundary is 1 iff the hunk has been tracked to a boundary commit (the root, or the commit specified in git_blame_options.oldest_commit)Initialize with GIT_CHECKOUT_OPTIONS_INIT. Alternatively, you can use git_checkout_options_init.
[version] GIT_CHECKOUT_OPTIONS_VERSION [init_macro] GIT_CHECKOUT_OPTIONS_INIT [init_function] git_checkout_options_init
\n", "fields": [ { - "type": "size_t", - "name": "lines_in_hunk", - "comments": "" + "type": "unsigned int", + "name": "version", + "comments": " The version " }, { - "type": "git_oid", - "name": "final_commit_id", - "comments": "" + "type": "unsigned int", + "name": "checkout_strategy", + "comments": " default will be a safe checkout " }, { - "type": "size_t", - "name": "final_start_line_number", - "comments": "" + "type": "int", + "name": "disable_filters", + "comments": " don't apply filters like CRLF conversion " }, { - "type": "git_signature *", - "name": "final_signature", - "comments": "" + "type": "unsigned int", + "name": "dir_mode", + "comments": " default is 0755 " }, { - "type": "git_oid", - "name": "orig_commit_id", - "comments": "" + "type": "unsigned int", + "name": "file_mode", + "comments": " default is 0644 or 0755 as dictated by blob " }, { - "type": "const char *", - "name": "orig_path", - "comments": "" + "type": "int", + "name": "file_open_flags", + "comments": " default is O_CREAT | O_TRUNC | O_WRONLY " }, { - "type": "size_t", - "name": "orig_start_line_number", - "comments": "" + "type": "unsigned int", + "name": "notify_flags", + "comments": " Checkout notification flags specify what operations the notify\n callback is invoked for.\n\n \n\n[flags] git_checkout_notify_t" }, { - "type": "git_signature *", - "name": "orig_signature", - "comments": "" + "type": "git_checkout_notify_cb", + "name": "notify_cb", + "comments": " Optional callback to get notifications on specific file states.\n " }, { - "type": "char", - "name": "boundary", - "comments": "" - } - ], - "used": { - "returns": [ - "git_blame_get_hunk_byindex", - "git_blame_get_hunk_byline" - ], - "needs": [] - } - } - ], - [ - "git_blame_options", - { - "decl": [ - "unsigned int version", - "uint32_t flags", - "uint16_t min_match_characters", - "git_oid newest_commit", - "git_oid oldest_commit", - "size_t min_line", - "size_t max_line" - ], - "type": "struct", - "value": "git_blame_options", - "file": "blame.h", - "line": 70, - "lineto": 79, - "block": "unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line", - "tdef": "typedef", - "description": " Blame options structure", - "comments": "Use zeros to indicate default settings. It's easiest to use the GIT_BLAME_OPTIONS_INIT macro: git_blame_options opts = GIT_BLAME_OPTIONS_INIT;
flags is a combination of the git_blame_flag_t values above. - min_match_characters is the lower bound on the number of alphanumeric characters that must be detected as moving/copying within a file for it to associate those lines with the parent commit. The default value is 20. This value only takes effect if any of the GIT_BLAME_TRACK_COPIES_* flags are specified. - newest_commit is the id of the newest commit to consider. The default is HEAD. - oldest_commit is the id of the oldest commit to consider. The default is the first commit encountered with a NULL parent. - min_line is the first line in the file to blame. The default is 1 (line numbers start with 1). - max_line is the last line in the file to blame. The default is the last line of the file.In libgit2, checkout is used to update the working directory and index to match a target tree. Unlike git checkout, it does not move the HEAD commit for you - use git_repository_set_head or the like to do that.
Checkout looks at (up to) four things: the "target" tree you want to check out, the "baseline" tree of what was checked out previously, the working directory for actual files, and the index for staged changes.
\n\nYou give checkout one of two strategies for update:
\n\nGIT_CHECKOUT_SAFE is the default, and similar to git's default, which will make modifications that will not lose changes in the working directory.
| target == baseline | target != baseline | ---------------------|-----------------------|----------------------| workdir == baseline | no action | create, update, or | | | delete file | ---------------------|-----------------------|----------------------| workdir exists and | no action | conflict (notify | is != baseline | notify dirty MODIFIED | and cancel checkout) | ---------------------|-----------------------|----------------------| workdir missing, | notify dirty DELETED | create file | baseline present | | | ---------------------|-----------------------|----------------------|\nGIT_CHECKOUT_FORCE will take any action to make the working directory match the target (including potentially discarding modified files).
To emulate git checkout, use GIT_CHECKOUT_SAFE with a checkout notification callback (see below) that displays information about dirty files. The default behavior will cancel checkout on conflicts.
To emulate git checkout-index, use GIT_CHECKOUT_SAFE with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory. This core git command isn't quite "force" but is sensitive about some types of changes.
To emulate git checkout -f, use GIT_CHECKOUT_FORCE.
There are some additional flags to modify the behavior of checkout:
\n\nGIT_CHECKOUT_DRY_RUN is a dry-run strategy that checks for conflicts, etc., but doesn't make any actual changes.
GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates even if there are conflicts (instead of cancelling the checkout).
GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not in target, baseline, or index, and not ignored) from the working dir.
GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also untracked) from the working directory as well.
GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that already exist. Files will not be created nor deleted. This just skips applying adds, deletes, and typechanges.
GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the updated files' information to the index.
Normally, checkout will reload the index and git attributes from disk before any operations. GIT_CHECKOUT_NO_REFRESH prevents this reload.
Unmerged index entries are conflicts. GIT_CHECKOUT_SKIP_UNMERGED skips files with unmerged index entries instead. GIT_CHECKOUT_USE_OURS and GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the stage 2 ("ours") or stage 3 ("theirs") version of files in the index.
GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being overwritten. Normally, files that are ignored in the working directory are not considered "precious" and may be overwritten if the checkout target contains that file.
GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing files or folders that fold to the same name on case insensitive filesystems. This can cause files to retain their existing names and write through existing symbolic links.
Allow safe updates that cannot overwrite uncommitted data.\n If the uncommitted changes don't conflict with the checked\n out files, the checkout will still proceed, leaving the\n changes intact.
\n", + "value": 0 }, { "type": "int", - "name": "GIT_BRANCH_REMOTE", - "comments": "", + "name": "GIT_CHECKOUT_FORCE", + "comments": "Allow all updates to force working directory to look like\n the index, potentially losing data in the process.
\n", "value": 2 }, { "type": "int", - "name": "GIT_BRANCH_ALL", - "comments": "", - "value": 3 - } - ], - "used": { - "returns": [], - "needs": [ - "git_branch_iterator_new", - "git_branch_lookup", - "git_branch_next" - ] - } - } - ], - [ - "git_buf", - { - "decl": [ - "char * ptr", - "size_t asize", - "size_t size" - ], - "type": "struct", - "value": "git_buf", - "file": "buffer.h", - "line": 52, - "lineto": 55, - "block": "char * ptr\nsize_t asize\nsize_t size", - "tdef": "typedef", - "description": " A data buffer for exporting data from libgit2", - "comments": "Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using. In those cases, libgit2 will fill in a git_buf and the caller can use git_buf_free() to release it when they are done.
A git_buf may also be used for the caller to pass in a reference to a block of memory they hold. In this case, libgit2 will not resize or free the memory, but will read from it as needed.
A git_buf is a public structure with three fields:
ptr points to the start of the allocated memory. If it is NULL, then the git_buf is considered empty and libgit2 will feel free to overwrite it with new data.
size holds the size (in bytes) of the data that is actually used.
asize holds the known total amount of allocated memory if the ptr was allocated by libgit2. It may be larger than size. If ptr was not allocated by libgit2 and should not be resized and/or freed, then asize will be set to zero.
Some APIs may occasionally do something slightly unusual with a buffer, such as setting ptr to a value that was passed in by the user. In those cases, the behavior will be clearly documented by the API.
Allow checkout to recreate missing files
\n", + "value": 4 + }, { - "type": "char *", - "name": "ptr", - "comments": "" + "type": "int", + "name": "GIT_CHECKOUT_ALLOW_CONFLICTS", + "comments": "Allow checkout to make safe updates even if conflicts are found
\n", + "value": 16 }, { - "type": "size_t", - "name": "asize", - "comments": "" + "type": "int", + "name": "GIT_CHECKOUT_REMOVE_UNTRACKED", + "comments": "Remove untracked files not in index (that are not ignored)
\n", + "value": 32 }, { - "type": "size_t", - "name": "size", - "comments": "" - } - ], - "used": { - "returns": [], - "needs": [ - "git_blob_filtered_content", - "git_buf_contains_nul", - "git_buf_free", - "git_buf_grow", - "git_buf_is_binary", - "git_buf_set", - "git_commit_create_buffer", - "git_commit_extract_signature", - "git_commit_header_field", - "git_config_find_global", - "git_config_find_programdata", - "git_config_find_system", - "git_config_find_xdg", - "git_config_get_path", - "git_config_get_string_buf", - "git_config_parse_path", - "git_describe_format", - "git_diff_commit_as_email", - "git_diff_format_email", - "git_diff_stats_to_buf", - "git_filter_apply_fn", - "git_filter_list_apply_to_blob", - "git_filter_list_apply_to_data", - "git_filter_list_apply_to_file", - "git_filter_list_stream_data", - "git_message_prettify", - "git_object_short_id", - "git_patch_to_buf", - "git_refspec_rtransform", - "git_refspec_transform", - "git_remote_default_branch", - "git_repository_discover", - "git_repository_message", - "git_submodule_resolve_url" - ] - } - } - ], - [ - "git_cert", - { - "decl": [ - "git_cert_t cert_type" - ], - "type": "struct", - "value": "git_cert", - "file": "types.h", - "line": 314, - "lineto": 319, - "block": "git_cert_t cert_type", - "tdef": "typedef", - "description": " Parent type for `git_cert_hostkey` and `git_cert_x509`.", - "comments": "", - "fields": [ + "type": "int", + "name": "GIT_CHECKOUT_REMOVE_IGNORED", + "comments": "Remove ignored files not in index
\n", + "value": 64 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_UPDATE_ONLY", + "comments": "Only update existing files, don't create new ones
\n", + "value": 128 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_DONT_UPDATE_INDEX", + "comments": "Normally checkout updates index entries as it goes; this stops that.\n Implies GIT_CHECKOUT_DONT_WRITE_INDEX.
Don't refresh index/config/etc before doing checkout
\n", + "value": 512 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_SKIP_UNMERGED", + "comments": "Allow checkout to skip unmerged files
\n", + "value": 1024 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_USE_OURS", + "comments": "For unmerged files, checkout stage 2 from index
\n", + "value": 2048 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_USE_THEIRS", + "comments": "For unmerged files, checkout stage 3 from index
\n", + "value": 4096 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH", + "comments": "Treat pathspec as simple list of exact match file paths
\n", + "value": 8192 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES", + "comments": "Ignore directories in use, they will be left empty
\n", + "value": 262144 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_DONT_OVERWRITE_IGNORED", + "comments": "Don't overwrite ignored files that exist in the checkout target
\n", + "value": 524288 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_CONFLICT_STYLE_MERGE", + "comments": "Write normal merge files for conflicts
\n", + "value": 1048576 + }, { - "type": "git_cert_t", - "name": "cert_type", - "comments": " Type of certificate. A `GIT_CERT_` value." + "type": "int", + "name": "GIT_CHECKOUT_CONFLICT_STYLE_DIFF3", + "comments": "Include common ancestor data in diff3 format files for conflicts
\n", + "value": 2097152 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_DONT_REMOVE_EXISTING", + "comments": "Don't overwrite existing files or folders
\n", + "value": 4194304 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_DONT_WRITE_INDEX", + "comments": "Normally checkout writes the index upon completion; this prevents that.
\n", + "value": 8388608 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_DRY_RUN", + "comments": "Perform a "dry run", reporting what would be done but\n without actually making changes in the working directory\n or the index.
\n", + "value": 16777216 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_CONFLICT_STYLE_ZDIFF3", + "comments": "Include common ancestor data in zdiff3 format for conflicts
\n", + "value": 33554432 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_NONE", + "comments": "Do not do a checkout and do not fire callbacks; this is primarily\n useful only for internal functions that will perform the\n checkout themselves but need to pass checkout options into\n another function, for example, git_clone.
Recursively checkout submodules with same options (NOT IMPLEMENTED)
\n", + "value": 65536 + }, + { + "type": "int", + "name": "GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED", + "comments": "Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED)
\n", + "value": 131072 } ], - "used": { - "returns": [], - "needs": [ - "git_transport_certificate_check_cb", - "git_transport_smart_certificate_check" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_cert_hostkey", + "git_cherrypick_options", { "decl": [ - "git_cert parent", - "git_cert_ssh_t type", - "unsigned char [16] hash_md5", - "unsigned char [20] hash_sha1" + "unsigned int version", + "unsigned int mainline", + "git_merge_options merge_opts", + "git_checkout_options checkout_opts" ], "type": "struct", - "value": "git_cert_hostkey", - "file": "transport.h", - "line": 39, - "lineto": 59, - "block": "git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1", + "value": "git_cherrypick_options", + "file": "git2/cherrypick.h", + "line": 29, + "lineto": 37, + "block": "unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts", "tdef": "typedef", - "description": " Hostkey information taken from libssh2", + "description": " Cherry-pick options", "comments": "", "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, { - "type": "git_cert", - "name": "parent", - "comments": "" - }, - { - "type": "git_cert_ssh_t", - "name": "type", - "comments": " A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`" + "type": "unsigned int", + "name": "mainline", + "comments": " For merge commits, the \"mainline\" is treated as the parent. " }, { - "type": "unsigned char [16]", - "name": "hash_md5", - "comments": " Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey." + "type": "git_merge_options", + "name": "merge_opts", + "comments": " Options for the merging " }, { - "type": "unsigned char [20]", - "name": "hash_sha1", - "comments": " Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey." + "type": "git_checkout_options", + "name": "checkout_opts", + "comments": " Options for the checkout " } ], "used": { "returns": [], - "needs": [] + "needs": ["git_cherrypick", "git_cherrypick_options_init"] } } ], [ - "git_cert_ssh_t", + "git_clone_local_t", { "decl": [ - "GIT_CERT_SSH_MD5", - "GIT_CERT_SSH_SHA1" + "GIT_CLONE_LOCAL_AUTO", + "GIT_CLONE_LOCAL", + "GIT_CLONE_NO_LOCAL", + "GIT_CLONE_LOCAL_NO_LINKS" ], "type": "enum", - "file": "transport.h", - "line": 29, - "lineto": 34, - "block": "GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1", + "file": "git2/clone.h", + "line": 37, + "lineto": 57, + "block": "GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS", "tdef": "typedef", - "description": " Type of SSH host fingerprint", + "description": " Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.", "comments": "", "fields": [ { "type": "int", - "name": "GIT_CERT_SSH_MD5", - "comments": "MD5 is available
\n", + "name": "GIT_CLONE_LOCAL_AUTO", + "comments": "Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n file:// urls.
Bypass the git-aware transport even for a file:// url.
SHA-1 is available
\n", + "name": "GIT_CLONE_NO_LOCAL", + "comments": "Do no bypass the git-aware transport
\n", "value": 2 + }, + { + "type": "int", + "name": "GIT_CLONE_LOCAL_NO_LINKS", + "comments": "Bypass the git-aware transport, but do not try to use\n hardlinks.
\n", + "value": 3 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_cert_t", + "git_clone_options", { "decl": [ - "GIT_CERT_NONE", - "GIT_CERT_X509", - "GIT_CERT_HOSTKEY_LIBSSH2", - "GIT_CERT_STRARRAY" + "unsigned int version", + "git_checkout_options checkout_opts", + "git_fetch_options fetch_opts", + "int bare", + "git_clone_local_t local", + "const char * checkout_branch", + "git_repository_create_cb repository_cb", + "void * repository_cb_payload", + "git_remote_create_cb remote_cb", + "void * remote_cb_payload" ], - "type": "enum", - "file": "types.h", - "line": 286, - "lineto": 309, - "block": "GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY", + "type": "struct", + "value": "git_clone_options", + "file": "git2/clone.h", + "line": 110, + "lineto": 171, + "block": "unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload", "tdef": "typedef", - "description": " Type of host certificate structure that is passed to the check callback", - "comments": "", + "description": " Clone options structure", + "comments": "Initialize with GIT_CLONE_OPTIONS_INIT. Alternatively, you can use git_clone_options_init.
[version] GIT_CLONE_OPTIONS_VERSION [init_macro] GIT_CLONE_OPTIONS_INIT [init_function] git_clone_options_init
\n", "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, { - "type": "int", - "name": "GIT_CERT_NONE", - "comments": "No information about the certificate is available. This may\n happen when using curl.
\n", - "value": 0 + "type": "git_checkout_options", + "name": "checkout_opts", + "comments": " These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to `GIT_CHECKOUT_NONE`\n or `GIT_CHECKOUT_DRY_RUN`." }, { - "type": "int", - "name": "GIT_CERT_X509", - "comments": "The data argument to the callback will be a pointer to\n the DER-encoded data.
The data argument to the callback will be a pointer to a\n git_cert_hostkey structure.
The data argument to the callback will be a pointer to a\n git_strarray with name:content strings containing\n information about the certificate. This is used when using\n curl.
Do not split commit-graph files. The other split strategy-related option\n fields are ignored.
\n", + "value": 0 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_cert_x509", + "git_commit_graph_writer", { - "decl": [ - "git_cert parent", - "void * data", - "size_t len" - ], + "decl": "git_commit_graph_writer", "type": "struct", - "value": "git_cert_x509", - "file": "transport.h", - "line": 64, - "lineto": 74, - "block": "git_cert parent\nvoid * data\nsize_t len", + "value": "git_commit_graph_writer", + "file": "git2/types.h", + "line": 117, + "lineto": 117, "tdef": "typedef", - "description": " X.509 certificate information", + "description": " a writer for commit-graph files. ", + "comments": "", + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_commitarray", + { + "decl": ["git_commit *const * commits", "size_t count"], + "type": "struct", + "value": "git_commitarray", + "file": "git2/commit.h", + "line": 655, + "lineto": 658, + "block": "git_commit *const * commits\nsize_t count", + "tdef": "typedef", + "description": " An array of commits returned from the library ", "comments": "", "fields": [ - { - "type": "git_cert", - "name": "parent", - "comments": "" - }, - { - "type": "void *", - "name": "data", - "comments": " Pointer to the X.509 certificate data" - }, - { - "type": "size_t", - "name": "len", - "comments": " Length of the memory block pointed to by `data`." - } + { "type": "git_commit *const *", "name": "commits", "comments": "" }, + { "type": "size_t", "name": "count", "comments": "" } ], "used": { "returns": [], - "needs": [] + "needs": ["git_commitarray_dispose", "git_repository_commit_parents"] } } ], [ - "git_checkout_notify_t", + "git_config", { - "decl": [ - "GIT_CHECKOUT_NOTIFY_NONE", - "GIT_CHECKOUT_NOTIFY_CONFLICT", - "GIT_CHECKOUT_NOTIFY_DIRTY", - "GIT_CHECKOUT_NOTIFY_UPDATED", - "GIT_CHECKOUT_NOTIFY_UNTRACKED", - "GIT_CHECKOUT_NOTIFY_IGNORED", - "GIT_CHECKOUT_NOTIFY_ALL" - ], - "type": "enum", - "file": "checkout.h", - "line": 205, - "lineto": 214, - "block": "GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL", + "decl": "git_config", + "type": "struct", + "value": "git_config", + "file": "git2/types.h", + "line": 162, + "lineto": 162, "tdef": "typedef", - "description": " Checkout notification flags", - "comments": "Checkout will invoke an options notification callback (notify_cb) for certain cases - you pick which ones via notify_flags:
GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.
GIT_CHECKOUT_NOTIFY_DIRTY notifies about "dirty" files, i.e. those that do not need an update but no longer match the baseline. Core git displays these files when checkout runs, but won't stop the checkout.
GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.
GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.
GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.
Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.
\n\nNotification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.
\n", - "fields": [ - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_NONE", - "comments": "", - "value": 0 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_CONFLICT", - "comments": "", - "value": 1 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_DIRTY", - "comments": "", - "value": 2 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_UPDATED", - "comments": "", - "value": 4 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_UNTRACKED", - "comments": "", - "value": 8 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_IGNORED", - "comments": "", - "value": 16 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_NOTIFY_ALL", - "comments": "", - "value": 65535 - } - ], + "description": " Memory representation of a set of config files ", + "comments": "", "used": { "returns": [], "needs": [ - "git_checkout_notify_cb" + "git_config_add_file_ondisk", + "git_config_backend_foreach_match", + "git_config_delete_entry", + "git_config_delete_multivar", + "git_config_entry_free", + "git_config_foreach", + "git_config_foreach_cb", + "git_config_foreach_match", + "git_config_free", + "git_config_get_bool", + "git_config_get_entry", + "git_config_get_int32", + "git_config_get_int64", + "git_config_get_mapped", + "git_config_get_multivar_foreach", + "git_config_get_path", + "git_config_get_string", + "git_config_get_string_buf", + "git_config_iterator_free", + "git_config_iterator_glob_new", + "git_config_iterator_new", + "git_config_lock", + "git_config_lookup_map_value", + "git_config_multivar_iterator_new", + "git_config_new", + "git_config_next", + "git_config_open_default", + "git_config_open_global", + "git_config_open_level", + "git_config_open_ondisk", + "git_config_set_bool", + "git_config_set_int32", + "git_config_set_int64", + "git_config_set_multivar", + "git_config_set_string", + "git_config_set_writeorder", + "git_config_snapshot", + "git_repository_config", + "git_repository_config_snapshot" ] } } ], [ - "git_checkout_options", + "git_config_backend", + { + "decl": "git_config_backend", + "type": "struct", + "value": "git_config_backend", + "file": "git2/types.h", + "line": 165, + "lineto": 165, + "tdef": "typedef", + "description": " Interface to access a configuration file ", + "comments": "", + "used": { "returns": [], "needs": ["git_config_backend_foreach_match"] } + } + ], + [ + "git_config_backend_memory_options", { "decl": [ "unsigned int version", - "unsigned int checkout_strategy", - "int disable_filters", - "unsigned int dir_mode", - "unsigned int file_mode", - "int file_open_flags", - "unsigned int notify_flags", - "git_checkout_notify_cb notify_cb", - "void * notify_payload", - "git_checkout_progress_cb progress_cb", - "void * progress_payload", - "git_strarray paths", - "git_tree * baseline", - "git_index * baseline_index", - "const char * target_directory", - "const char * ancestor_label", - "const char * our_label", - "const char * their_label", - "git_checkout_perfdata_cb perfdata_cb", - "void * perfdata_payload" + "const char * backend_type", + "const char * origin_path" ], "type": "struct", - "value": "git_checkout_options", - "file": "checkout.h", - "line": 251, - "lineto": 295, - "block": "unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload", + "value": "git_config_backend_memory_options", + "file": "git2/sys/config.h", + "line": 148, + "lineto": 162, + "block": "unsigned int version\nconst char * backend_type\nconst char * origin_path", "tdef": "typedef", - "description": " Checkout options structure", - "comments": "Zero out for defaults. Initialize with GIT_CHECKOUT_OPTIONS_INIT macro to correctly set the version field. E.g.
git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n\n",
+ "description": " Options for in-memory configuration backends. ",
+ "comments": "",
"fields": [
+ { "type": "unsigned int", "name": "version", "comments": "" },
{
- "type": "unsigned int",
- "name": "version",
- "comments": ""
- },
- {
- "type": "unsigned int",
- "name": "checkout_strategy",
- "comments": " default will be a dry run "
- },
- {
- "type": "int",
- "name": "disable_filters",
- "comments": " don't apply filters like CRLF conversion "
- },
- {
- "type": "unsigned int",
- "name": "dir_mode",
- "comments": " default is 0755 "
- },
- {
- "type": "unsigned int",
- "name": "file_mode",
- "comments": " default is 0644 or 0755 as dictated by blob "
- },
- {
- "type": "int",
- "name": "file_open_flags",
- "comments": " default is O_CREAT | O_TRUNC | O_WRONLY "
- },
- {
- "type": "unsigned int",
- "name": "notify_flags",
- "comments": " see `git_checkout_notify_t` above "
- },
- {
- "type": "git_checkout_notify_cb",
- "name": "notify_cb",
- "comments": ""
- },
- {
- "type": "void *",
- "name": "notify_payload",
- "comments": ""
- },
- {
- "type": "git_checkout_progress_cb",
- "name": "progress_cb",
- "comments": " Optional callback to notify the consumer of checkout progress. "
- },
- {
- "type": "void *",
- "name": "progress_payload",
- "comments": ""
- },
- {
- "type": "git_strarray",
- "name": "paths",
- "comments": " When not zeroed out, array of fnmatch patterns specifying which\n paths should be taken into account, otherwise all files. Use\n GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."
- },
- {
- "type": "git_tree *",
- "name": "baseline",
- "comments": " The expected content of the working directory; defaults to HEAD.\n If the working directory does not match this baseline information,\n that will produce a checkout conflict."
+ "type": "const char *",
+ "name": "backend_type",
+ "comments": " The type of this backend (eg, \"command line\"). If this is\n NULL, then this will be \"in-memory\"."
},
{
- "type": "git_index *",
- "name": "baseline_index",
- "comments": " expected content of workdir, expressed as an index. "
- },
+ "type": "const char *",
+ "name": "origin_path",
+ "comments": " The path to the origin; if this is NULL then it will be\n left unset in the resulting configuration entries."
+ }
+ ],
+ "used": { "returns": [], "needs": [] }
+ }
+ ],
+ [
+ "git_config_entry",
+ {
+ "decl": [
+ "const char * name",
+ "const char * value",
+ "const char * backend_type",
+ "const char * origin_path",
+ "unsigned int include_depth",
+ "git_config_level_t level"
+ ],
+ "type": "struct",
+ "value": "git_config_entry",
+ "file": "git2/config.h",
+ "line": 103,
+ "lineto": 124,
+ "block": "const char * name\nconst char * value\nconst char * backend_type\nconst char * origin_path\nunsigned int include_depth\ngit_config_level_t level",
+ "tdef": "typedef",
+ "description": " An entry in a configuration file",
+ "comments": "",
+ "fields": [
{
"type": "const char *",
- "name": "target_directory",
- "comments": " alternative checkout path to workdir "
+ "name": "name",
+ "comments": " Name of the configuration entry (normalized). "
},
{
"type": "const char *",
- "name": "ancestor_label",
- "comments": " the name of the common ancestor side of conflicts "
+ "name": "value",
+ "comments": " Literal (string) value of the entry. "
},
{
"type": "const char *",
- "name": "our_label",
- "comments": " the name of the \"our\" side of conflicts "
+ "name": "backend_type",
+ "comments": " The type of backend that this entry exists in (eg, \"file\"). "
},
{
"type": "const char *",
- "name": "their_label",
- "comments": " the name of the \"their\" side of conflicts "
+ "name": "origin_path",
+ "comments": " The path to the origin of this entry. For config files, this is\n the path to the file."
},
{
- "type": "git_checkout_perfdata_cb",
- "name": "perfdata_cb",
- "comments": " Optional callback to notify the consumer of performance data. "
+ "type": "unsigned int",
+ "name": "include_depth",
+ "comments": " Depth of includes where this variable was found. "
},
{
- "type": "void *",
- "name": "perfdata_payload",
- "comments": ""
+ "type": "git_config_level_t",
+ "name": "level",
+ "comments": " Configuration level for the file this was found in. "
}
],
"used": {
"returns": [],
"needs": [
- "git_checkout_head",
- "git_checkout_index",
- "git_checkout_init_options",
- "git_checkout_tree",
- "git_merge",
- "git_reset",
- "git_reset_from_annotated"
+ "git_config_entry_free",
+ "git_config_foreach_cb",
+ "git_config_get_entry",
+ "git_config_next"
]
}
}
],
[
- "git_checkout_strategy_t",
+ "git_config_iterator",
+ {
+ "decl": "git_config_iterator",
+ "type": "struct",
+ "value": "git_config_iterator",
+ "file": "git2/config.h",
+ "line": 145,
+ "lineto": 145,
+ "tdef": "typedef",
+ "description": " An opaque structure for a configuration iterator.",
+ "comments": "",
+ "used": {
+ "returns": [],
+ "needs": [
+ "git_config_iterator_free",
+ "git_config_iterator_glob_new",
+ "git_config_iterator_new",
+ "git_config_multivar_iterator_new",
+ "git_config_next"
+ ]
+ }
+ }
+ ],
+ [
+ "git_config_level_t",
{
"decl": [
- "GIT_CHECKOUT_NONE",
- "GIT_CHECKOUT_SAFE",
- "GIT_CHECKOUT_FORCE",
- "GIT_CHECKOUT_RECREATE_MISSING",
- "GIT_CHECKOUT_ALLOW_CONFLICTS",
- "GIT_CHECKOUT_REMOVE_UNTRACKED",
- "GIT_CHECKOUT_REMOVE_IGNORED",
- "GIT_CHECKOUT_UPDATE_ONLY",
- "GIT_CHECKOUT_DONT_UPDATE_INDEX",
- "GIT_CHECKOUT_NO_REFRESH",
- "GIT_CHECKOUT_SKIP_UNMERGED",
- "GIT_CHECKOUT_USE_OURS",
- "GIT_CHECKOUT_USE_THEIRS",
- "GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH",
- "GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES",
- "GIT_CHECKOUT_DONT_OVERWRITE_IGNORED",
- "GIT_CHECKOUT_CONFLICT_STYLE_MERGE",
- "GIT_CHECKOUT_CONFLICT_STYLE_DIFF3",
- "GIT_CHECKOUT_DONT_REMOVE_EXISTING",
- "GIT_CHECKOUT_DONT_WRITE_INDEX",
- "GIT_CHECKOUT_UPDATE_SUBMODULES",
- "GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"
+ "GIT_CONFIG_LEVEL_PROGRAMDATA",
+ "GIT_CONFIG_LEVEL_SYSTEM",
+ "GIT_CONFIG_LEVEL_XDG",
+ "GIT_CONFIG_LEVEL_GLOBAL",
+ "GIT_CONFIG_LEVEL_LOCAL",
+ "GIT_CONFIG_LEVEL_WORKTREE",
+ "GIT_CONFIG_LEVEL_APP",
+ "GIT_CONFIG_HIGHEST_LEVEL"
],
"type": "enum",
- "file": "checkout.h",
- "line": 106,
- "lineto": 177,
- "block": "GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED",
+ "file": "git2/config.h",
+ "line": 49,
+ "lineto": 98,
+ "block": "GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_WORKTREE\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL",
"tdef": "typedef",
- "description": " Checkout behavior flags",
- "comments": "In libgit2, checkout is used to update the working directory and index to match a target tree. Unlike git checkout, it does not move the HEAD commit for you - use git_repository_set_head or the like to do that.
Checkout looks at (up to) four things: the "target" tree you want to check out, the "baseline" tree of what was checked out previously, the working directory for actual files, and the index for staged changes.
\n\nYou give checkout one of three strategies for update:
\n\nGIT_CHECKOUT_NONE is a dry-run strategy that checks for conflicts, etc., but doesn't make any actual changes.
GIT_CHECKOUT_FORCE is at the opposite extreme, taking any action to make the working directory match the target (including potentially discarding modified files).
GIT_CHECKOUT_SAFE is between these two options, it will only make modifications that will not lose changes.
| target == baseline | target != baseline | ---------------------|-----------------------|----------------------| workdir == baseline | no action | create, update, or | | | delete file | ---------------------|-----------------------|----------------------| workdir exists and | no action | conflict (notify | is != baseline | notify dirty MODIFIED | and cancel checkout) | ---------------------|-----------------------|----------------------| workdir missing, | notify dirty DELETED | create file | baseline present | | | ---------------------|-----------------------|----------------------|\nTo emulate git checkout, use GIT_CHECKOUT_SAFE with a checkout notification callback (see below) that displays information about dirty files. The default behavior will cancel checkout on conflicts.
To emulate git checkout-index, use GIT_CHECKOUT_SAFE with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory. This core git command isn't quite "force" but is sensitive about some types of changes.
To emulate git checkout -f, use GIT_CHECKOUT_FORCE.
There are some additional flags to modified the behavior of checkout:
\n\nGIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates even if there are conflicts (instead of cancelling the checkout).
GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not in target, baseline, or index, and not ignored) from the working dir.
GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also untracked) from the working directory as well.
GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that already exist. Files will not be created nor deleted. This just skips applying adds, deletes, and typechanges.
GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the updated files' information to the index.
Normally, checkout will reload the index and git attributes from disk before any operations. GIT_CHECKOUT_NO_REFRESH prevents this reload.
Unmerged index entries are conflicts. GIT_CHECKOUT_SKIP_UNMERGED skips files with unmerged index entries instead. GIT_CHECKOUT_USE_OURS and GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the stage 2 ("ours") or stage 3 ("theirs") version of files in the index.
GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being overwritten. Normally, files that are ignored in the working directory are not considered "precious" and may be overwritten if the checkout target contains that file.
GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing files or folders that fold to the same name on case insensitive filesystems. This can cause files to retain their existing names and write through existing symbolic links.
These priority levels correspond to the natural escalation logic (from higher to lower) when reading or searching for config entries in git.git. Meaning that for the same key, the configuration in the local configuration is preferred over the configuration in the system configuration file.
\n\nCallers can add their own custom configuration, beginning at the GIT_CONFIG_LEVEL_APP level.
Writes, by default, occur in the highest priority level backend that is writable. This ordering can be overridden with git_config_set_writeorder.
git_config_open_default() and git_repository_config() honor those priority levels as well.
\n", "fields": [ { "type": "int", - "name": "GIT_CHECKOUT_NONE", - "comments": "default is a dry run, no actual updates
\n", - "value": 0 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_SAFE", - "comments": "Allow safe updates that cannot overwrite uncommitted data
\n", + "name": "GIT_CONFIG_LEVEL_PROGRAMDATA", + "comments": "System-wide on Windows, for compatibility with "Portable Git".
\n", "value": 1 }, { "type": "int", - "name": "GIT_CHECKOUT_FORCE", - "comments": "Allow all updates to force working directory to look like index
\n", + "name": "GIT_CONFIG_LEVEL_SYSTEM", + "comments": "System-wide configuration file; /etc/gitconfig on Linux.
Allow checkout to recreate missing files
\n", - "value": 4 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_ALLOW_CONFLICTS", - "comments": "Allow checkout to make safe updates even if conflicts are found
\n", - "value": 16 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_REMOVE_UNTRACKED", - "comments": "Remove untracked files not in index (that are not ignored)
\n", - "value": 32 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_REMOVE_IGNORED", - "comments": "Remove ignored files not in index
\n", - "value": 64 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_UPDATE_ONLY", - "comments": "Only update existing files, don't create new ones
\n", - "value": 128 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_DONT_UPDATE_INDEX", - "comments": "Normally checkout updates index entries as it goes; this stops that.\n Implies GIT_CHECKOUT_DONT_WRITE_INDEX.
Don't refresh index/config/etc before doing checkout
\n", - "value": 512 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_SKIP_UNMERGED", - "comments": "Allow checkout to skip unmerged files
\n", - "value": 1024 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_USE_OURS", - "comments": "For unmerged files, checkout stage 2 from index
\n", - "value": 2048 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_USE_THEIRS", - "comments": "For unmerged files, checkout stage 3 from index
\n", - "value": 4096 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH", - "comments": "Treat pathspec as simple list of exact match file paths
\n", - "value": 8192 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES", - "comments": "Ignore directories in use, they will be left empty
\n", - "value": 262144 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_DONT_OVERWRITE_IGNORED", - "comments": "Don't overwrite ignored files that exist in the checkout target
\n", - "value": 524288 - }, - { - "type": "int", - "name": "GIT_CHECKOUT_CONFLICT_STYLE_MERGE", - "comments": "Write normal merge files for conflicts
\n", - "value": 1048576 + "name": "GIT_CONFIG_LEVEL_XDG", + "comments": "XDG compatible configuration file; typically\n ~/.config/git/config.
Include common ancestor data in diff3 format files for conflicts
\n", - "value": 2097152 + "name": "GIT_CONFIG_LEVEL_GLOBAL", + "comments": "Global configuration file is the user-specific configuration;\n typically ~/.gitconfig.
Don't overwrite existing files or folders
\n", - "value": 4194304 + "name": "GIT_CONFIG_LEVEL_LOCAL", + "comments": "Local configuration, the repository-specific configuration file;\n typically $GIT_DIR/config.
Normally checkout writes the index upon completion; this prevents that.
\n", - "value": 8388608 + "name": "GIT_CONFIG_LEVEL_WORKTREE", + "comments": "Worktree-specific configuration; typically\n $GIT_DIR/config.worktree.
Recursively checkout submodules with same options (NOT IMPLEMENTED)
\n", - "value": 65536 + "name": "GIT_CONFIG_LEVEL_APP", + "comments": "Application-specific configuration file. Callers into libgit2\n can add their own configuration beginning at this level.
\n", + "value": 7 }, { "type": "int", - "name": "GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED", - "comments": "Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED)
\n", - "value": 131072 + "name": "GIT_CONFIG_HIGHEST_LEVEL", + "comments": "Not a configuration level; callers can use this value when\n querying configuration levels to specify that they want to\n have data from the highest-level currently configuration.\n This can be used to indicate that callers want the most\n specific config file available that actually is loaded.
\n", + "value": -1 } ], "used": { "returns": [], - "needs": [] + "needs": [ + "git_config_add_file_ondisk", + "git_config_open_level", + "git_config_set_writeorder" + ] } } - ], - [ - "git_cherrypick_options", - { - "decl": [ - "unsigned int version", - "unsigned int mainline", - "git_merge_options merge_opts", - "git_checkout_options checkout_opts" - ], - "type": "struct", - "value": "git_cherrypick_options", - "file": "cherrypick.h", - "line": 26, - "lineto": 34, - "block": "unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts", - "tdef": "typedef", - "description": " Cherry-pick options", - "comments": "", - "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" - }, - { - "type": "unsigned int", - "name": "mainline", - "comments": " For merge commits, the \"mainline\" is treated as the parent. " - }, - { - "type": "git_merge_options", - "name": "merge_opts", - "comments": " Options for the merging " - }, - { - "type": "git_checkout_options", - "name": "checkout_opts", - "comments": " Options for the checkout " - } + ], + [ + "git_configmap", + { + "decl": [ + "git_configmap_t type", + "const char * str_match", + "int map_value" + ], + "type": "struct", + "value": "git_configmap", + "file": "git2/config.h", + "line": 160, + "lineto": 164, + "block": "git_configmap_t type\nconst char * str_match\nint map_value", + "tdef": "typedef", + "description": " Mapping from config variables to values.", + "comments": "", + "fields": [ + { "type": "git_configmap_t", "name": "type", "comments": "" }, + { "type": "const char *", "name": "str_match", "comments": "" }, + { "type": "int", "name": "map_value", "comments": "" } ], "used": { "returns": [], - "needs": [ - "git_cherrypick", - "git_cherrypick_init_options" - ] + "needs": ["git_config_get_mapped", "git_config_lookup_map_value"] } } ], [ - "git_clone_local_t", + "git_configmap_t", { "decl": [ - "GIT_CLONE_LOCAL_AUTO", - "GIT_CLONE_LOCAL", - "GIT_CLONE_NO_LOCAL", - "GIT_CLONE_LOCAL_NO_LINKS" + "GIT_CONFIGMAP_FALSE", + "GIT_CONFIGMAP_TRUE", + "GIT_CONFIGMAP_INT32", + "GIT_CONFIGMAP_STRING" ], "type": "enum", - "file": "clone.h", - "line": 33, - "lineto": 53, - "block": "GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS", + "file": "git2/config.h", + "line": 150, + "lineto": 155, + "block": "GIT_CONFIGMAP_FALSE\nGIT_CONFIGMAP_TRUE\nGIT_CONFIGMAP_INT32\nGIT_CONFIGMAP_STRING", "tdef": "typedef", - "description": " Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.", + "description": " Config var type", "comments": "", "fields": [ { "type": "int", - "name": "GIT_CLONE_LOCAL_AUTO", - "comments": "Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n file:// urls.
Bypass the git-aware transport even for a file:// url.
Do no bypass the git-aware transport
\n", + "name": "GIT_CONFIGMAP_INT32", + "comments": "", "value": 2 }, { "type": "int", - "name": "GIT_CLONE_LOCAL_NO_LINKS", - "comments": "Bypass the git-aware transport, but do not try to use\n hardlinks.
\n", + "name": "GIT_CONFIGMAP_STRING", + "comments": "", "value": 3 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_clone_options", + "git_credential", { - "decl": [ - "unsigned int version", - "git_checkout_options checkout_opts", - "git_fetch_options fetch_opts", - "int bare", - "git_clone_local_t local", - "const char * checkout_branch", - "git_repository_create_cb repository_cb", - "void * repository_cb_payload", - "git_remote_create_cb remote_cb", - "void * remote_cb_payload" - ], + "decl": "git_credential", "type": "struct", - "value": "git_clone_options", - "file": "clone.h", - "line": 103, - "lineto": 164, - "block": "unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload", + "value": "git_credential", + "file": "git2/credential.h", + "line": 87, + "lineto": 87, "tdef": "typedef", - "description": " Clone options structure", - "comments": "Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:
\n\n git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n\n",
- "fields": [
- {
- "type": "unsigned int",
- "name": "version",
- "comments": ""
- },
- {
- "type": "git_checkout_options",
- "name": "checkout_opts",
- "comments": " These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."
- },
- {
- "type": "git_fetch_options",
- "name": "fetch_opts",
- "comments": " Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."
- },
- {
- "type": "int",
- "name": "bare",
- "comments": " Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"
- },
- {
- "type": "git_clone_local_t",
- "name": "local",
- "comments": " Whether to use a fetch or copy the object database."
- },
- {
- "type": "const char *",
- "name": "checkout_branch",
- "comments": " The name of the branch to checkout. NULL means use the\n remote's default branch."
- },
- {
- "type": "git_repository_create_cb",
- "name": "repository_cb",
- "comments": " A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."
- },
- {
- "type": "void *",
- "name": "repository_cb_payload",
- "comments": " An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."
- },
- {
- "type": "git_remote_create_cb",
- "name": "remote_cb",
- "comments": " A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."
- },
- {
- "type": "void *",
- "name": "remote_cb_payload",
- "comments": " An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."
- }
- ],
+ "description": " The base structure for all credential types",
+ "comments": "",
"used": {
"returns": [],
"needs": [
- "git_clone",
- "git_clone_init_options"
+ "git_credential_acquire_cb",
+ "git_credential_default_new",
+ "git_credential_free",
+ "git_credential_get_username",
+ "git_credential_has_username",
+ "git_credential_ssh_custom_new",
+ "git_credential_ssh_interactive_new",
+ "git_credential_ssh_key_from_agent",
+ "git_credential_ssh_key_memory_new",
+ "git_credential_ssh_key_new",
+ "git_credential_username_new",
+ "git_credential_userpass",
+ "git_credential_userpass_plaintext_new"
]
}
}
],
[
- "git_commit",
+ "git_credential_default",
{
- "decl": "git_commit",
+ "decl": "git_credential_default",
"type": "struct",
- "value": "git_commit",
- "file": "types.h",
- "line": 120,
- "lineto": 120,
+ "value": "git_credential_default",
+ "file": "git2/credential.h",
+ "line": 95,
+ "lineto": 95,
"tdef": "typedef",
- "description": " Parsed representation of a commit object. ",
+ "description": " A key for NTLM/Kerberos \"default\" credentials ",
"comments": "",
- "used": {
- "returns": [],
- "needs": [
- "git_branch_create",
- "git_cherrypick",
- "git_cherrypick_commit",
- "git_commit_amend",
- "git_commit_author",
- "git_commit_body",
- "git_commit_committer",
- "git_commit_create",
- "git_commit_create_buffer",
- "git_commit_create_from_callback",
- "git_commit_dup",
- "git_commit_free",
- "git_commit_header_field",
- "git_commit_id",
- "git_commit_lookup",
- "git_commit_lookup_prefix",
- "git_commit_message",
- "git_commit_message_encoding",
- "git_commit_message_raw",
- "git_commit_nth_gen_ancestor",
- "git_commit_owner",
- "git_commit_parent",
- "git_commit_parent_id",
- "git_commit_parentcount",
- "git_commit_raw_header",
- "git_commit_summary",
- "git_commit_time",
- "git_commit_time_offset",
- "git_commit_tree",
- "git_commit_tree_id",
- "git_diff_commit_as_email",
- "git_merge_commits",
- "git_revert",
- "git_revert_commit"
- ]
- }
+ "used": { "returns": [], "needs": [] }
}
],
[
- "git_config",
+ "git_credential_ssh_custom",
{
- "decl": "git_config",
+ "decl": "git_credential_ssh_custom",
"type": "struct",
- "value": "git_config",
- "file": "types.h",
- "line": 138,
- "lineto": 138,
+ "value": "git_credential_ssh_custom",
+ "file": "git2/credential.h",
+ "line": 110,
+ "lineto": 110,
"tdef": "typedef",
- "description": " Memory representation of a set of config files ",
+ "description": " A key with a custom signature function",
+ "comments": "",
+ "used": { "returns": [], "needs": [] }
+ }
+ ],
+ [
+ "git_credential_ssh_interactive",
+ {
+ "decl": "git_credential_ssh_interactive",
+ "type": "struct",
+ "value": "git_credential_ssh_interactive",
+ "file": "git2/credential.h",
+ "line": 105,
+ "lineto": 105,
+ "tdef": "typedef",
+ "description": " Keyboard-interactive based ssh authentication",
"comments": "",
"used": {
"returns": [],
- "needs": [
- "git_config_add_backend",
- "git_config_add_file_ondisk",
- "git_config_backend_foreach_match",
- "git_config_delete_entry",
- "git_config_delete_multivar",
- "git_config_entry_free",
- "git_config_foreach",
- "git_config_foreach_match",
- "git_config_free",
- "git_config_get_bool",
- "git_config_get_entry",
- "git_config_get_int32",
- "git_config_get_int64",
- "git_config_get_mapped",
- "git_config_get_multivar_foreach",
- "git_config_get_path",
- "git_config_get_string",
- "git_config_get_string_buf",
- "git_config_init_backend",
- "git_config_iterator_free",
- "git_config_iterator_glob_new",
- "git_config_iterator_new",
- "git_config_lock",
- "git_config_multivar_iterator_new",
- "git_config_new",
- "git_config_next",
- "git_config_open_default",
- "git_config_open_global",
- "git_config_open_level",
- "git_config_open_ondisk",
- "git_config_set_bool",
- "git_config_set_int32",
- "git_config_set_int64",
- "git_config_set_multivar",
- "git_config_set_string",
- "git_config_snapshot",
- "git_repository_config",
- "git_repository_config_snapshot",
- "git_repository_set_config"
- ]
+ "needs": ["git_credential_ssh_interactive_new"]
}
}
],
[
- "git_config_backend",
+ "git_credential_ssh_key",
{
- "decl": "git_config_backend",
+ "decl": "git_credential_ssh_key",
"type": "struct",
- "value": "git_config_backend",
- "file": "types.h",
- "line": 141,
- "lineto": 141,
- "block": "unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free",
+ "value": "git_credential_ssh_key",
+ "file": "git2/credential.h",
+ "line": 100,
+ "lineto": 100,
"tdef": "typedef",
- "description": " Interface to access a configuration file ",
+ "description": " A ssh key from disk",
"comments": "",
+ "used": { "returns": [], "needs": [] }
+ }
+ ],
+ [
+ "git_credential_t",
+ {
+ "decl": [
+ "GIT_CREDENTIAL_USERPASS_PLAINTEXT",
+ "GIT_CREDENTIAL_SSH_KEY",
+ "GIT_CREDENTIAL_SSH_CUSTOM",
+ "GIT_CREDENTIAL_DEFAULT",
+ "GIT_CREDENTIAL_SSH_INTERACTIVE",
+ "GIT_CREDENTIAL_USERNAME",
+ "GIT_CREDENTIAL_SSH_MEMORY"
+ ],
+ "type": "enum",
+ "file": "git2/credential.h",
+ "line": 30,
+ "lineto": 82,
+ "block": "GIT_CREDENTIAL_USERPASS_PLAINTEXT\nGIT_CREDENTIAL_SSH_KEY\nGIT_CREDENTIAL_SSH_CUSTOM\nGIT_CREDENTIAL_DEFAULT\nGIT_CREDENTIAL_SSH_INTERACTIVE\nGIT_CREDENTIAL_USERNAME\nGIT_CREDENTIAL_SSH_MEMORY",
+ "tdef": "typedef",
+ "description": " Supported credential types",
+ "comments": "This represents the various types of authentication methods supported by the library.
\n", "fields": [ { - "type": "unsigned int", - "name": "version", - "comments": "" - }, - { - "type": "int", - "name": "readonly", - "comments": " True if this backend is for a snapshot " - }, - { - "type": "struct git_config *", - "name": "cfg", - "comments": "" - }, - { - "type": "int (*)(struct git_config_backend *, git_config_level_t)", - "name": "open", - "comments": "" - }, - { - "type": "int (*)(struct git_config_backend *, const char *, git_config_entry **)", - "name": "get", - "comments": "" - }, - { - "type": "int (*)(struct git_config_backend *, const char *, const char *)", - "name": "set", - "comments": "" - }, - { - "type": "int (*)(git_config_backend *, const char *, const char *, const char *)", - "name": "set_multivar", - "comments": "" - }, - { - "type": "int (*)(struct git_config_backend *, const char *)", - "name": "del", - "comments": "" + "type": "int", + "name": "GIT_CREDENTIAL_USERPASS_PLAINTEXT", + "comments": "A vanilla user/password request
\n", + "value": 1 }, { - "type": "int (*)(struct git_config_backend *, const char *, const char *)", - "name": "del_multivar", - "comments": "" + "type": "int", + "name": "GIT_CREDENTIAL_SSH_KEY", + "comments": "An SSH key-based authentication request
\n", + "value": 2 }, { - "type": "int (*)(git_config_iterator **, struct git_config_backend *)", - "name": "iterator", - "comments": "" + "type": "int", + "name": "GIT_CREDENTIAL_SSH_CUSTOM", + "comments": "An SSH key-based authentication request, with a custom signature
\n", + "value": 4 }, { - "type": "int (*)(struct git_config_backend **, struct git_config_backend *)", - "name": "snapshot", - "comments": " Produce a read-only version of this backend " + "type": "int", + "name": "GIT_CREDENTIAL_DEFAULT", + "comments": "An NTLM/Negotiate-based authentication request.
\n", + "value": 8 }, { - "type": "int (*)(struct git_config_backend *)", - "name": "lock", - "comments": " Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers." + "type": "int", + "name": "GIT_CREDENTIAL_SSH_INTERACTIVE", + "comments": "An SSH interactive authentication request
\n", + "value": 16 }, { - "type": "int (*)(struct git_config_backend *, int)", - "name": "unlock", - "comments": " Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back." + "type": "int", + "name": "GIT_CREDENTIAL_USERNAME", + "comments": "Username-only authentication request
\n\nUsed as a pre-authentication step if the underlying transport\n (eg. SSH, with no username in its URL) does not know which username\n to use.
\n", + "value": 32 }, { - "type": "void (*)(struct git_config_backend *)", - "name": "free", - "comments": "" + "type": "int", + "name": "GIT_CREDENTIAL_SSH_MEMORY", + "comments": "An SSH key-based authentication request
\n\nAllows credentials to be read from memory instead of files.\n Note that because of differences in crypto backend support, it might\n not be functional.
\n", + "value": 64 } ], - "used": { - "returns": [], - "needs": [ - "git_config_add_backend", - "git_config_backend_foreach_match", - "git_config_init_backend" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_config_entry", + "git_credential_username", { - "decl": [ - "const char * name", - "const char * value", - "git_config_level_t level", - "void (*)(struct git_config_entry *) free", - "void * payload" - ], + "decl": "git_credential_username", "type": "struct", - "value": "git_config_entry", - "file": "config.h", - "line": 64, - "lineto": 70, - "block": "const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload", + "value": "git_credential_username", + "file": "git2/credential.h", + "line": 92, + "lineto": 92, "tdef": "typedef", - "description": " An entry in a configuration file", + "description": " Username-only credential information ", "comments": "", - "fields": [ - { - "type": "const char *", - "name": "name", - "comments": " Name of the entry (normalised) " - }, - { - "type": "const char *", - "name": "value", - "comments": " String value of the entry " - }, - { - "type": "git_config_level_t", - "name": "level", - "comments": " Which config file this was found in " - }, - { - "type": "void (*)(struct git_config_entry *)", - "name": "free", - "comments": " Free function for this entry " - }, - { - "type": "void *", - "name": "payload", - "comments": " Opaque value for the free function. Do not read or write " - } - ], - "used": { - "returns": [], - "needs": [ - "git_config_entry_free", - "git_config_get_entry", - "git_config_next" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_config_iterator", + "git_credential_userpass_payload", { - "decl": [ - "git_config_backend * backend", - "unsigned int flags", - "int (*)(git_config_entry **, git_config_iterator *) next", - "void (*)(git_config_iterator *) free" - ], + "decl": ["const char * username", "const char * password"], "type": "struct", - "value": "git_config_iterator", - "file": "sys/config.h", - "line": 34, - "lineto": 48, - "block": "git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free", - "tdef": null, - "description": " Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as", - "comments": " struct my_iterator { git_config_iterator parent; ... }\n\n\nand assign iter->parent.backend to your git_config_backend.
git_config_open_default() and git_repository_config() honor those priority levels as well.
\n", + "description": " What type of change is described by a git_diff_delta?", + "comments": "GIT_DELTA_RENAMED and GIT_DELTA_COPIED will only show up if you run git_diff_find_similar() on the diff object.
GIT_DELTA_TYPECHANGE only shows up given GIT_DIFF_INCLUDE_TYPECHANGE in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).
System-wide on Windows, for compatibility with portable git
\n", + "name": "GIT_DELTA_UNMODIFIED", + "comments": "no changes
\n", + "value": 0 + }, + { + "type": "int", + "name": "GIT_DELTA_ADDED", + "comments": "entry does not exist in old version
\n", "value": 1 }, { "type": "int", - "name": "GIT_CONFIG_LEVEL_SYSTEM", - "comments": "System-wide configuration file; /etc/gitconfig on Linux systems
\n", + "name": "GIT_DELTA_DELETED", + "comments": "entry does not exist in new version
\n", "value": 2 }, { "type": "int", - "name": "GIT_CONFIG_LEVEL_XDG", - "comments": "XDG compatible configuration file; typically ~/.config/git/config
\n", + "name": "GIT_DELTA_MODIFIED", + "comments": "entry content changed between old and new
\n", "value": 3 }, { "type": "int", - "name": "GIT_CONFIG_LEVEL_GLOBAL", - "comments": "User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig
\n", + "name": "GIT_DELTA_RENAMED", + "comments": "entry was renamed between old and new
\n", "value": 4 }, { "type": "int", - "name": "GIT_CONFIG_LEVEL_LOCAL", - "comments": "Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos
\n", + "name": "GIT_DELTA_COPIED", + "comments": "entry was copied from another old entry
\n", "value": 5 }, { "type": "int", - "name": "GIT_CONFIG_LEVEL_APP", - "comments": "Application specific configuration file; freely defined by applications
\n", + "name": "GIT_DELTA_IGNORED", + "comments": "entry is ignored item in workdir
\n", "value": 6 }, { "type": "int", - "name": "GIT_CONFIG_HIGHEST_LEVEL", - "comments": "Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)
\n", - "value": -1 + "name": "GIT_DELTA_UNTRACKED", + "comments": "entry is untracked item in workdir
\n", + "value": 7 + }, + { + "type": "int", + "name": "GIT_DELTA_TYPECHANGE", + "comments": "type of entry changed between old and new
\n", + "value": 8 + }, + { + "type": "int", + "name": "GIT_DELTA_UNREADABLE", + "comments": "entry is unreadable
\n", + "value": 9 + }, + { + "type": "int", + "name": "GIT_DELTA_CONFLICTED", + "comments": "entry in the index is conflicted
\n", + "value": 10 } ], "used": { "returns": [], - "needs": [ - "git_config_add_backend", - "git_config_add_file_ondisk", - "git_config_open_level" - ] - } - } - ], - [ - "git_cred_default", - { - "decl": "git_cred_default", - "type": "struct", - "value": "git_cred_default", - "file": "transport.h", - "line": 176, - "lineto": 176, - "tdef": "typedef", - "description": " A key for NTLM/Kerberos \"default\" credentials ", - "comments": "", - "used": { - "returns": [], - "needs": [] + "needs": ["git_diff_num_deltas_of_type", "git_diff_status_char"] } } ], [ - "git_cred_ssh_custom", + "git_describe_format_options", { "decl": [ - "git_cred parent", - "char * username", - "char * publickey", - "size_t publickey_len", - "git_cred_sign_callback sign_callback", - "void * payload" + "unsigned int version", + "unsigned int abbreviated_size", + "int always_use_long_format", + "const char * dirty_suffix" ], "type": "struct", - "value": "git_cred_ssh_custom", - "file": "transport.h", - "line": 166, - "lineto": 173, - "block": "git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload", + "value": "git_describe_format_options", + "file": "git2/describe.h", + "line": 100, + "lineto": 120, + "block": "unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix", "tdef": "typedef", - "description": " A key with a custom signature function", - "comments": "", + "description": " Describe format options structure", + "comments": "Initialize with GIT_DESCRIBE_FORMAT_OPTIONS_INIT. Alternatively, you can use git_describe_format_options_init.
Initialize with GIT_DESCRIBE_OPTIONS_INIT. Alternatively, you can use git_describe_options_init.
These behave like the --tags and --all options to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.
\n", "fields": [ { - "type": "git_cred", - "name": "parent", - "comments": "" + "type": "int", + "name": "GIT_DESCRIBE_DEFAULT", + "comments": "", + "value": 0 }, { - "type": "char [1]", - "name": "username", - "comments": "" + "type": "int", + "name": "GIT_DESCRIBE_TAGS", + "comments": "", + "value": 1 + }, + { + "type": "int", + "name": "GIT_DESCRIBE_ALL", + "comments": "", + "value": 2 } ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_diff", + { + "decl": "git_diff", + "type": "struct", + "value": "git_diff", + "file": "git2/diff.h", + "line": 196, + "lineto": 196, + "tdef": "typedef", + "description": " The diff object that contains all individual file deltas.", + "comments": "A diff represents the cumulative list of differences between two snapshots of a repository (possibly filtered by a set of file name patterns).
Calculating diffs is generally done in two phases: building a list of diffs then traversing it. This makes is easier to share logic across the various types of diffs (tree vs tree, workdir vs index, etc.), and also allows you to insert optional diff post-processing phases, such as rename detection, in between the steps. When you are done with a diff object, it must be freed.
\n\nThis is an opaque structure which will be allocated by one of the diff generator functions below (such as git_diff_tree_to_tree). You are responsible for releasing the object memory when done, using the git_diff_free() function.
A binary file / delta is a file (or pair) for which no text diffs should be generated. A diff can contain delta entries that are binary, but no diff content will be output for those files. There is a base heuristic for binary detection and you can further tune the behavior with git attributes or diff flags and option settings.
There is no binary delta.
\n", + "value": 0 }, { "type": "int", - "name": "GIT_CREDTYPE_SSH_KEY", - "comments": "", - "value": 2 + "name": "GIT_DIFF_BINARY_LITERAL", + "comments": "The binary data is the literal contents of the file.
\n", + "value": 1 }, { "type": "int", - "name": "GIT_CREDTYPE_SSH_CUSTOM", - "comments": "", - "value": 4 - }, + "name": "GIT_DIFF_BINARY_DELTA", + "comments": "The binary data is the delta from one side to the other.
\n", + "value": 2 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_diff_delta", + { + "decl": [ + "git_delta_t status", + "uint32_t flags", + "uint16_t similarity", + "uint16_t nfiles", + "git_diff_file old_file", + "git_diff_file new_file" + ], + "type": "struct", + "value": "git_diff_delta", + "file": "git2/diff.h", + "line": 324, + "lineto": 331, + "block": "git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file", + "tdef": "typedef", + "description": " Description of changes to one entry.", + "comments": "A delta is a file pair with an old and new revision. The old version may be absent if the file was just created and the new version may be absent if the file was deleted. A diff is mostly just a list of deltas.
When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.
\n\nThe old_file represents the "from" side of the diff and the new_file represents to "to" side of the diff. What those means depend on the function that was used to generate the diff and will be documented below. You can also use the GIT_DIFF_REVERSE flag to flip it around.
Although the two sides of the delta are named "old_file" and "new_file", they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).
\n\nUnder some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible. One example is that the "flags" field may not have either the BINARY or the NOT_BINARY flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function. It will just use the git attributes for those files.
The similarity score is zero unless you call git_diff_find_similar() which does a similarity analysis of files in the diff. Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs. After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.
If you ask git_diff_find_similar to find heavily modified files to break, but to not actually break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold. To display this value like core Git, invert the score (a la printf("M%03d", 100 - delta->similarity)).
Username-only information
\n\nIf the SSH transport does not know which username to use,\n it will ask via this credential type.
\n", - "value": 32 + "type": "uint16_t", + "name": "nfiles", + "comments": " number of files in this delta " }, - { - "type": "int", - "name": "GIT_CREDTYPE_SSH_MEMORY", - "comments": "Credentials read from memory.
\n\nOnly available for libssh2+OpenSSL for now.
\n", - "value": 64 - } + { "type": "git_diff_file", "name": "old_file", "comments": "" }, + { "type": "git_diff_file", "name": "new_file", "comments": "" } ], "used": { - "returns": [], - "needs": [] + "returns": [ + "git_diff_get_delta", + "git_patch_get_delta", + "git_pathspec_match_list_diff_entry" + ], + "needs": [ + "git_apply_delta_cb", + "git_diff_binary_cb", + "git_diff_file_cb", + "git_diff_hunk_cb", + "git_diff_line_cb", + "git_diff_notify_cb" + ] } } ], [ - "git_cvar_map", + "git_diff_file", { "decl": [ - "git_cvar_t cvar_type", - "const char * str_match", - "int map_value" + "git_oid id", + "const char * path", + "git_object_size_t size", + "uint32_t flags", + "uint16_t mode", + "uint16_t id_abbrev" ], "type": "struct", - "value": "git_cvar_map", - "file": "config.h", - "line": 93, - "lineto": 97, - "block": "git_cvar_t cvar_type\nconst char * str_match\nint map_value", + "value": "git_diff_file", + "file": "git2/diff.h", + "line": 245, + "lineto": 282, + "block": "git_oid id\nconst char * path\ngit_object_size_t size\nuint32_t flags\nuint16_t mode\nuint16_t id_abbrev", "tdef": "typedef", - "description": " Mapping from config variables to values.", - "comments": "", + "description": " Description of one side of a delta.", + "comments": "Although this is called a "file", it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).
\n", "fields": [ { - "type": "git_cvar_t", - "name": "cvar_type", - "comments": "" + "type": "git_oid", + "name": "id", + "comments": " The `git_oid` of the item. If the entry represents an\n absent side of a diff (e.g. the `old_file` of a `GIT_DELTA_ADDED` delta),\n then the oid will be zeroes." }, { "type": "const char *", - "name": "str_match", - "comments": "" + "name": "path", + "comments": " The NUL-terminated path to the entry relative to the working\n directory of the repository." }, { - "type": "int", - "name": "map_value", - "comments": "" + "type": "git_object_size_t", + "name": "size", + "comments": " The size of the entry in bytes." + }, + { + "type": "uint32_t", + "name": "flags", + "comments": " A combination of the `git_diff_flag_t` types" + }, + { + "type": "uint16_t", + "name": "mode", + "comments": " Roughly, the stat() `st_mode` value for the item. This will\n be restricted to one of the `git_filemode_t` values." + }, + { + "type": "uint16_t", + "name": "id_abbrev", + "comments": " Represents the known length of the `id` field, when\n converted to a hex string. It is generally `GIT_OID_SHA1_HEXSIZE`, unless this\n delta was created from reading a patch file, in which case it may be\n abbreviated to something reasonable, like 7 characters." } ], "used": { "returns": [], "needs": [ - "git_config_get_mapped", - "git_config_lookup_map_value" + "git_checkout_notify_cb", + "git_diff_blob_to_buffer", + "git_diff_blobs", + "git_diff_buffers", + "git_diff_foreach" ] } } ], [ - "git_cvar_t", + "git_diff_find_options", { "decl": [ - "GIT_CVAR_FALSE", - "GIT_CVAR_TRUE", - "GIT_CVAR_INT32", - "GIT_CVAR_STRING" + "unsigned int version", + "uint32_t flags", + "uint16_t rename_threshold", + "uint16_t rename_from_rewrite_threshold", + "uint16_t copy_threshold", + "uint16_t break_rewrite_threshold", + "size_t rename_limit", + "git_diff_similarity_metric * metric" ], - "type": "enum", - "file": "config.h", - "line": 83, - "lineto": 88, - "block": "GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING", + "type": "struct", + "value": "git_diff_find_options", + "file": "git2/diff.h", + "line": 774, + "lineto": 828, + "block": "unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric", "tdef": "typedef", - "description": " Config var type", - "comments": "", + "description": " Control behavior of rename and copy detection", + "comments": "These options mostly mimic parameters that can be passed to git-diff.
\n", "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, { - "type": "int", - "name": "GIT_CVAR_FALSE", - "comments": "", - "value": 0 + "type": "uint32_t", + "name": "flags", + "comments": " Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing." }, { - "type": "int", - "name": "GIT_CVAR_TRUE", - "comments": "", - "value": 1 + "type": "uint16_t", + "name": "rename_threshold", + "comments": " Threshold above which similar files will be considered renames.\n This is equivalent to the -M option. Defaults to 50." }, { - "type": "int", - "name": "GIT_CVAR_INT32", - "comments": "", - "value": 2 + "type": "uint16_t", + "name": "rename_from_rewrite_threshold", + "comments": " Threshold below which similar files will be eligible to be a rename source.\n This is equivalent to the first part of the -B option. Defaults to 50." }, { - "type": "int", - "name": "GIT_CVAR_STRING", - "comments": "", - "value": 3 + "type": "uint16_t", + "name": "copy_threshold", + "comments": " Threshold above which similar files will be considered copies.\n This is equivalent to the -C option. Defaults to 50." + }, + { + "type": "uint16_t", + "name": "break_rewrite_threshold", + "comments": " Threshold below which similar files will be split into a delete/add pair.\n This is equivalent to the last part of the -B option. Defaults to 60." + }, + { + "type": "size_t", + "name": "rename_limit", + "comments": " Maximum number of matches to consider for a particular file.\n\n This is a little different from the `-l` option from Git because we\n will still process up to this many matches before abandoning the search.\n Defaults to 1000." + }, + { + "type": "git_diff_similarity_metric *", + "name": "metric", + "comments": " The `metric` option allows you to plug in a custom similarity metric.\n\n Set it to NULL to use the default internal metric.\n\n The default metric is based on sampling hashes of ranges of data in\n the file, which is a pretty good similarity approximation that should\n work fairly well for both text and binary data while still being\n pretty fast with a fixed memory overhead." } ], "used": { "returns": [], - "needs": [] + "needs": ["git_diff_find_options_init", "git_diff_find_similar"] } } ], [ - "git_delta_t", + "git_diff_find_t", { "decl": [ - "GIT_DELTA_UNMODIFIED", - "GIT_DELTA_ADDED", - "GIT_DELTA_DELETED", - "GIT_DELTA_MODIFIED", - "GIT_DELTA_RENAMED", - "GIT_DELTA_COPIED", - "GIT_DELTA_IGNORED", - "GIT_DELTA_UNTRACKED", - "GIT_DELTA_TYPECHANGE", - "GIT_DELTA_UNREADABLE", - "GIT_DELTA_CONFLICTED" + "GIT_DIFF_FIND_BY_CONFIG", + "GIT_DIFF_FIND_RENAMES", + "GIT_DIFF_FIND_RENAMES_FROM_REWRITES", + "GIT_DIFF_FIND_COPIES", + "GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED", + "GIT_DIFF_FIND_REWRITES", + "GIT_DIFF_BREAK_REWRITES", + "GIT_DIFF_FIND_AND_BREAK_REWRITES", + "GIT_DIFF_FIND_FOR_UNTRACKED", + "GIT_DIFF_FIND_ALL", + "GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE", + "GIT_DIFF_FIND_IGNORE_WHITESPACE", + "GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE", + "GIT_DIFF_FIND_EXACT_MATCH_ONLY", + "GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY", + "GIT_DIFF_FIND_REMOVE_UNMODIFIED" ], "type": "enum", - "file": "diff.h", - "line": 246, - "lineto": 258, - "block": "GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED", + "file": "git2/diff.h", + "line": 683, + "lineto": 752, + "block": "GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED", "tdef": "typedef", - "description": " What type of change is described by a git_diff_delta?", - "comments": "GIT_DELTA_RENAMED and GIT_DELTA_COPIED will only show up if you run git_diff_find_similar() on the diff object.
GIT_DELTA_TYPECHANGE only shows up given GIT_DIFF_INCLUDE_TYPECHANGE in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).
no changes
\n", + "name": "GIT_DIFF_FIND_BY_CONFIG", + "comments": "Obey diff.renames. Overridden by any other GIT_DIFF_FIND_... flag.
entry does not exist in old version
\n", + "name": "GIT_DIFF_FIND_RENAMES", + "comments": "Look for renames? (--find-renames)
entry does not exist in new version
\n", + "name": "GIT_DIFF_FIND_RENAMES_FROM_REWRITES", + "comments": "Consider old side of MODIFIED for renames? (--break-rewrites=N)
entry content changed between old and new
\n", - "value": 3 - }, - { - "type": "int", - "name": "GIT_DELTA_RENAMED", - "comments": "entry was renamed between old and new
\n", + "name": "GIT_DIFF_FIND_COPIES", + "comments": "Look for copies? (a la --find-copies).
entry was copied from another old entry
\n", - "value": 5 - }, - { - "type": "int", - "name": "GIT_DELTA_IGNORED", - "comments": "entry is ignored item in workdir
\n", - "value": 6 - }, - { - "type": "int", - "name": "GIT_DELTA_UNTRACKED", - "comments": "entry is untracked item in workdir
\n", - "value": 7 - }, - { - "type": "int", - "name": "GIT_DELTA_TYPECHANGE", - "comments": "type of entry changed between old and new
\n", + "name": "GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED", + "comments": "Consider UNMODIFIED as copy sources? (--find-copies-harder).
For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial git_diff is being generated.
entry is unreadable
\n", - "value": 9 + "name": "GIT_DIFF_FIND_REWRITES", + "comments": "Mark significant rewrites for split (--break-rewrites=/M)
entry in the index is conflicted
\n", - "value": 10 - } - ], - "used": { - "returns": [], - "needs": [ - "git_diff_num_deltas_of_type", - "git_diff_status_char" - ] - } - } - ], - [ - "git_describe_format_options", - { - "decl": [ - "unsigned int version", - "unsigned int abbreviated_size", - "int always_use_long_format", - "const char * dirty_suffix" - ], - "type": "struct", - "value": "git_describe_format_options", - "file": "describe.h", - "line": 78, - "lineto": 98, - "block": "unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix", - "tdef": "typedef", - "description": " Options for formatting the describe string", - "comments": "", - "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" + "name": "GIT_DIFF_BREAK_REWRITES", + "comments": "Actually split large rewrites into delete/add pairs
\n", + "value": 32 }, { - "type": "unsigned int", - "name": "abbreviated_size", - "comments": " Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7." + "type": "int", + "name": "GIT_DIFF_FIND_AND_BREAK_REWRITES", + "comments": "Mark rewrites for split and break into delete/add pairs
\n", + "value": 48 }, { "type": "int", - "name": "always_use_long_format", - "comments": " Set to use the long format even when a shorter name could be used." + "name": "GIT_DIFF_FIND_FOR_UNTRACKED", + "comments": "Find renames/copies for UNTRACKED items in working directory.
\n\nFor this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial git_diff is being generated (and obviously the diff must\n be against the working directory for this to make sense).
Initialize with GIT_DESCRIBE_OPTIONS_INIT macro to correctly set the version field. E.g.
git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n\n",
- "fields": [
+ "type": "int",
+ "name": "GIT_DIFF_FIND_ALL",
+ "comments": "Turn on all finding features.
\n", + "value": 255 + }, { - "type": "unsigned int", - "name": "version", - "comments": "" + "type": "int", + "name": "GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE", + "comments": "Measure similarity ignoring leading whitespace (default)
\n", + "value": 0 }, { - "type": "unsigned int", - "name": "max_candidates_tags", - "comments": "" + "type": "int", + "name": "GIT_DIFF_FIND_IGNORE_WHITESPACE", + "comments": "Measure similarity ignoring all whitespace
\n", + "value": 4096 }, { - "type": "unsigned int", - "name": "describe_strategy", - "comments": " default: 10 " + "type": "int", + "name": "GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE", + "comments": "Measure similarity including all data
\n", + "value": 8192 }, { - "type": "const char *", - "name": "pattern", - "comments": " default: GIT_DESCRIBE_DEFAULT " + "type": "int", + "name": "GIT_DIFF_FIND_EXACT_MATCH_ONLY", + "comments": "Measure similarity only by comparing SHAs (fast and cheap)
\n", + "value": 16384 }, { "type": "int", - "name": "only_follow_first_parent", - "comments": " When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry." + "name": "GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY", + "comments": "Do not break rewrites unless they contribute to a rename.
\n\nNormally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair. Then the sides of that pair will be\n considered candidates for rename and copy detection.
\n\nIf you add this flag in and the split pair is not used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.
\n", + "value": 32768 }, { "type": "int", - "name": "show_commit_oid_as_fallback", - "comments": " If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit." + "name": "GIT_DIFF_FIND_REMOVE_UNMODIFIED", + "comments": "Remove any UNMODIFIED deltas after find_similar is done.
\n\nUsing GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.
\n", + "value": 65536 } ], - "used": { - "returns": [], - "needs": [ - "git_describe_commit", - "git_describe_workdir" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_describe_strategy_t", + "git_diff_flag_t", { "decl": [ - "GIT_DESCRIBE_DEFAULT", - "GIT_DESCRIBE_TAGS", - "GIT_DESCRIBE_ALL" + "GIT_DIFF_FLAG_BINARY", + "GIT_DIFF_FLAG_NOT_BINARY", + "GIT_DIFF_FLAG_VALID_ID", + "GIT_DIFF_FLAG_EXISTS", + "GIT_DIFF_FLAG_VALID_SIZE" ], "type": "enum", - "file": "describe.h", - "line": 30, - "lineto": 34, - "block": "GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL", + "file": "git2/diff.h", + "line": 206, + "lineto": 212, + "block": "GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS\nGIT_DIFF_FLAG_VALID_SIZE", "tdef": "typedef", - "description": " Reference lookup strategy", - "comments": "These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.
\n", + "description": " Flags for the delta object and the file objects on each side.", + "comments": "These flags are used for both the flags value of the git_diff_delta and the flags for the git_diff_file objects representing the old and new sides of the delta. Values outside of this public range should be considered reserved for internal or future use.
file(s) treated as binary data
\n", + "value": 1 }, { "type": "int", - "name": "GIT_DESCRIBE_TAGS", - "comments": "", - "value": 1 + "name": "GIT_DIFF_FLAG_NOT_BINARY", + "comments": "file(s) treated as text data
\n", + "value": 2 }, { "type": "int", - "name": "GIT_DESCRIBE_ALL", - "comments": "", - "value": 2 + "name": "GIT_DIFF_FLAG_VALID_ID", + "comments": "id value is known correct
file exists at this side of the delta
\n", + "value": 8 + }, + { + "type": "int", + "name": "GIT_DIFF_FLAG_VALID_SIZE", + "comments": "file size value is known correct
\n", + "value": 16 } ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_diff", - { - "decl": "git_diff", - "type": "struct", - "value": "git_diff", - "file": "diff.h", - "line": 219, - "lineto": 219, - "tdef": "typedef", - "description": " The diff object that contains all individual file deltas.", - "comments": "This is an opaque structure which will be allocated by one of the diff generator functions below (such as git_diff_tree_to_tree). You are responsible for releasing the object memory when done, using the git_diff_free() function.
Normal patch, the default
\n", + "value": 0 }, { - "type": "git_diff_binary_file", - "name": "new_file", - "comments": " The contents of the new file. " + "type": "int", + "name": "GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER", + "comments": "Don't insert "[PATCH]" in the subject header
\n", + "value": 1 } ], - "used": { - "returns": [], - "needs": [ - "git_diff_binary_cb", - "git_diff_blob_to_buffer", - "git_diff_blobs", - "git_diff_buffers", - "git_diff_foreach" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_diff_binary_file", + "git_diff_format_email_options", { "decl": [ - "git_diff_binary_t type", - "const char * data", - "size_t datalen", - "size_t inflatedlen" + "unsigned int version", + "uint32_t flags", + "size_t patch_no", + "size_t total_patches", + "const git_oid * id", + "const char * summary", + "const char * body", + "const git_signature * author" ], "type": "struct", - "value": "git_diff_binary_file", - "file": "diff.h", - "line": 469, - "lineto": 481, - "block": "git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen", + "value": "git_diff_format_email_options", + "file": "git2/deprecated.h", + "line": 338, + "lineto": 361, + "block": "unsigned int version\nuint32_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author", "tdef": "typedef", - "description": " The contents of one of the files in a binary diff. ", + "description": " Options for controlling the formatting of the generated e-mail.", "comments": "", "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, { - "type": "git_diff_binary_t", - "name": "type", - "comments": " The type of binary data for this file. " + "type": "uint32_t", + "name": "flags", + "comments": " see `git_diff_format_email_flags_t` above " }, { - "type": "const char *", - "name": "data", - "comments": " The binary data, deflated. " + "type": "size_t", + "name": "patch_no", + "comments": " This patch number " }, { "type": "size_t", - "name": "datalen", - "comments": " The length of the binary data. " + "name": "total_patches", + "comments": " Total number of patches in this series " }, { - "type": "size_t", - "name": "inflatedlen", - "comments": " The length of the binary data after inflation. " + "type": "const git_oid *", + "name": "id", + "comments": " id to use for the commit " + }, + { + "type": "const char *", + "name": "summary", + "comments": " Summary of the change " + }, + { + "type": "const char *", + "name": "body", + "comments": " Commit message's body " + }, + { + "type": "const git_signature *", + "name": "author", + "comments": " Author of the change " } ], "used": { "returns": [], - "needs": [] + "needs": [ + "git_diff_format_email", + "git_diff_format_email_options_init" + ] } } ], [ - "git_diff_binary_t", - { - "decl": [ - "GIT_DIFF_BINARY_NONE", - "GIT_DIFF_BINARY_LITERAL", - "GIT_DIFF_BINARY_DELTA" + "git_diff_format_t", + { + "decl": [ + "GIT_DIFF_FORMAT_PATCH", + "GIT_DIFF_FORMAT_PATCH_HEADER", + "GIT_DIFF_FORMAT_RAW", + "GIT_DIFF_FORMAT_NAME_ONLY", + "GIT_DIFF_FORMAT_NAME_STATUS", + "GIT_DIFF_FORMAT_PATCH_ID" ], "type": "enum", - "file": "diff.h", - "line": 457, - "lineto": 466, - "block": "GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA", + "file": "git2/diff.h", + "line": 1156, + "lineto": 1163, + "block": "GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS\nGIT_DIFF_FORMAT_PATCH_ID", "tdef": "typedef", - "description": " When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).", + "description": " Possible output formats for diff data", "comments": "", "fields": [ { "type": "int", - "name": "GIT_DIFF_BINARY_NONE", - "comments": "There is no binary delta.
\n", - "value": 0 + "name": "GIT_DIFF_FORMAT_PATCH", + "comments": "full git diff
\n", + "value": 1 }, { "type": "int", - "name": "GIT_DIFF_BINARY_LITERAL", - "comments": "The binary data is the literal contents of the file.
\n", - "value": 1 + "name": "GIT_DIFF_FORMAT_PATCH_HEADER", + "comments": "just the file headers of patch
\n", + "value": 2 }, { "type": "int", - "name": "GIT_DIFF_BINARY_DELTA", - "comments": "The binary data is the delta from one side to the other.
\n", - "value": 2 + "name": "GIT_DIFF_FORMAT_RAW", + "comments": "like git diff --raw
\n", + "value": 3 + }, + { + "type": "int", + "name": "GIT_DIFF_FORMAT_NAME_ONLY", + "comments": "like git diff --name-only
\n", + "value": 4 + }, + { + "type": "int", + "name": "GIT_DIFF_FORMAT_NAME_STATUS", + "comments": "like git diff --name-status
\n", + "value": 5 + }, + { + "type": "int", + "name": "GIT_DIFF_FORMAT_PATCH_ID", + "comments": "git diff as used by git patch-id
\n", + "value": 6 } ], "used": { "returns": [], - "needs": [] + "needs": ["git_diff_print", "git_diff_to_buf"] } } ], [ - "git_diff_delta", + "git_diff_hunk", { "decl": [ - "git_delta_t status", - "uint32_t flags", - "uint16_t similarity", - "uint16_t nfiles", - "git_diff_file old_file", - "git_diff_file new_file" + "int old_start", + "int old_lines", + "int new_start", + "int new_lines", + "size_t header_len", + "char [128] header" ], "type": "struct", - "value": "git_diff_delta", - "file": "diff.h", - "line": 325, - "lineto": 332, - "block": "git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file", + "value": "git_diff_hunk", + "file": "git2/diff.h", + "line": 590, + "lineto": 597, + "block": "int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header", "tdef": "typedef", - "description": " Description of changes to one entry.", - "comments": "When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.
\n\nThe old_file represents the "from" side of the diff and the new_file represents to "to" side of the diff. What those means depend on the function that was used to generate the diff and will be documented below. You can also use the GIT_DIFF_REVERSE flag to flip it around.
Although the two sides of the delta are named "old_file" and "new_file", they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).
\n\nUnder some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible. One example is that the "flags" field may not have either the BINARY or the NOT_BINARY flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function. It will just use the git attributes for those files.
The similarity score is zero unless you call git_diff_find_similar() which does a similarity analysis of files in the diff. Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs. After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.
If you ask git_diff_find_similar to find heavily modified files to break, but to not actually break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold. To display this value like core Git, invert the score (a la printf("M%03d", 100 - delta->similarity)).
A hunk is a span of modified lines in a delta along with some stable surrounding context. You can configure the amount of context and other properties of how hunks are generated. Each hunk also comes with a header that described where it starts and ends in both the old and new versions in the delta.
Although this is called a "file", it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).
\n\nThe oid is the git_oid of the item. If the entry represents an absent side of a diff (e.g. the old_file of a GIT_DELTA_ADDED delta), then the oid will be zeroes.
path is the NUL-terminated path to the entry relative to the working directory of the repository.
size is the size of the entry in bytes.
flags is a combination of the git_diff_flag_t types
mode is, roughly, the stat() st_mode value for the item. This will be restricted to one of the git_filemode_t values.
A line is a range of characters inside a hunk. It could be a context line (i.e. in both old and new versions), an added line (i.e. only in the new version), or a removed line (i.e. only in the old version). Unfortunately, we don't know anything about the encoding of data in the file being diffed, so we cannot tell you much about the line content. Line data will not be NUL-byte terminated, however, because it will be just a span of bytes inside the larger file.
These options mostly mimic parameters that can be passed to git-diff.
\n\nrename_threshold is the same as the -M option with a value - copy_threshold is the same as the -C option with a value - rename_from_rewrite_threshold matches the top of the -B option - break_rewrite_threshold matches the bottom of the -B option - rename_limit is the maximum number of matches to consider for a particular file. This is a little different from the -l option to regular Git because we will still process up to this many matches before abandoning the search.The metric option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file. The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.
These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff. There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.
\n", "fields": [ { - "type": "unsigned int", - "name": "version", - "comments": "" + "type": "int", + "name": "GIT_DIFF_LINE_CONTEXT", + "comments": "", + "value": 32 }, { - "type": "uint32_t", - "name": "flags", - "comments": " Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing." + "type": "int", + "name": "GIT_DIFF_LINE_ADDITION", + "comments": "", + "value": 43 }, { - "type": "uint16_t", - "name": "rename_threshold", - "comments": " Similarity to consider a file renamed (default 50) " + "type": "int", + "name": "GIT_DIFF_LINE_DELETION", + "comments": "", + "value": 45 }, { - "type": "uint16_t", - "name": "rename_from_rewrite_threshold", - "comments": " Similarity of modified to be eligible rename source (default 50) " + "type": "int", + "name": "GIT_DIFF_LINE_CONTEXT_EOFNL", + "comments": "Both files have no LF at end
\n", + "value": 61 }, { - "type": "uint16_t", - "name": "copy_threshold", - "comments": " Similarity to consider a file a copy (default 50) " + "type": "int", + "name": "GIT_DIFF_LINE_ADD_EOFNL", + "comments": "Old has no LF at end, new does
\n", + "value": 62 }, { - "type": "uint16_t", - "name": "break_rewrite_threshold", - "comments": " Similarity to split modify into delete/add pair (default 60) " + "type": "int", + "name": "GIT_DIFF_LINE_DEL_EOFNL", + "comments": "Old has LF at end, new does not
\n", + "value": 60 }, { - "type": "size_t", - "name": "rename_limit", - "comments": " Maximum similarity sources to examine for a file (somewhat like\n git-diff's `-l` option or `diff.renameLimit` config) (default 200)" + "type": "int", + "name": "GIT_DIFF_LINE_FILE_HDR", + "comments": "", + "value": 70 }, { - "type": "git_diff_similarity_metric *", - "name": "metric", - "comments": " Pluggable similarity metric; pass NULL to use internal metric " + "type": "int", + "name": "GIT_DIFF_LINE_HUNK_HDR", + "comments": "", + "value": 72 + }, + { + "type": "int", + "name": "GIT_DIFF_LINE_BINARY", + "comments": "For "Binary files x and y differ"
\n", + "value": 66 } ], - "used": { - "returns": [], - "needs": [ - "git_diff_find_init_options", - "git_diff_find_similar" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_diff_find_t", + "git_diff_option_t", { "decl": [ - "GIT_DIFF_FIND_BY_CONFIG", - "GIT_DIFF_FIND_RENAMES", - "GIT_DIFF_FIND_RENAMES_FROM_REWRITES", - "GIT_DIFF_FIND_COPIES", - "GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED", - "GIT_DIFF_FIND_REWRITES", - "GIT_DIFF_BREAK_REWRITES", - "GIT_DIFF_FIND_AND_BREAK_REWRITES", - "GIT_DIFF_FIND_FOR_UNTRACKED", - "GIT_DIFF_FIND_ALL", - "GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE", - "GIT_DIFF_FIND_IGNORE_WHITESPACE", - "GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE", - "GIT_DIFF_FIND_EXACT_MATCH_ONLY", - "GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY", - "GIT_DIFF_FIND_REMOVE_UNMODIFIED" + "GIT_DIFF_NORMAL", + "GIT_DIFF_REVERSE", + "GIT_DIFF_INCLUDE_IGNORED", + "GIT_DIFF_RECURSE_IGNORED_DIRS", + "GIT_DIFF_INCLUDE_UNTRACKED", + "GIT_DIFF_RECURSE_UNTRACKED_DIRS", + "GIT_DIFF_INCLUDE_UNMODIFIED", + "GIT_DIFF_INCLUDE_TYPECHANGE", + "GIT_DIFF_INCLUDE_TYPECHANGE_TREES", + "GIT_DIFF_IGNORE_FILEMODE", + "GIT_DIFF_IGNORE_SUBMODULES", + "GIT_DIFF_IGNORE_CASE", + "GIT_DIFF_INCLUDE_CASECHANGE", + "GIT_DIFF_DISABLE_PATHSPEC_MATCH", + "GIT_DIFF_SKIP_BINARY_CHECK", + "GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS", + "GIT_DIFF_UPDATE_INDEX", + "GIT_DIFF_INCLUDE_UNREADABLE", + "GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED", + "GIT_DIFF_INDENT_HEURISTIC", + "GIT_DIFF_IGNORE_BLANK_LINES", + "GIT_DIFF_FORCE_TEXT", + "GIT_DIFF_FORCE_BINARY", + "GIT_DIFF_IGNORE_WHITESPACE", + "GIT_DIFF_IGNORE_WHITESPACE_CHANGE", + "GIT_DIFF_IGNORE_WHITESPACE_EOL", + "GIT_DIFF_SHOW_UNTRACKED_CONTENT", + "GIT_DIFF_SHOW_UNMODIFIED", + "GIT_DIFF_PATIENCE", + "GIT_DIFF_MINIMAL", + "GIT_DIFF_SHOW_BINARY" ], "type": "enum", - "file": "diff.h", - "line": 575, - "lineto": 644, - "block": "GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED", + "file": "git2/diff.h", + "line": 28, + "lineto": 174, + "block": "GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_INDENT_HEURISTIC\nGIT_DIFF_IGNORE_BLANK_LINES\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY", "tdef": "typedef", - "description": " Flags to control the behavior of diff rename/copy detection.", + "description": " Flags for diff options. A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.", "comments": "", "fields": [ { "type": "int", - "name": "GIT_DIFF_FIND_BY_CONFIG", - "comments": "Obey diff.renames. Overridden by any other GIT_DIFF_FIND_... flag.
Normal diff, the default
\n", "value": 0 }, { "type": "int", - "name": "GIT_DIFF_FIND_RENAMES", - "comments": "Look for renames? (--find-renames)
Reverse the sides of the diff
\n", "value": 1 }, { "type": "int", - "name": "GIT_DIFF_FIND_RENAMES_FROM_REWRITES", - "comments": "Consider old side of MODIFIED for renames? (--break-rewrites=N)
Include ignored files in the diff
\n", "value": 2 }, { "type": "int", - "name": "GIT_DIFF_FIND_COPIES", - "comments": "Look for copies? (a la --find-copies).
Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n will be marked with only a single entry in the diff; this flag\n adds all files under the directory as IGNORED entries, too.
\n", "value": 4 }, { "type": "int", - "name": "GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED", - "comments": "Consider UNMODIFIED as copy sources? (--find-copies-harder).
For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial git_diff is being generated.
Include untracked files in the diff
\n", "value": 8 }, { "type": "int", - "name": "GIT_DIFF_FIND_REWRITES", - "comments": "Mark significant rewrites for split (--break-rewrites=/M)
Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n directory will be marked with only a single entry in the diff\n (a la what core Git does in git status); this flag adds all\n files under untracked directories as UNTRACKED entries, too.
Actually split large rewrites into delete/add pairs
\n", + "name": "GIT_DIFF_INCLUDE_UNMODIFIED", + "comments": "Include unmodified files in the diff
\n", "value": 32 }, { "type": "int", - "name": "GIT_DIFF_FIND_AND_BREAK_REWRITES", - "comments": "Mark rewrites for split and break into delete/add pairs
\n", - "value": 48 + "name": "GIT_DIFF_INCLUDE_TYPECHANGE", + "comments": "Normally, a type change between files will be converted into a\n DELETED record for the old and an ADDED record for the new; this\n options enabled the generation of TYPECHANGE delta records.
\n", + "value": 64 }, { "type": "int", - "name": "GIT_DIFF_FIND_FOR_UNTRACKED", - "comments": "Find renames/copies for UNTRACKED items in working directory.
\n\nFor this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial git_diff is being generated (and obviously the diff must\n be against the working directory for this to make sense).
Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob->tree changes still\n generally show as a DELETED blob. This flag tries to correctly\n label blob->tree transitions as TYPECHANGE records with new_file's\n mode set to tree. Note: the tree SHA will not be available.
\n", + "value": 128 }, { "type": "int", - "name": "GIT_DIFF_FIND_ALL", - "comments": "Turn on all finding features.
\n", - "value": 255 + "name": "GIT_DIFF_IGNORE_FILEMODE", + "comments": "Ignore file mode changes
\n", + "value": 256 }, { "type": "int", - "name": "GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE", - "comments": "Measure similarity ignoring leading whitespace (default)
\n", - "value": 0 + "name": "GIT_DIFF_IGNORE_SUBMODULES", + "comments": "Treat all submodules as unmodified
\n", + "value": 512 }, { "type": "int", - "name": "GIT_DIFF_FIND_IGNORE_WHITESPACE", - "comments": "Measure similarity ignoring all whitespace
\n", + "name": "GIT_DIFF_IGNORE_CASE", + "comments": "Use case insensitive filename comparisons
\n", + "value": 1024 + }, + { + "type": "int", + "name": "GIT_DIFF_INCLUDE_CASECHANGE", + "comments": "May be combined with GIT_DIFF_IGNORE_CASE to specify that a file\n that has changed case will be returned as an add/delete pair.
If the pathspec is set in the diff options, this flags indicates\n that the paths will be treated as literal paths instead of\n fnmatch patterns. Each path in the list must either be a full\n path to a file or a directory. (A trailing slash indicates that\n the path will only match a directory). If a directory is\n specified, all children will be included.
\n", "value": 4096 }, { "type": "int", - "name": "GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE", - "comments": "Measure similarity including all data
\n", + "name": "GIT_DIFF_SKIP_BINARY_CHECK", + "comments": "Disable updating of the binary flag in delta records. This is\n useful when iterating over a diff if you don't need hunk and data\n callbacks and want to avoid having to load file completely.
Measure similarity only by comparing SHAs (fast and cheap)
\n", + "name": "GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS", + "comments": "When diff finds an untracked directory, to match the behavior of\n core Git, it scans the contents for IGNORED and UNTRACKED files.\n If all contents are IGNORED, then the directory is IGNORED; if\n any contents are not IGNORED, then the directory is UNTRACKED.\n This is extra work that may not matter in many cases. This flag\n turns off that scan and immediately labels an untracked directory\n as UNTRACKED (changing the behavior to not match core Git).
\n", "value": 16384 }, { "type": "int", - "name": "GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY", - "comments": "Do not break rewrites unless they contribute to a rename.
\n\nNormally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair. Then the sides of that pair will be\n considered candidates for rename and copy detection.
\n\nIf you add this flag in and the split pair is not used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.
\n", + "name": "GIT_DIFF_UPDATE_INDEX", + "comments": "When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index. Note:\n without this flag, diff will always leave the index untouched.
\n", "value": 32768 }, { "type": "int", - "name": "GIT_DIFF_FIND_REMOVE_UNMODIFIED", - "comments": "Remove any UNMODIFIED deltas after find_similar is done.
\n\nUsing GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag. If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.
\n", + "name": "GIT_DIFF_INCLUDE_UNREADABLE", + "comments": "Include unreadable files in the diff
\n", "value": 65536 - } - ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_diff_flag_t", - { - "decl": [ - "GIT_DIFF_FLAG_BINARY", - "GIT_DIFF_FLAG_NOT_BINARY", - "GIT_DIFF_FLAG_VALID_ID", - "GIT_DIFF_FLAG_EXISTS" - ], - "type": "enum", - "file": "diff.h", - "line": 229, - "lineto": 234, - "block": "GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS", - "tdef": "typedef", - "description": " Flags for the delta object and the file objects on each side.", - "comments": "These flags are used for both the flags value of the git_diff_delta and the flags for the git_diff_file objects representing the old and new sides of the delta. Values outside of this public range should be considered reserved for internal or future use.
file(s) treated as binary data
\n", - "value": 1 + "name": "GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED", + "comments": "Include unreadable files in the diff
\n", + "value": 131072 }, { "type": "int", - "name": "GIT_DIFF_FLAG_NOT_BINARY", - "comments": "file(s) treated as text data
\n", - "value": 2 + "name": "GIT_DIFF_INDENT_HEURISTIC", + "comments": "Use a heuristic that takes indentation and whitespace into account\n which generally can produce better diffs when dealing with ambiguous\n diff hunks.
\n", + "value": 262144 }, { "type": "int", - "name": "GIT_DIFF_FLAG_VALID_ID", - "comments": "id value is known correct
Ignore blank lines
\n", + "value": 524288 }, { "type": "int", - "name": "GIT_DIFF_FLAG_EXISTS", - "comments": "file exists at this side of the delta
\n", - "value": 8 - } - ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_diff_format_email_flags_t", - { - "decl": [ - "GIT_DIFF_FORMAT_EMAIL_NONE", - "GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER" - ], - "type": "enum", - "file": "diff.h", - "line": 1260, - "lineto": 1267, - "block": "GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER", - "tdef": "typedef", - "description": " Formatting options for diff e-mail generation", - "comments": "", - "fields": [ + "name": "GIT_DIFF_FORCE_TEXT", + "comments": "Treat all files as text, disabling binary attributes \n&\n detection
\n", + "value": 1048576 + }, { "type": "int", - "name": "GIT_DIFF_FORMAT_EMAIL_NONE", - "comments": "Normal patch, the default
\n", - "value": 0 + "name": "GIT_DIFF_FORCE_BINARY", + "comments": "Treat all files as binary, disabling text diffs
\n", + "value": 2097152 }, { "type": "int", - "name": "GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER", - "comments": "Don't insert "[PATCH]" in the subject header
\n", - "value": 1 + "name": "GIT_DIFF_IGNORE_WHITESPACE", + "comments": "Ignore all whitespace
\n", + "value": 4194304 + }, + { + "type": "int", + "name": "GIT_DIFF_IGNORE_WHITESPACE_CHANGE", + "comments": "Ignore changes in amount of whitespace
\n", + "value": 8388608 + }, + { + "type": "int", + "name": "GIT_DIFF_IGNORE_WHITESPACE_EOL", + "comments": "Ignore whitespace at end of line
\n", + "value": 16777216 + }, + { + "type": "int", + "name": "GIT_DIFF_SHOW_UNTRACKED_CONTENT", + "comments": "When generating patch text, include the content of untracked\n files. This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS. Add that\n flag if you want the content of every single UNTRACKED file.
\n", + "value": 33554432 + }, + { + "type": "int", + "name": "GIT_DIFF_SHOW_UNMODIFIED", + "comments": "When generating output, include the names of unmodified files if\n they are included in the git_diff. Normally these are skipped in\n the formats that list files (e.g. name-only, name-status, raw).\n Even with this, these will not be included in patch format.
\n", + "value": 67108864 + }, + { + "type": "int", + "name": "GIT_DIFF_PATIENCE", + "comments": "Use the "patience diff" algorithm
\n", + "value": 268435456 + }, + { + "type": "int", + "name": "GIT_DIFF_MINIMAL", + "comments": "Take extra time to find minimal diff
\n", + "value": 536870912 + }, + { + "type": "int", + "name": "GIT_DIFF_SHOW_BINARY", + "comments": "Include the necessary deflate / delta information so that git-apply\n can apply given diff information to binary files.
Setting all values of the structure to zero will yield the default values. Similarly, passing NULL for the options structure will give the defaults. The default values are marked below.
\n", "fields": [ { "type": "unsigned int", "name": "version", - "comments": "" + "comments": " version for the struct " }, { - "type": "git_diff_format_email_flags_t", + "type": "uint32_t", "name": "flags", - "comments": "" + "comments": " A combination of `git_diff_option_t` values above.\n Defaults to GIT_DIFF_NORMAL" }, { - "type": "size_t", - "name": "patch_no", - "comments": " This patch number " + "type": "git_submodule_ignore_t", + "name": "ignore_submodules", + "comments": " Overrides the submodule ignore setting for all submodules in the diff. " }, { - "type": "size_t", - "name": "total_patches", - "comments": " Total number of patches in this series " + "type": "git_strarray", + "name": "pathspec", + "comments": " An array of paths / fnmatch patterns to constrain diff.\n All paths are included by default." }, { - "type": "const git_oid *", - "name": "id", - "comments": " id to use for the commit " + "type": "git_diff_notify_cb", + "name": "notify_cb", + "comments": " An optional callback function, notifying the consumer of changes to\n the diff as new deltas are added." }, { - "type": "const char *", - "name": "summary", - "comments": " Summary of the change " + "type": "git_diff_progress_cb", + "name": "progress_cb", + "comments": " An optional callback function, notifying the consumer of which files\n are being examined as the diff is generated." }, { - "type": "const char *", - "name": "body", - "comments": " Commit message's body " + "type": "void *", + "name": "payload", + "comments": " The payload to pass to the callback functions. " }, { - "type": "const git_signature *", - "name": "author", - "comments": " Author of the change " - } - ], - "used": { - "returns": [], - "needs": [ - "git_diff_format_email", - "git_diff_format_email_init_options" - ] - } - } - ], - [ - "git_diff_format_t", - { - "decl": [ - "GIT_DIFF_FORMAT_PATCH", - "GIT_DIFF_FORMAT_PATCH_HEADER", - "GIT_DIFF_FORMAT_RAW", - "GIT_DIFF_FORMAT_NAME_ONLY", - "GIT_DIFF_FORMAT_NAME_STATUS" - ], - "type": "enum", - "file": "diff.h", - "line": 1023, - "lineto": 1029, - "block": "GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS", - "tdef": "typedef", - "description": " Possible output formats for diff data", - "comments": "", - "fields": [ + "type": "uint32_t", + "name": "context_lines", + "comments": " The number of unchanged lines that define the boundary of a hunk\n (and to display before and after). Defaults to 3." + }, { - "type": "int", - "name": "GIT_DIFF_FORMAT_PATCH", - "comments": "full git diff
\n", - "value": 1 + "type": "uint32_t", + "name": "interhunk_lines", + "comments": " The maximum number of unchanged lines between hunk boundaries before\n the hunks will be merged into one. Defaults to 0." }, { - "type": "int", - "name": "GIT_DIFF_FORMAT_PATCH_HEADER", - "comments": "just the file headers of patch
\n", - "value": 2 + "type": "git_oid_t", + "name": "oid_type", + "comments": " The object ID type to emit in diffs; this is used by functions\n that operate without a repository - namely `git_diff_buffers`,\n or `git_diff_blobs` and `git_diff_blob_to_buffer` when one blob\n is `NULL`.\n\n This may be omitted (set to `0`). If a repository is available,\n the object ID format of the repository will be used. If no\n repository is available then the default is `GIT_OID_SHA`.\n\n If this is specified and a repository is available, then the\n specified `oid_type` must match the repository's object ID\n format." }, { - "type": "int", - "name": "GIT_DIFF_FORMAT_RAW", - "comments": "like git diff --raw
\n", - "value": 3 + "type": "uint16_t", + "name": "id_abbrev", + "comments": " The abbreviation length to use when formatting object ids.\n Defaults to the value of 'core.abbrev' from the config, or 7 if unset." }, { - "type": "int", - "name": "GIT_DIFF_FORMAT_NAME_ONLY", - "comments": "like git diff --name-only
\n", - "value": 4 + "type": "git_off_t", + "name": "max_size", + "comments": " A size (in bytes) above which a blob will be marked as binary\n automatically; pass a negative value to disable.\n Defaults to 512MB." }, { - "type": "int", - "name": "GIT_DIFF_FORMAT_NAME_STATUS", - "comments": "like git diff --name-status
\n", - "value": 5 + "type": "const char *", + "name": "old_prefix", + "comments": " The virtual \"directory\" prefix for old file names in hunk headers.\n Default is \"a\"." + }, + { + "type": "const char *", + "name": "new_prefix", + "comments": " The virtual \"directory\" prefix for new file names in hunk headers.\n Defaults to \"b\"." } ], "used": { "returns": [], "needs": [ - "git_diff_print" + "git_diff_blob_to_buffer", + "git_diff_blobs", + "git_diff_buffers", + "git_diff_commit_as_email", + "git_diff_index_to_index", + "git_diff_index_to_workdir", + "git_diff_options_init", + "git_diff_tree_to_index", + "git_diff_tree_to_tree", + "git_diff_tree_to_workdir", + "git_diff_tree_to_workdir_with_index", + "git_patch_from_blob_and_buffer", + "git_patch_from_blobs", + "git_patch_from_buffers" ] } } ], [ - "git_diff_hunk", + "git_diff_parse_options", { - "decl": [ - "int old_start", - "int old_lines", - "int new_start", - "int new_lines", - "size_t header_len", - "char [128] header" - ], + "decl": ["unsigned int version", "git_oid_t oid_type"], "type": "struct", - "value": "git_diff_hunk", - "file": "diff.h", - "line": 501, - "lineto": 508, - "block": "int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header", + "value": "git_diff_parse_options", + "file": "git2/diff.h", + "line": 1322, + "lineto": 1325, + "block": "unsigned int version\ngit_oid_t oid_type", "tdef": "typedef", - "description": " Structure describing a hunk of a diff.", + "description": " Options for parsing a diff / patch file.", "comments": "", "fields": [ - { - "type": "int", - "name": "old_start", - "comments": " Starting line number in old_file " - }, - { - "type": "int", - "name": "old_lines", - "comments": " Number of lines in old_file " - }, - { - "type": "int", - "name": "new_start", - "comments": " Starting line number in new_file " - }, - { - "type": "int", - "name": "new_lines", - "comments": " Number of lines in new_file " - }, - { - "type": "size_t", - "name": "header_len", - "comments": " Number of bytes in header text " - }, - { - "type": "char [128]", - "name": "header", - "comments": " Header text, NUL-byte terminated " - } + { "type": "unsigned int", "name": "version", "comments": "" }, + { "type": "git_oid_t", "name": "oid_type", "comments": "" } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_diff_patchid_options", + { + "decl": ["unsigned int version"], + "type": "struct", + "value": "git_diff_patchid_options", + "file": "git2/diff.h", + "line": 1459, + "lineto": 1461, + "block": "unsigned int version", + "tdef": "typedef", + "description": " Patch ID options structure", + "comments": "Initialize with GIT_PATCHID_OPTIONS_INIT. Alternatively, you can use git_diff_patchid_options_init.
These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff. There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.
\n", + "description": " Formatting options for diff stats", + "comments": "", "fields": [ { "type": "int", - "name": "GIT_DIFF_LINE_CONTEXT", - "comments": "", - "value": 32 - }, - { - "type": "int", - "name": "GIT_DIFF_LINE_ADDITION", - "comments": "", - "value": 43 + "name": "GIT_DIFF_STATS_NONE", + "comments": "No stats
\n", + "value": 0 }, { "type": "int", - "name": "GIT_DIFF_LINE_DELETION", - "comments": "", - "value": 45 + "name": "GIT_DIFF_STATS_FULL", + "comments": "Full statistics, equivalent of --stat
Both files have no LF at end
\n", - "value": 61 + "name": "GIT_DIFF_STATS_SHORT", + "comments": "Short statistics, equivalent of --shortstat
Old has no LF at end, new does
\n", - "value": 62 + "name": "GIT_DIFF_STATS_NUMBER", + "comments": "Number statistics, equivalent of --numstat
Old has LF at end, new does not
\n", - "value": 60 - }, + "name": "GIT_DIFF_STATS_INCLUDE_SUMMARY", + "comments": "Extended header information such as creations, renames and mode changes, equivalent of --summary
We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.
\n", + "fields": [ { "type": "int", - "name": "GIT_DIFF_LINE_FILE_HDR", + "name": "GIT_DIRECTION_FETCH", "comments": "", - "value": 70 + "value": 0 }, { "type": "int", - "name": "GIT_DIFF_LINE_HUNK_HDR", + "name": "GIT_DIRECTION_PUSH", "comments": "", - "value": 72 - }, - { - "type": "int", - "name": "GIT_DIFF_LINE_BINARY", - "comments": "For "Binary files x and y differ"
\n", - "value": 66 + "value": 1 } ], "used": { - "returns": [], - "needs": [] + "returns": ["git_refspec_direction"], + "needs": ["git_remote_connect", "git_remote_connect_ext"] } } ], [ - "git_diff_option_t", + "git_email_create_flags_t", { "decl": [ - "GIT_DIFF_NORMAL", - "GIT_DIFF_REVERSE", - "GIT_DIFF_INCLUDE_IGNORED", - "GIT_DIFF_RECURSE_IGNORED_DIRS", - "GIT_DIFF_INCLUDE_UNTRACKED", - "GIT_DIFF_RECURSE_UNTRACKED_DIRS", - "GIT_DIFF_INCLUDE_UNMODIFIED", - "GIT_DIFF_INCLUDE_TYPECHANGE", - "GIT_DIFF_INCLUDE_TYPECHANGE_TREES", - "GIT_DIFF_IGNORE_FILEMODE", - "GIT_DIFF_IGNORE_SUBMODULES", - "GIT_DIFF_IGNORE_CASE", - "GIT_DIFF_INCLUDE_CASECHANGE", - "GIT_DIFF_DISABLE_PATHSPEC_MATCH", - "GIT_DIFF_SKIP_BINARY_CHECK", - "GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS", - "GIT_DIFF_UPDATE_INDEX", - "GIT_DIFF_INCLUDE_UNREADABLE", - "GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED", - "GIT_DIFF_FORCE_TEXT", - "GIT_DIFF_FORCE_BINARY", - "GIT_DIFF_IGNORE_WHITESPACE", - "GIT_DIFF_IGNORE_WHITESPACE_CHANGE", - "GIT_DIFF_IGNORE_WHITESPACE_EOL", - "GIT_DIFF_SHOW_UNTRACKED_CONTENT", - "GIT_DIFF_SHOW_UNMODIFIED", - "GIT_DIFF_PATIENCE", - "GIT_DIFF_MINIMAL", - "GIT_DIFF_SHOW_BINARY" + "GIT_EMAIL_CREATE_DEFAULT", + "GIT_EMAIL_CREATE_OMIT_NUMBERS", + "GIT_EMAIL_CREATE_ALWAYS_NUMBER", + "GIT_EMAIL_CREATE_NO_RENAMES" ], "type": "enum", - "file": "diff.h", - "line": 72, - "lineto": 209, - "block": "GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY", + "file": "git2/email.h", + "line": 24, + "lineto": 39, + "block": "GIT_EMAIL_CREATE_DEFAULT\nGIT_EMAIL_CREATE_OMIT_NUMBERS\nGIT_EMAIL_CREATE_ALWAYS_NUMBER\nGIT_EMAIL_CREATE_NO_RENAMES", "tdef": "typedef", - "description": " Flags for diff options. A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.", + "description": " Formatting options for diff e-mail generation", "comments": "", "fields": [ { "type": "int", - "name": "GIT_DIFF_NORMAL", - "comments": "Normal diff, the default
\n", + "name": "GIT_EMAIL_CREATE_DEFAULT", + "comments": "Normal patch, the default
\n", "value": 0 }, { "type": "int", - "name": "GIT_DIFF_REVERSE", - "comments": "Reverse the sides of the diff
\n", + "name": "GIT_EMAIL_CREATE_OMIT_NUMBERS", + "comments": "Do not include patch numbers in the subject prefix.
\n", "value": 1 }, { "type": "int", - "name": "GIT_DIFF_INCLUDE_IGNORED", - "comments": "Include ignored files in the diff
\n", + "name": "GIT_EMAIL_CREATE_ALWAYS_NUMBER", + "comments": "Include numbers in the subject prefix even when the\n patch is for a single commit (1/1).
\n", "value": 2 }, { "type": "int", - "name": "GIT_DIFF_RECURSE_IGNORED_DIRS", - "comments": "Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n will be marked with only a single entry in the diff; this flag\n adds all files under the directory as IGNORED entries, too.
\n", + "name": "GIT_EMAIL_CREATE_NO_RENAMES", + "comments": "Do not perform rename or similarity detection.
\n", "value": 4 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_email_create_options", + { + "decl": [ + "unsigned int version", + "uint32_t flags", + "git_diff_options diff_opts", + "git_diff_find_options diff_find_opts", + "const char * subject_prefix", + "size_t start_number", + "size_t reroll_number" + ], + "type": "struct", + "value": "git_email_create_options", + "file": "git2/email.h", + "line": 44, + "lineto": 72, + "block": "unsigned int version\nuint32_t flags\ngit_diff_options diff_opts\ngit_diff_find_options diff_find_opts\nconst char * subject_prefix\nsize_t start_number\nsize_t reroll_number", + "tdef": "typedef", + "description": " Options for controlling the formatting of the generated e-mail.", + "comments": "", + "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, + { + "type": "uint32_t", + "name": "flags", + "comments": " see `git_email_create_flags_t` above " }, { - "type": "int", - "name": "GIT_DIFF_INCLUDE_UNTRACKED", - "comments": "Include untracked files in the diff
\n", - "value": 8 + "type": "git_diff_options", + "name": "diff_opts", + "comments": " Options to use when creating diffs " }, { - "type": "int", - "name": "GIT_DIFF_RECURSE_UNTRACKED_DIRS", - "comments": "Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n directory will be marked with only a single entry in the diff\n (a la what core Git does in git status); this flag adds all\n files under untracked directories as UNTRACKED entries, too.
Include unmodified files in the diff
\n", - "value": 32 + "type": "const char *", + "name": "subject_prefix", + "comments": " The subject prefix, by default \"PATCH\". If set to an empty\n string (\"\") then only the patch numbers will be shown in the\n prefix. If the subject_prefix is empty and patch numbers\n are not being shown, the prefix will be omitted entirely." }, { - "type": "int", - "name": "GIT_DIFF_INCLUDE_TYPECHANGE", - "comments": "Normally, a type change between files will be converted into a\n DELETED record for the old and an ADDED record for the new; this\n options enabled the generation of TYPECHANGE delta records.
\n", - "value": 64 + "type": "size_t", + "name": "start_number", + "comments": " The starting patch number; this cannot be 0. By default,\n this is 1." }, { - "type": "int", - "name": "GIT_DIFF_INCLUDE_TYPECHANGE_TREES", - "comments": "Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob->tree changes still\n generally show as a DELETED blob. This flag tries to correctly\n label blob->tree transitions as TYPECHANGE records with new_file's\n mode set to tree. Note: the tree SHA will not be available.
\n", - "value": 128 + "type": "size_t", + "name": "reroll_number", + "comments": " The \"re-roll\" number. By default, there is no re-roll. " + } + ], + "used": { "returns": [], "needs": ["git_email_create_from_commit"] } + } + ], + [ + "git_error", + { + "decl": ["char * message", "int klass"], + "type": "struct", + "value": "git_error", + "file": "git2/errors.h", + "line": 125, + "lineto": 128, + "block": "char * message\nint klass", + "tdef": "typedef", + "description": " Structure to store extra details of the last error that occurred.", + "comments": "This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library
\n", + "fields": [ + { + "type": "char *", + "name": "message", + "comments": " The error message for the last error. " }, { "type": "int", - "name": "GIT_DIFF_IGNORE_FILEMODE", - "comments": "Ignore file mode changes
\n", - "value": 256 + "name": "klass", + "comments": " The category of the last error. \n\n git_error_t " + } + ], + "used": { "returns": ["git_error_last", "giterr_last"], "needs": [] } + } + ], + [ + "git_error_code", + { + "decl": [ + "GIT_OK", + "GIT_ERROR", + "GIT_ENOTFOUND", + "GIT_EEXISTS", + "GIT_EAMBIGUOUS", + "GIT_EBUFS", + "GIT_EUSER", + "GIT_EBAREREPO", + "GIT_EUNBORNBRANCH", + "GIT_EUNMERGED", + "GIT_ENONFASTFORWARD", + "GIT_EINVALIDSPEC", + "GIT_ECONFLICT", + "GIT_ELOCKED", + "GIT_EMODIFIED", + "GIT_EAUTH", + "GIT_ECERTIFICATE", + "GIT_EAPPLIED", + "GIT_EPEEL", + "GIT_EEOF", + "GIT_EINVALID", + "GIT_EUNCOMMITTED", + "GIT_EDIRECTORY", + "GIT_EMERGECONFLICT", + "GIT_PASSTHROUGH", + "GIT_ITEROVER", + "GIT_RETRY", + "GIT_EMISMATCH", + "GIT_EINDEXDIRTY", + "GIT_EAPPLYFAIL", + "GIT_EOWNER", + "GIT_TIMEOUT", + "GIT_EUNCHANGED", + "GIT_ENOTSUPPORTED", + "GIT_EREADONLY" + ], + "type": "enum", + "file": "git2/errors.h", + "line": 21, + "lineto": 73, + "block": "GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER\nGIT_RETRY\nGIT_EMISMATCH\nGIT_EINDEXDIRTY\nGIT_EAPPLYFAIL\nGIT_EOWNER\nGIT_TIMEOUT\nGIT_EUNCHANGED\nGIT_ENOTSUPPORTED\nGIT_EREADONLY", + "tdef": "typedef", + "description": " Generic return codes ", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_OK", + "comments": "No error occurred; the call was successful.
\n", + "value": 0 }, { "type": "int", - "name": "GIT_DIFF_IGNORE_SUBMODULES", - "comments": "Treat all submodules as unmodified
\n", - "value": 512 + "name": "GIT_ERROR", + "comments": "An error occurred; call git_error_last for more information.
Use case insensitive filename comparisons
\n", - "value": 1024 + "name": "GIT_ENOTFOUND", + "comments": "Requested object could not be found.
\n", + "value": -3 }, { "type": "int", - "name": "GIT_DIFF_INCLUDE_CASECHANGE", - "comments": "May be combined with GIT_DIFF_IGNORE_CASE to specify that a file\n that has changed case will be returned as an add/delete pair.
Object exists preventing operation.
\n", + "value": -4 }, { "type": "int", - "name": "GIT_DIFF_DISABLE_PATHSPEC_MATCH", - "comments": "If the pathspec is set in the diff options, this flags indicates\n that the paths will be treated as literal paths instead of\n fnmatch patterns. Each path in the list must either be a full\n path to a file or a directory. (A trailing slash indicates that\n the path will only match a directory). If a directory is\n specified, all children will be included.
\n", - "value": 4096 + "name": "GIT_EAMBIGUOUS", + "comments": "More than one object matches.
\n", + "value": -5 }, { "type": "int", - "name": "GIT_DIFF_SKIP_BINARY_CHECK", - "comments": "Disable updating of the binary flag in delta records. This is\n useful when iterating over a diff if you don't need hunk and data\n callbacks and want to avoid having to load file completely.
Output buffer too short to hold data.
\n", + "value": -6 }, { "type": "int", - "name": "GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS", - "comments": "When diff finds an untracked directory, to match the behavior of\n core Git, it scans the contents for IGNORED and UNTRACKED files.\n If all contents are IGNORED, then the directory is IGNORED; if\n any contents are not IGNORED, then the directory is UNTRACKED.\n This is extra work that may not matter in many cases. This flag\n turns off that scan and immediately labels an untracked directory\n as UNTRACKED (changing the behavior to not match core Git).
\n", - "value": 16384 + "name": "GIT_EUSER", + "comments": "GIT_EUSER is a special error that is never generated by libgit2\n code. You can return it from a callback (e.g to stop an iteration)\n to know that it was generated by the callback and not by libgit2.
\n", + "value": -7 }, { "type": "int", - "name": "GIT_DIFF_UPDATE_INDEX", - "comments": "When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index. Note:\n without this flag, diff will always leave the index untouched.
\n", - "value": 32768 + "name": "GIT_EBAREREPO", + "comments": "Operation not allowed on bare repository.
\n", + "value": -8 }, { "type": "int", - "name": "GIT_DIFF_INCLUDE_UNREADABLE", - "comments": "Include unreadable files in the diff
\n", - "value": 65536 + "name": "GIT_EUNBORNBRANCH", + "comments": "HEAD refers to branch with no commits.
\n", + "value": -9 }, { "type": "int", - "name": "GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED", - "comments": "Include unreadable files in the diff
\n", - "value": 131072 + "name": "GIT_EUNMERGED", + "comments": "Merge in progress prevented operation
\n", + "value": -10 }, { "type": "int", - "name": "GIT_DIFF_FORCE_TEXT", - "comments": "Treat all files as text, disabling binary attributes \n&\n detection
\n", - "value": 1048576 + "name": "GIT_ENONFASTFORWARD", + "comments": "Reference was not fast-forwardable
\n", + "value": -11 }, { "type": "int", - "name": "GIT_DIFF_FORCE_BINARY", - "comments": "Treat all files as binary, disabling text diffs
\n", - "value": 2097152 + "name": "GIT_EINVALIDSPEC", + "comments": "Name/ref spec was not in a valid format
\n", + "value": -12 }, { "type": "int", - "name": "GIT_DIFF_IGNORE_WHITESPACE", - "comments": "Ignore all whitespace
\n", - "value": 4194304 + "name": "GIT_ECONFLICT", + "comments": "Checkout conflicts prevented operation
\n", + "value": -13 }, { "type": "int", - "name": "GIT_DIFF_IGNORE_WHITESPACE_CHANGE", - "comments": "Ignore changes in amount of whitespace
\n", - "value": 8388608 + "name": "GIT_ELOCKED", + "comments": "Lock file prevented operation
\n", + "value": -14 }, { "type": "int", - "name": "GIT_DIFF_IGNORE_WHITESPACE_EOL", - "comments": "Ignore whitespace at end of line
\n", - "value": 16777216 + "name": "GIT_EMODIFIED", + "comments": "Reference value does not match expected
\n", + "value": -15 }, { "type": "int", - "name": "GIT_DIFF_SHOW_UNTRACKED_CONTENT", - "comments": "When generating patch text, include the content of untracked\n files. This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS. Add that\n flag if you want the content of every single UNTRACKED file.
\n", - "value": 33554432 + "name": "GIT_EAUTH", + "comments": "Authentication error
\n", + "value": -16 }, { "type": "int", - "name": "GIT_DIFF_SHOW_UNMODIFIED", - "comments": "When generating output, include the names of unmodified files if\n they are included in the git_diff. Normally these are skipped in\n the formats that list files (e.g. name-only, name-status, raw).\n Even with this, these will not be included in patch format.
\n", - "value": 67108864 + "name": "GIT_ECERTIFICATE", + "comments": "Server certificate is invalid
\n", + "value": -17 }, { "type": "int", - "name": "GIT_DIFF_PATIENCE", - "comments": "Use the "patience diff" algorithm
\n", - "value": 268435456 + "name": "GIT_EAPPLIED", + "comments": "Patch/merge has already been applied
\n", + "value": -18 }, { "type": "int", - "name": "GIT_DIFF_MINIMAL", - "comments": "Take extra time to find minimal diff
\n", - "value": 536870912 + "name": "GIT_EPEEL", + "comments": "The requested peel operation is not possible
\n", + "value": -19 }, { "type": "int", - "name": "GIT_DIFF_SHOW_BINARY", - "comments": "Include the necessary deflate / delta information so that git-apply\n can apply given diff information to binary files.
Setting all values of the structure to zero will yield the default values. Similarly, passing NULL for the options structure will give the defaults. The default values are marked below.
\n\nflags is a combination of the git_diff_option_t values above - context_lines is the number of unchanged lines that define the boundary of a hunk (and to display before and after) - interhunk_lines is the maximum number of unchanged lines between hunk boundaries before the hunks will be merged into a one. - old_prefix is the virtual "directory" to prefix to old file names in hunk headers (default "a") - new_prefix is the virtual "directory" to prefix to new file names in hunk headers (default "b") - pathspec is an array of paths / fnmatch patterns to constrain diff - max_size is a file size (in bytes) above which a blob will be marked as binary automatically; pass a negative value to disable. - notify_cb is an optional callback function, notifying the consumer of changes to the diff as new deltas are added. - progress_cb is an optional callback function, notifying the consumer of which files are being examined as the diff is generated. - payload is the payload to pass to the callback functions. - ignore_submodules overrides the submodule ignore setting for all submodules in the diff.Unexpected EOF
\n", + "value": -20 }, { - "type": "git_submodule_ignore_t", - "name": "ignore_submodules", - "comments": " submodule ignore rule " + "type": "int", + "name": "GIT_EINVALID", + "comments": "Invalid operation or input
\n", + "value": -21 }, { - "type": "git_strarray", - "name": "pathspec", - "comments": " defaults to include all paths " + "type": "int", + "name": "GIT_EUNCOMMITTED", + "comments": "Uncommitted changes in index prevented operation
\n", + "value": -22 }, { - "type": "git_diff_notify_cb", - "name": "notify_cb", - "comments": "" + "type": "int", + "name": "GIT_EDIRECTORY", + "comments": "The operation is not valid for a directory
\n", + "value": -23 }, { - "type": "git_diff_progress_cb", - "name": "progress_cb", - "comments": "" + "type": "int", + "name": "GIT_EMERGECONFLICT", + "comments": "A merge conflict exists and cannot continue
\n", + "value": -24 }, { - "type": "void *", - "name": "payload", - "comments": "" + "type": "int", + "name": "GIT_PASSTHROUGH", + "comments": "A user-configured callback refused to act
\n", + "value": -30 }, { - "type": "uint32_t", - "name": "context_lines", - "comments": " defaults to 3 " + "type": "int", + "name": "GIT_ITEROVER", + "comments": "Signals end of iteration with iterator
\n", + "value": -31 }, { - "type": "uint32_t", - "name": "interhunk_lines", - "comments": " defaults to 0 " + "type": "int", + "name": "GIT_RETRY", + "comments": "Internal only
\n", + "value": -32 }, { - "type": "uint16_t", - "name": "id_abbrev", - "comments": " default 'core.abbrev' or 7 if unset " + "type": "int", + "name": "GIT_EMISMATCH", + "comments": "Hashsum mismatch in object
\n", + "value": -33 }, { - "type": "git_off_t", - "name": "max_size", - "comments": " defaults to 512MB " + "type": "int", + "name": "GIT_EINDEXDIRTY", + "comments": "Unsaved changes in the index would be overwritten
\n", + "value": -34 }, { - "type": "const char *", - "name": "old_prefix", - "comments": " defaults to \"a\" " + "type": "int", + "name": "GIT_EAPPLYFAIL", + "comments": "Patch application failed
\n", + "value": -35 }, { - "type": "const char *", - "name": "new_prefix", - "comments": " defaults to \"b\" " - } - ], - "used": { - "returns": [], - "needs": [ - "git_diff_blob_to_buffer", - "git_diff_blobs", - "git_diff_buffers", - "git_diff_commit_as_email", - "git_diff_index_to_index", - "git_diff_index_to_workdir", - "git_diff_init_options", - "git_diff_tree_to_index", - "git_diff_tree_to_tree", - "git_diff_tree_to_workdir", - "git_diff_tree_to_workdir_with_index", - "git_patch_from_blob_and_buffer", - "git_patch_from_blobs", - "git_patch_from_buffers" - ] - } - } - ], - [ - "git_diff_similarity_metric", - { - "decl": [ - "int (*)(void **, const git_diff_file *, const char *, void *) file_signature", - "int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature", - "void (*)(void *, void *) free_signature", - "int (*)(int *, void *, void *, void *) similarity", - "void * payload" - ], - "type": "struct", - "value": "git_diff_similarity_metric", - "file": "diff.h", - "line": 649, - "lineto": 659, - "block": "int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload", - "tdef": "typedef", - "description": " Pluggable similarity metric", - "comments": "", - "fields": [ - { - "type": "int (*)(void **, const git_diff_file *, const char *, void *)", - "name": "file_signature", - "comments": "" + "type": "int", + "name": "GIT_EOWNER", + "comments": "The object is not owned by the current user
\n", + "value": -36 }, { - "type": "int (*)(void **, const git_diff_file *, const char *, size_t, void *)", - "name": "buffer_signature", - "comments": "" + "type": "int", + "name": "GIT_TIMEOUT", + "comments": "The operation timed out
\n", + "value": -37 }, - { - "type": "void (*)(void *, void *)", - "name": "free_signature", - "comments": "" + { + "type": "int", + "name": "GIT_EUNCHANGED", + "comments": "There were no changes
\n", + "value": -38 }, { - "type": "int (*)(int *, void *, void *, void *)", - "name": "similarity", - "comments": "" + "type": "int", + "name": "GIT_ENOTSUPPORTED", + "comments": "An option is not supported
\n", + "value": -39 }, { - "type": "void *", - "name": "payload", - "comments": "" + "type": "int", + "name": "GIT_EREADONLY", + "comments": "The subject is read-only
\n", + "value": -40 } ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_diff_stats", - { - "decl": "git_diff_stats", - "type": "struct", - "value": "git_diff_stats", - "file": "diff.h", - "line": 1174, - "lineto": 1174, - "tdef": "typedef", - "description": " This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.", - "comments": "", - "used": { - "returns": [], - "needs": [ - "git_diff_get_stats", - "git_diff_stats_deletions", - "git_diff_stats_files_changed", - "git_diff_stats_free", - "git_diff_stats_insertions", - "git_diff_stats_to_buf" - ] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_diff_stats_format_t", + "git_error_t", { "decl": [ - "GIT_DIFF_STATS_NONE", - "GIT_DIFF_STATS_FULL", - "GIT_DIFF_STATS_SHORT", - "GIT_DIFF_STATS_NUMBER", - "GIT_DIFF_STATS_INCLUDE_SUMMARY" + "GIT_ERROR_NONE", + "GIT_ERROR_NOMEMORY", + "GIT_ERROR_OS", + "GIT_ERROR_INVALID", + "GIT_ERROR_REFERENCE", + "GIT_ERROR_ZLIB", + "GIT_ERROR_REPOSITORY", + "GIT_ERROR_CONFIG", + "GIT_ERROR_REGEX", + "GIT_ERROR_ODB", + "GIT_ERROR_INDEX", + "GIT_ERROR_OBJECT", + "GIT_ERROR_NET", + "GIT_ERROR_TAG", + "GIT_ERROR_TREE", + "GIT_ERROR_INDEXER", + "GIT_ERROR_SSL", + "GIT_ERROR_SUBMODULE", + "GIT_ERROR_THREAD", + "GIT_ERROR_STASH", + "GIT_ERROR_CHECKOUT", + "GIT_ERROR_FETCHHEAD", + "GIT_ERROR_MERGE", + "GIT_ERROR_SSH", + "GIT_ERROR_FILTER", + "GIT_ERROR_REVERT", + "GIT_ERROR_CALLBACK", + "GIT_ERROR_CHERRYPICK", + "GIT_ERROR_DESCRIBE", + "GIT_ERROR_REBASE", + "GIT_ERROR_FILESYSTEM", + "GIT_ERROR_PATCH", + "GIT_ERROR_WORKTREE", + "GIT_ERROR_SHA", + "GIT_ERROR_HTTP", + "GIT_ERROR_INTERNAL", + "GIT_ERROR_GRAFTS" ], "type": "enum", - "file": "diff.h", - "line": 1179, - "lineto": 1194, - "block": "GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY", + "file": "git2/errors.h", + "line": 79, + "lineto": 117, + "block": "GIT_ERROR_NONE\nGIT_ERROR_NOMEMORY\nGIT_ERROR_OS\nGIT_ERROR_INVALID\nGIT_ERROR_REFERENCE\nGIT_ERROR_ZLIB\nGIT_ERROR_REPOSITORY\nGIT_ERROR_CONFIG\nGIT_ERROR_REGEX\nGIT_ERROR_ODB\nGIT_ERROR_INDEX\nGIT_ERROR_OBJECT\nGIT_ERROR_NET\nGIT_ERROR_TAG\nGIT_ERROR_TREE\nGIT_ERROR_INDEXER\nGIT_ERROR_SSL\nGIT_ERROR_SUBMODULE\nGIT_ERROR_THREAD\nGIT_ERROR_STASH\nGIT_ERROR_CHECKOUT\nGIT_ERROR_FETCHHEAD\nGIT_ERROR_MERGE\nGIT_ERROR_SSH\nGIT_ERROR_FILTER\nGIT_ERROR_REVERT\nGIT_ERROR_CALLBACK\nGIT_ERROR_CHERRYPICK\nGIT_ERROR_DESCRIBE\nGIT_ERROR_REBASE\nGIT_ERROR_FILESYSTEM\nGIT_ERROR_PATCH\nGIT_ERROR_WORKTREE\nGIT_ERROR_SHA\nGIT_ERROR_HTTP\nGIT_ERROR_INTERNAL\nGIT_ERROR_GRAFTS", "tdef": "typedef", - "description": " Formatting options for diff stats", + "description": " Error classes are the category of error. They reflect the area of the\n code where an error occurred.", "comments": "", "fields": [ { "type": "int", - "name": "GIT_DIFF_STATS_NONE", - "comments": "No stats
\n", + "name": "GIT_ERROR_NONE", + "comments": "", "value": 0 }, { "type": "int", - "name": "GIT_DIFF_STATS_FULL", - "comments": "Full statistics, equivalent of --stat
Short statistics, equivalent of --shortstat
Number statistics, equivalent of --numstat
Extended header information such as creations, renames and mode changes, equivalent of --summary
We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.
\n", - "fields": [ + }, { "type": "int", - "name": "GIT_DIRECTION_FETCH", + "name": "GIT_ERROR_ODB", "comments": "", - "value": 0 + "value": 9 }, { "type": "int", - "name": "GIT_DIRECTION_PUSH", + "name": "GIT_ERROR_INDEX", "comments": "", - "value": 1 - } - ], - "used": { - "returns": [ - "git_refspec_direction" - ], - "needs": [ - "git_remote_connect" - ] - } - } - ], - [ - "git_error", - { - "decl": [ - "char * message", - "int klass" - ], - "type": "struct", - "value": "git_error", - "file": "errors.h", - "line": 64, - "lineto": 67, - "block": "char * message\nint klass", - "tdef": "typedef", - "description": " Structure to store extra details of the last error that occurred.", - "comments": "This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library
\n", - "fields": [ + "value": 10 + }, { - "type": "char *", - "name": "message", - "comments": "" + "type": "int", + "name": "GIT_ERROR_OBJECT", + "comments": "", + "value": 11 }, { "type": "int", - "name": "klass", - "comments": "" - } - ], - "used": { - "returns": [ - "giterr_last" - ], - "needs": [] - } - } - ], - [ - "git_error_code", - { - "decl": [ - "GIT_OK", - "GIT_ERROR", - "GIT_ENOTFOUND", - "GIT_EEXISTS", - "GIT_EAMBIGUOUS", - "GIT_EBUFS", - "GIT_EUSER", - "GIT_EBAREREPO", - "GIT_EUNBORNBRANCH", - "GIT_EUNMERGED", - "GIT_ENONFASTFORWARD", - "GIT_EINVALIDSPEC", - "GIT_ECONFLICT", - "GIT_ELOCKED", - "GIT_EMODIFIED", - "GIT_EAUTH", - "GIT_ECERTIFICATE", - "GIT_EAPPLIED", - "GIT_EPEEL", - "GIT_EEOF", - "GIT_EINVALID", - "GIT_EUNCOMMITTED", - "GIT_EDIRECTORY", - "GIT_EMERGECONFLICT", - "GIT_PASSTHROUGH", - "GIT_ITEROVER" - ], - "type": "enum", - "file": "errors.h", - "line": 21, - "lineto": 56, - "block": "GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER", - "tdef": "typedef", - "description": " Generic return codes ", - "comments": "", - "fields": [ + "name": "GIT_ERROR_NET", + "comments": "", + "value": 12 + }, { "type": "int", - "name": "GIT_OK", - "comments": "No error
\n", - "value": 0 + "name": "GIT_ERROR_TAG", + "comments": "", + "value": 13 }, { "type": "int", - "name": "GIT_ERROR", - "comments": "Generic error
\n", - "value": -1 + "name": "GIT_ERROR_TREE", + "comments": "", + "value": 14 }, { "type": "int", - "name": "GIT_ENOTFOUND", - "comments": "Requested object could not be found
\n", - "value": -3 + "name": "GIT_ERROR_INDEXER", + "comments": "", + "value": 15 }, { "type": "int", - "name": "GIT_EEXISTS", - "comments": "Object exists preventing operation
\n", - "value": -4 + "name": "GIT_ERROR_SSL", + "comments": "", + "value": 16 }, { "type": "int", - "name": "GIT_EAMBIGUOUS", - "comments": "More than one object matches
\n", - "value": -5 + "name": "GIT_ERROR_SUBMODULE", + "comments": "", + "value": 17 + }, + { + "type": "int", + "name": "GIT_ERROR_THREAD", + "comments": "", + "value": 18 + }, + { + "type": "int", + "name": "GIT_ERROR_STASH", + "comments": "", + "value": 19 + }, + { + "type": "int", + "name": "GIT_ERROR_CHECKOUT", + "comments": "", + "value": 20 + }, + { + "type": "int", + "name": "GIT_ERROR_FETCHHEAD", + "comments": "", + "value": 21 + }, + { + "type": "int", + "name": "GIT_ERROR_MERGE", + "comments": "", + "value": 22 + }, + { + "type": "int", + "name": "GIT_ERROR_SSH", + "comments": "", + "value": 23 + }, + { + "type": "int", + "name": "GIT_ERROR_FILTER", + "comments": "", + "value": 24 + }, + { + "type": "int", + "name": "GIT_ERROR_REVERT", + "comments": "", + "value": 25 + }, + { + "type": "int", + "name": "GIT_ERROR_CALLBACK", + "comments": "", + "value": 26 + }, + { + "type": "int", + "name": "GIT_ERROR_CHERRYPICK", + "comments": "", + "value": 27 }, { "type": "int", - "name": "GIT_EBUFS", - "comments": "Output buffer too short to hold data
\n", - "value": -6 + "name": "GIT_ERROR_DESCRIBE", + "comments": "", + "value": 28 }, { "type": "int", - "name": "GIT_EUSER", + "name": "GIT_ERROR_REBASE", "comments": "", - "value": -7 + "value": 29 }, { "type": "int", - "name": "GIT_EBAREREPO", - "comments": "Operation not allowed on bare repository
\n", - "value": -8 + "name": "GIT_ERROR_FILESYSTEM", + "comments": "", + "value": 30 }, { "type": "int", - "name": "GIT_EUNBORNBRANCH", - "comments": "HEAD refers to branch with no commits
\n", - "value": -9 + "name": "GIT_ERROR_PATCH", + "comments": "", + "value": 31 }, { "type": "int", - "name": "GIT_EUNMERGED", - "comments": "Merge in progress prevented operation
\n", - "value": -10 + "name": "GIT_ERROR_WORKTREE", + "comments": "", + "value": 32 }, { "type": "int", - "name": "GIT_ENONFASTFORWARD", - "comments": "Reference was not fast-forwardable
\n", - "value": -11 + "name": "GIT_ERROR_SHA", + "comments": "", + "value": 33 }, { "type": "int", - "name": "GIT_EINVALIDSPEC", - "comments": "Name/ref spec was not in a valid format
\n", - "value": -12 + "name": "GIT_ERROR_HTTP", + "comments": "", + "value": 34 }, { "type": "int", - "name": "GIT_ECONFLICT", - "comments": "Checkout conflicts prevented operation
\n", - "value": -13 + "name": "GIT_ERROR_INTERNAL", + "comments": "", + "value": 35 }, { "type": "int", - "name": "GIT_ELOCKED", - "comments": "Lock file prevented operation
\n", - "value": -14 - }, + "name": "GIT_ERROR_GRAFTS", + "comments": "", + "value": 36 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_feature_t", + { + "decl": [ + "GIT_FEATURE_THREADS", + "GIT_FEATURE_HTTPS", + "GIT_FEATURE_SSH", + "GIT_FEATURE_NSEC", + "GIT_FEATURE_HTTP_PARSER", + "GIT_FEATURE_REGEX", + "GIT_FEATURE_I18N", + "GIT_FEATURE_AUTH_NTLM", + "GIT_FEATURE_AUTH_NEGOTIATE", + "GIT_FEATURE_COMPRESSION", + "GIT_FEATURE_SHA1", + "GIT_FEATURE_SHA256" + ], + "type": "enum", + "file": "git2/common.h", + "line": 138, + "lineto": 177, + "block": "GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC\nGIT_FEATURE_HTTP_PARSER\nGIT_FEATURE_REGEX\nGIT_FEATURE_I18N\nGIT_FEATURE_AUTH_NTLM\nGIT_FEATURE_AUTH_NEGOTIATE\nGIT_FEATURE_COMPRESSION\nGIT_FEATURE_SHA1\nGIT_FEATURE_SHA256", + "tdef": "typedef", + "description": " Configurable features of libgit2; either optional settings (like\n threading), or features that can be enabled by one of a number of\n different backend \"providers\" (like HTTPS, which can be provided by\n OpenSSL, mbedTLS, or system libraries).", + "comments": "", + "fields": [ { "type": "int", - "name": "GIT_EMODIFIED", - "comments": "Reference value does not match expected
\n", - "value": -15 + "name": "GIT_FEATURE_THREADS", + "comments": "libgit2 is thread-aware and can be used from multiple threads\n (as described in the documentation).
\n", + "value": 1 }, { "type": "int", - "name": "GIT_EAUTH", - "comments": "Authentication error
\n", - "value": -16 + "name": "GIT_FEATURE_HTTPS", + "comments": "HTTPS remotes
\n", + "value": 2 }, { "type": "int", - "name": "GIT_ECERTIFICATE", - "comments": "Server certificate is invalid
\n", - "value": -17 + "name": "GIT_FEATURE_SSH", + "comments": "SSH remotes
\n", + "value": 4 }, { "type": "int", - "name": "GIT_EAPPLIED", - "comments": "Patch/merge has already been applied
\n", - "value": -18 + "name": "GIT_FEATURE_NSEC", + "comments": "Sub-second resolution in index timestamps
\n", + "value": 8 }, { "type": "int", - "name": "GIT_EPEEL", - "comments": "The requested peel operation is not possible
\n", - "value": -19 + "name": "GIT_FEATURE_HTTP_PARSER", + "comments": "HTTP parsing; always available
\n", + "value": 16 }, { "type": "int", - "name": "GIT_EEOF", - "comments": "Unexpected EOF
\n", - "value": -20 + "name": "GIT_FEATURE_REGEX", + "comments": "Regular expression support; always available
\n", + "value": 32 }, { "type": "int", - "name": "GIT_EINVALID", - "comments": "Invalid operation or input
\n", - "value": -21 + "name": "GIT_FEATURE_I18N", + "comments": "Internationalization support for filename translation
\n", + "value": 64 }, { "type": "int", - "name": "GIT_EUNCOMMITTED", - "comments": "Uncommitted changes in index prevented operation
\n", - "value": -22 + "name": "GIT_FEATURE_AUTH_NTLM", + "comments": "NTLM support over HTTPS
\n", + "value": 128 }, { "type": "int", - "name": "GIT_EDIRECTORY", - "comments": "The operation is not valid for a directory
\n", - "value": -23 + "name": "GIT_FEATURE_AUTH_NEGOTIATE", + "comments": "Kerberos (SPNEGO) authentication support over HTTPS
\n", + "value": 256 }, { "type": "int", - "name": "GIT_EMERGECONFLICT", - "comments": "A merge conflict exists and cannot continue
\n", - "value": -24 + "name": "GIT_FEATURE_COMPRESSION", + "comments": "zlib support; always available
\n", + "value": 512 }, { "type": "int", - "name": "GIT_PASSTHROUGH", - "comments": "Internal only
\n", - "value": -30 + "name": "GIT_FEATURE_SHA1", + "comments": "SHA1 object support; always available
\n", + "value": 1024 }, { "type": "int", - "name": "GIT_ITEROVER", - "comments": "Signals end of iteration with iterator
\n", - "value": -31 + "name": "GIT_FEATURE_SHA256", + "comments": "SHA256 object support
\n", + "value": 2048 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": ["git_libgit2_feature_backend"] } } ], [ - "git_error_t", + "git_fetch_depth_t", { - "decl": [ - "GITERR_NONE", - "GITERR_NOMEMORY", - "GITERR_OS", - "GITERR_INVALID", - "GITERR_REFERENCE", - "GITERR_ZLIB", - "GITERR_REPOSITORY", - "GITERR_CONFIG", - "GITERR_REGEX", - "GITERR_ODB", - "GITERR_INDEX", - "GITERR_OBJECT", - "GITERR_NET", - "GITERR_TAG", - "GITERR_TREE", - "GITERR_INDEXER", - "GITERR_SSL", - "GITERR_SUBMODULE", - "GITERR_THREAD", - "GITERR_STASH", - "GITERR_CHECKOUT", - "GITERR_FETCHHEAD", - "GITERR_MERGE", - "GITERR_SSH", - "GITERR_FILTER", - "GITERR_REVERT", - "GITERR_CALLBACK", - "GITERR_CHERRYPICK", - "GITERR_DESCRIBE", - "GITERR_REBASE", - "GITERR_FILESYSTEM" - ], + "decl": ["GIT_FETCH_DEPTH_FULL", "GIT_FETCH_DEPTH_UNSHALLOW"], "type": "enum", - "file": "errors.h", - "line": 70, - "lineto": 102, - "block": "GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM", + "file": "git2/remote.h", + "line": 760, + "lineto": 766, + "block": "GIT_FETCH_DEPTH_FULL\nGIT_FETCH_DEPTH_UNSHALLOW", "tdef": "typedef", - "description": " Error classes ", + "description": " Constants for fetch depth (shallowness of fetch). ", "comments": "", "fields": [ { "type": "int", - "name": "GITERR_NONE", - "comments": "", + "name": "GIT_FETCH_DEPTH_FULL", + "comments": "The fetch is "full" (not shallow). This is the default.
\n", "value": 0 }, { "type": "int", - "name": "GITERR_NOMEMORY", - "comments": "", - "value": 1 + "name": "GIT_FETCH_DEPTH_UNSHALLOW", + "comments": "The fetch should "unshallow" and fetch missing data.
\n", + "value": 2147483647 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_fetch_options", + { + "decl": [ + "int version", + "git_remote_callbacks callbacks", + "git_fetch_prune_t prune", + "unsigned int update_fetchhead", + "git_remote_autotag_option_t download_tags", + "git_proxy_options proxy_opts", + "int depth", + "git_remote_redirect_t follow_redirects", + "git_strarray custom_headers" + ], + "type": "struct", + "value": "git_fetch_options", + "file": "git2/remote.h", + "line": 776, + "lineto": 828, + "block": "int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nunsigned int update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\nint depth\ngit_remote_redirect_t follow_redirects\ngit_strarray custom_headers", + "tdef": "typedef", + "description": " Fetch options structure.", + "comments": "Zero out for defaults. Initialize with GIT_FETCH_OPTIONS_INIT macro to correctly set the version field. E.g.
git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n\n",
+ "fields": [
+ { "type": "int", "name": "version", "comments": "" },
+ {
+ "type": "git_remote_callbacks",
+ "name": "callbacks",
+ "comments": " Callbacks to use for this fetch operation"
},
{
- "type": "int",
- "name": "GITERR_OS",
- "comments": "",
- "value": 2
+ "type": "git_fetch_prune_t",
+ "name": "prune",
+ "comments": " Whether to perform a prune after the fetch"
},
{
- "type": "int",
- "name": "GITERR_INVALID",
- "comments": "",
- "value": 3
+ "type": "unsigned int",
+ "name": "update_fetchhead",
+ "comments": " How to handle reference updates; see `git_remote_update_flags`."
},
{
- "type": "int",
- "name": "GITERR_REFERENCE",
- "comments": "",
- "value": 4
+ "type": "git_remote_autotag_option_t",
+ "name": "download_tags",
+ "comments": " Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."
},
{
- "type": "int",
- "name": "GITERR_ZLIB",
- "comments": "",
- "value": 5
+ "type": "git_proxy_options",
+ "name": "proxy_opts",
+ "comments": " Proxy options to use, by default no proxy is used."
},
{
"type": "int",
- "name": "GITERR_REPOSITORY",
- "comments": "",
- "value": 6
+ "name": "depth",
+ "comments": " Depth of the fetch to perform, or `GIT_FETCH_DEPTH_FULL`\n (or `0`) for full history, or `GIT_FETCH_DEPTH_UNSHALLOW`\n to \"unshallow\" a shallow repository.\n\n The default is full (`GIT_FETCH_DEPTH_FULL` or `0`)."
},
{
- "type": "int",
- "name": "GITERR_CONFIG",
- "comments": "",
- "value": 7
+ "type": "git_remote_redirect_t",
+ "name": "follow_redirects",
+ "comments": " Whether to allow off-site redirects. If this is not\n specified, the `http.followRedirects` configuration setting\n will be consulted."
},
+ {
+ "type": "git_strarray",
+ "name": "custom_headers",
+ "comments": " Extra headers for this fetch operation"
+ }
+ ],
+ "used": {
+ "returns": [],
+ "needs": [
+ "git_fetch_options_init",
+ "git_remote_download",
+ "git_remote_fetch"
+ ]
+ }
+ }
+ ],
+ [
+ "git_fetch_prune_t",
+ {
+ "decl": [
+ "GIT_FETCH_PRUNE_UNSPECIFIED",
+ "GIT_FETCH_PRUNE",
+ "GIT_FETCH_NO_PRUNE"
+ ],
+ "type": "enum",
+ "file": "git2/remote.h",
+ "line": 719,
+ "lineto": 732,
+ "block": "GIT_FETCH_PRUNE_UNSPECIFIED\nGIT_FETCH_PRUNE\nGIT_FETCH_NO_PRUNE",
+ "tdef": "typedef",
+ "description": " Acceptable prune settings when fetching ",
+ "comments": "",
+ "fields": [
{
"type": "int",
- "name": "GITERR_REGEX",
- "comments": "",
- "value": 8
+ "name": "GIT_FETCH_PRUNE_UNSPECIFIED",
+ "comments": "Use the setting from the configuration
\n", + "value": 0 }, { "type": "int", - "name": "GITERR_ODB", - "comments": "", - "value": 9 + "name": "GIT_FETCH_PRUNE", + "comments": "Force pruning on
\n", + "value": 1 }, { "type": "int", - "name": "GITERR_INDEX", + "name": "GIT_FETCH_NO_PRUNE", + "comments": "Force pruning off
\n", + "value": 2 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_filemode_t", + { + "decl": [ + "GIT_FILEMODE_UNREADABLE", + "GIT_FILEMODE_TREE", + "GIT_FILEMODE_BLOB", + "GIT_FILEMODE_BLOB_EXECUTABLE", + "GIT_FILEMODE_LINK", + "GIT_FILEMODE_COMMIT" + ], + "type": "enum", + "file": "git2/types.h", + "line": 238, + "lineto": 245, + "block": "GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT", + "tdef": "typedef", + "description": " Valid modes for index and tree entries. ", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_FILEMODE_UNREADABLE", "comments": "", - "value": 10 + "value": 0 }, { "type": "int", - "name": "GITERR_OBJECT", + "name": "GIT_FILEMODE_TREE", "comments": "", - "value": 11 + "value": 16384 }, { "type": "int", - "name": "GITERR_NET", + "name": "GIT_FILEMODE_BLOB", "comments": "", - "value": 12 + "value": 33188 }, { "type": "int", - "name": "GITERR_TAG", + "name": "GIT_FILEMODE_BLOB_EXECUTABLE", "comments": "", - "value": 13 + "value": 33261 }, { "type": "int", - "name": "GITERR_TREE", + "name": "GIT_FILEMODE_LINK", "comments": "", - "value": 14 + "value": 40960 }, { "type": "int", - "name": "GITERR_INDEXER", + "name": "GIT_FILEMODE_COMMIT", "comments": "", - "value": 15 - }, + "value": 57344 + } + ], + "used": { + "returns": ["git_tree_entry_filemode", "git_tree_entry_filemode_raw"], + "needs": ["git_treebuilder_insert"] + } + } + ], + [ + "git_filter", + { + "decl": "git_filter", + "type": "struct", + "value": "git_filter", + "file": "git2/filter.h", + "line": 109, + "lineto": 109, + "tdef": "typedef", + "description": " A filter that can transform file data", + "comments": "This represents a filter that can be used to transform or even replace file data. Libgit2 includes one built in filter and it is possible to write your own (see git2/sys/filter.h for information on that).
\n\nThe two builtin filters are:
\n\nDon't error for safecrlf violations, allow them to continue.
Don't load /etc/gitattributes (or the system equivalent)
Load attributes from .gitattributes in the root of HEAD
Load attributes from .gitattributes in a given commit.\n This can only be specified in a git_filter_options.
This represents a list of filters to be applied to a file / blob. You can build the list with one call, apply it with another, and dispose it with a third. In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.
\n", + "used": { + "returns": [], + "needs": [ + "git_filter_list_apply_to_blob", + "git_filter_list_apply_to_buffer", + "git_filter_list_apply_to_data", + "git_filter_list_apply_to_file", + "git_filter_list_contains", + "git_filter_list_free", + "git_filter_list_load", + "git_filter_list_load_ext", + "git_filter_list_stream_blob", + "git_filter_list_stream_buffer", + "git_filter_list_stream_data", + "git_filter_list_stream_file" + ] + } + } + ], + [ + "git_filter_mode_t", + { + "decl": [ + "GIT_FILTER_TO_WORKTREE", + "GIT_FILTER_SMUDGE", + "GIT_FILTER_TO_ODB", + "GIT_FILTER_CLEAN" + ], + "type": "enum", + "file": "git2/filter.h", + "line": 37, + "lineto": 42, + "block": "GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN", + "tdef": "typedef", + "description": " Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database. These values control which direction of\n change is being applied.", + "comments": "", + "fields": [ { "type": "int", - "name": "GITERR_FETCHHEAD", + "name": "GIT_FILTER_TO_WORKTREE", "comments": "", - "value": 21 + "value": 0 }, { "type": "int", - "name": "GITERR_MERGE", + "name": "GIT_FILTER_SMUDGE", "comments": "", - "value": 22 + "value": 0 }, { "type": "int", - "name": "GITERR_SSH", + "name": "GIT_FILTER_TO_ODB", "comments": "", - "value": 23 + "value": 1 }, { "type": "int", - "name": "GITERR_FILTER", + "name": "GIT_FILTER_CLEAN", "comments": "", - "value": 24 - }, + "value": 1 + } + ], + "used": { + "returns": [], + "needs": ["git_filter_list_load", "git_filter_list_load_ext"] + } + } + ], + [ + "git_filter_options", + { + "decl": [ + "unsigned int version", + "uint32_t flags", + "git_oid * commit_id", + "git_oid attr_commit_id" + ], + "type": "struct", + "value": "git_filter_options", + "file": "git2/filter.h", + "line": 69, + "lineto": 86, + "block": "unsigned int version\nuint32_t flags\ngit_oid * commit_id\ngit_oid attr_commit_id", + "tdef": "typedef", + "description": " Filtering options", + "comments": "", + "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, { - "type": "int", - "name": "GITERR_REVERT", - "comments": "", - "value": 25 + "type": "uint32_t", + "name": "flags", + "comments": " See `git_filter_flag_t` above " }, + { "type": "git_oid *", "name": "commit_id", "comments": "" }, { - "type": "int", - "name": "GITERR_CALLBACK", - "comments": "", - "value": 26 - }, + "type": "git_oid", + "name": "attr_commit_id", + "comments": " The commit to load attributes from, when\n `GIT_FILTER_ATTRIBUTES_FROM_COMMIT` is specified." + } + ], + "used": { "returns": [], "needs": ["git_filter_list_load_ext"] } + } + ], + [ + "git_filter_source", + { + "decl": "git_filter_source", + "type": "struct", + "value": "git_filter_source", + "file": "git2/sys/filter.h", + "line": 109, + "lineto": 109, + "tdef": "typedef", + "description": " A filter source represents a file/blob to be processed", + "comments": "", + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_hashsig_option_t", + { + "decl": [ + "GIT_HASHSIG_NORMAL", + "GIT_HASHSIG_IGNORE_WHITESPACE", + "GIT_HASHSIG_SMART_WHITESPACE", + "GIT_HASHSIG_ALLOW_SMALL_FILES" + ], + "type": "enum", + "file": "git2/sys/hashsig.h", + "line": 35, + "lineto": 55, + "block": "GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES", + "tdef": "typedef", + "description": " Options for hashsig computation", + "comments": "The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.
\n", + "fields": [ { "type": "int", - "name": "GITERR_CHERRYPICK", - "comments": "", - "value": 27 + "name": "GIT_HASHSIG_NORMAL", + "comments": "Use all data
\n", + "value": 0 }, { "type": "int", - "name": "GITERR_DESCRIBE", - "comments": "", - "value": 28 + "name": "GIT_HASHSIG_IGNORE_WHITESPACE", + "comments": "Ignore whitespace
\n", + "value": 1 }, { "type": "int", - "name": "GITERR_REBASE", - "comments": "", - "value": 29 + "name": "GIT_HASHSIG_SMART_WHITESPACE", + "comments": "Ignore
\n\nand all space after
\n", + "value": 2 }, { "type": "int", - "name": "GITERR_FILESYSTEM", - "comments": "", - "value": 30 + "name": "GIT_HASHSIG_ALLOW_SMALL_FILES", + "comments": "Allow hashing of small files
\n", + "value": 4 } ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_index", + { + "decl": "git_index", + "type": "struct", + "value": "git_index", + "file": "git2/types.h", + "line": 153, + "lineto": 153, + "tdef": "typedef", + "description": " Memory representation of an index file. ", + "comments": "", "used": { - "returns": [], - "needs": [] + "returns": [ + "git_index_get_byindex", + "git_index_get_bypath", + "git_remote_stats" + ], + "needs": [ + "git_apply_to_tree", + "git_checkout_index", + "git_cherrypick_commit", + "git_diff_index_to_index", + "git_diff_index_to_workdir", + "git_diff_tree_to_index", + "git_index_add", + "git_index_add_all", + "git_index_add_bypath", + "git_index_add_from_buffer", + "git_index_caps", + "git_index_checksum", + "git_index_clear", + "git_index_conflict_add", + "git_index_conflict_cleanup", + "git_index_conflict_get", + "git_index_conflict_iterator_free", + "git_index_conflict_iterator_new", + "git_index_conflict_next", + "git_index_conflict_remove", + "git_index_entry_is_conflict", + "git_index_entry_stage", + "git_index_entrycount", + "git_index_find", + "git_index_find_prefix", + "git_index_free", + "git_index_get_byindex", + "git_index_get_bypath", + "git_index_has_conflicts", + "git_index_iterator_free", + "git_index_iterator_new", + "git_index_iterator_next", + "git_index_new", + "git_index_open", + "git_index_owner", + "git_index_path", + "git_index_read", + "git_index_read_tree", + "git_index_remove", + "git_index_remove_all", + "git_index_remove_bypath", + "git_index_remove_directory", + "git_index_set_caps", + "git_index_set_version", + "git_index_update_all", + "git_index_version", + "git_index_write", + "git_index_write_tree", + "git_index_write_tree_to", + "git_indexer_append", + "git_indexer_commit", + "git_indexer_free", + "git_indexer_hash", + "git_indexer_name", + "git_indexer_new", + "git_indexer_options_init", + "git_indexer_progress_cb", + "git_merge_commits", + "git_merge_file_from_index", + "git_merge_trees", + "git_odb_write_pack", + "git_packbuilder_write", + "git_pathspec_match_index", + "git_rebase_inmemory_index", + "git_repository_index", + "git_revert_commit" + ] } } ], [ - "git_feature_t", + "git_index_add_option_t", { "decl": [ - "GIT_FEATURE_THREADS", - "GIT_FEATURE_HTTPS", - "GIT_FEATURE_SSH", - "GIT_FEATURE_NSEC" + "GIT_INDEX_ADD_DEFAULT", + "GIT_INDEX_ADD_FORCE", + "GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH", + "GIT_INDEX_ADD_CHECK_PATHSPEC" ], "type": "enum", - "file": "common.h", - "line": 111, - "lineto": 116, - "block": "GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC", + "file": "git2/index.h", + "line": 162, + "lineto": 167, + "block": "GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC", "tdef": "typedef", - "description": " Combinations of these values describe the features with which libgit2\n was compiled", + "description": " Flags for APIs that add files matching pathspec ", "comments": "", "fields": [ { "type": "int", - "name": "GIT_FEATURE_THREADS", + "name": "GIT_INDEX_ADD_DEFAULT", "comments": "", - "value": 1 + "value": 0 }, { "type": "int", - "name": "GIT_FEATURE_HTTPS", + "name": "GIT_INDEX_ADD_FORCE", "comments": "", - "value": 2 + "value": 1 }, { "type": "int", - "name": "GIT_FEATURE_SSH", + "name": "GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH", "comments": "", - "value": 4 + "value": 2 }, { "type": "int", - "name": "GIT_FEATURE_NSEC", + "name": "GIT_INDEX_ADD_CHECK_PATHSPEC", "comments": "", - "value": 8 - } - ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_fetch_options", - { - "decl": [ - "int version", - "git_remote_callbacks callbacks", - "git_fetch_prune_t prune", - "int update_fetchhead", - "git_remote_autotag_option_t download_tags", - "git_proxy_options proxy_opts", - "git_strarray custom_headers" - ], - "type": "struct", - "value": "git_fetch_options", - "file": "remote.h", - "line": 525, - "lineto": 562, - "block": "int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\ngit_strarray custom_headers", - "tdef": "typedef", - "description": " Fetch options structure.", - "comments": "Zero out for defaults. Initialize with GIT_FETCH_OPTIONS_INIT macro to correctly set the version field. E.g.
git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n\n",
- "fields": [
- {
- "type": "int",
- "name": "version",
- "comments": ""
- },
- {
- "type": "git_remote_callbacks",
- "name": "callbacks",
- "comments": " Callbacks to use for this fetch operation"
- },
- {
- "type": "git_fetch_prune_t",
- "name": "prune",
- "comments": " Whether to perform a prune after the fetch"
- },
- {
- "type": "int",
- "name": "update_fetchhead",
- "comments": " Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."
- },
- {
- "type": "git_remote_autotag_option_t",
- "name": "download_tags",
- "comments": " Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."
- },
- {
- "type": "git_proxy_options",
- "name": "proxy_opts",
- "comments": " Proxy options to use, by default no proxy is used."
- },
- {
- "type": "git_strarray",
- "name": "custom_headers",
- "comments": " Extra headers for this fetch operation"
+ "value": 4
}
],
- "used": {
- "returns": [],
- "needs": [
- "git_fetch_init_options",
- "git_remote_download",
- "git_remote_fetch"
- ]
- }
+ "used": { "returns": [], "needs": [] }
}
],
[
- "git_filemode_t",
+ "git_index_capability_t",
{
"decl": [
- "GIT_FILEMODE_UNREADABLE",
- "GIT_FILEMODE_TREE",
- "GIT_FILEMODE_BLOB",
- "GIT_FILEMODE_BLOB_EXECUTABLE",
- "GIT_FILEMODE_LINK",
- "GIT_FILEMODE_COMMIT"
+ "GIT_INDEX_CAPABILITY_IGNORE_CASE",
+ "GIT_INDEX_CAPABILITY_NO_FILEMODE",
+ "GIT_INDEX_CAPABILITY_NO_SYMLINKS",
+ "GIT_INDEX_CAPABILITY_FROM_OWNER"
],
"type": "enum",
- "file": "types.h",
- "line": 205,
- "lineto": 212,
- "block": "GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT",
+ "file": "git2/index.h",
+ "line": 142,
+ "lineto": 147,
+ "block": "GIT_INDEX_CAPABILITY_IGNORE_CASE\nGIT_INDEX_CAPABILITY_NO_FILEMODE\nGIT_INDEX_CAPABILITY_NO_SYMLINKS\nGIT_INDEX_CAPABILITY_FROM_OWNER",
"tdef": "typedef",
- "description": " Valid modes for index and tree entries. ",
+ "description": " Capabilities of system that affect index actions. ",
"comments": "",
"fields": [
{
"type": "int",
- "name": "GIT_FILEMODE_UNREADABLE",
- "comments": "",
- "value": 0
- },
- {
- "type": "int",
- "name": "GIT_FILEMODE_TREE",
- "comments": "",
- "value": 16384
- },
- {
- "type": "int",
- "name": "GIT_FILEMODE_BLOB",
+ "name": "GIT_INDEX_CAPABILITY_IGNORE_CASE",
"comments": "",
- "value": 33188
+ "value": 1
},
{
"type": "int",
- "name": "GIT_FILEMODE_BLOB_EXECUTABLE",
+ "name": "GIT_INDEX_CAPABILITY_NO_FILEMODE",
"comments": "",
- "value": 33261
+ "value": 2
},
{
"type": "int",
- "name": "GIT_FILEMODE_LINK",
+ "name": "GIT_INDEX_CAPABILITY_NO_SYMLINKS",
"comments": "",
- "value": 40960
+ "value": 4
},
{
"type": "int",
- "name": "GIT_FILEMODE_COMMIT",
+ "name": "GIT_INDEX_CAPABILITY_FROM_OWNER",
"comments": "",
- "value": 57344
+ "value": -1
}
],
- "used": {
- "returns": [
- "git_tree_entry_filemode",
- "git_tree_entry_filemode_raw"
- ],
- "needs": [
- "git_treebuilder_insert"
- ]
- }
+ "used": { "returns": [], "needs": [] }
}
],
[
- "git_filter",
+ "git_index_conflict_iterator",
{
- "decl": [
- "unsigned int version",
- "const char * attributes",
- "git_filter_init_fn initialize",
- "git_filter_shutdown_fn shutdown",
- "git_filter_check_fn check",
- "git_filter_apply_fn apply",
- "git_filter_stream_fn stream",
- "git_filter_cleanup_fn cleanup"
- ],
+ "decl": "git_index_conflict_iterator",
"type": "struct",
- "value": "git_filter",
- "file": "sys/filter.h",
- "line": 226,
- "lineto": 271,
- "tdef": null,
- "description": " Filter structure used to register custom filters.",
- "comments": "To associate extra data with a filter, allocate extra data and put the git_filter struct at the start of your data buffer, then cast the self pointer to your larger structure when your callback is invoked.
This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git's documentation (in "Documentation/technical/index-format.txt").
\n\nThe flags field consists of a number of bit fields which can be accessed via the first set of GIT_INDEX_ENTRY_... bitmasks below. These flags are all read from and persisted to disk.
The flags_extended field also has a number of bit fields which can be accessed via the later GIT_INDEX_ENTRY_... bitmasks below. Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.
Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.
\n", "fields": [ - { - "type": "int", - "name": "GIT_FILTER_DEFAULT", - "comments": "", - "value": 0 - }, - { - "type": "int", - "name": "GIT_FILTER_ALLOW_UNSAFE", - "comments": "", - "value": 1 - } + { "type": "git_index_time", "name": "ctime", "comments": "" }, + { "type": "git_index_time", "name": "mtime", "comments": "" }, + { "type": "uint32_t", "name": "dev", "comments": "" }, + { "type": "uint32_t", "name": "ino", "comments": "" }, + { "type": "uint32_t", "name": "mode", "comments": "" }, + { "type": "uint32_t", "name": "uid", "comments": "" }, + { "type": "uint32_t", "name": "gid", "comments": "" }, + { "type": "uint32_t", "name": "file_size", "comments": "" }, + { "type": "git_oid", "name": "id", "comments": "" }, + { "type": "uint16_t", "name": "flags", "comments": "" }, + { "type": "uint16_t", "name": "flags_extended", "comments": "" }, + { "type": "const char *", "name": "path", "comments": "" } ], "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_filter_list", - { - "decl": "git_filter_list", - "type": "struct", - "value": "git_filter_list", - "file": "filter.h", - "line": 73, - "lineto": 73, - "tdef": "typedef", - "description": " List of filters to be applied", - "comments": "This represents a list of filters to be applied to a file / blob. You can build the list with one call, apply it with another, and dispose it with a third. In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.
\n", - "used": { - "returns": [], + "returns": ["git_index_get_byindex", "git_index_get_bypath"], "needs": [ - "git_filter_list_apply_to_blob", - "git_filter_list_apply_to_data", - "git_filter_list_apply_to_file", - "git_filter_list_contains", - "git_filter_list_free", - "git_filter_list_load", - "git_filter_list_new", - "git_filter_list_push", - "git_filter_list_stream_blob", - "git_filter_list_stream_data", - "git_filter_list_stream_file" + "git_index_add", + "git_index_add_from_buffer", + "git_index_conflict_add", + "git_index_conflict_get", + "git_index_conflict_next", + "git_index_entry_is_conflict", + "git_index_entry_stage", + "git_index_iterator_next", + "git_merge_file_from_index" ] } } ], [ - "git_filter_mode_t", + "git_index_entry_extended_flag_t", { "decl": [ - "GIT_FILTER_TO_WORKTREE", - "GIT_FILTER_SMUDGE", - "GIT_FILTER_TO_ODB", - "GIT_FILTER_CLEAN" + "GIT_INDEX_ENTRY_INTENT_TO_ADD", + "GIT_INDEX_ENTRY_SKIP_WORKTREE", + "GIT_INDEX_ENTRY_EXTENDED_FLAGS", + "GIT_INDEX_ENTRY_UPTODATE" ], "type": "enum", - "file": "filter.h", - "line": 31, - "lineto": 36, - "block": "GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN", + "file": "git2/index.h", + "line": 132, + "lineto": 139, + "block": "GIT_INDEX_ENTRY_INTENT_TO_ADD\nGIT_INDEX_ENTRY_SKIP_WORKTREE\nGIT_INDEX_ENTRY_EXTENDED_FLAGS\nGIT_INDEX_ENTRY_UPTODATE", "tdef": "typedef", - "description": " Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database. These values control which direction of\n change is being applied.", - "comments": "", + "description": " Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`", + "comments": "In memory, the flags_extended fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2. Only the flags in GIT_INDEX_ENTRY_EXTENDED_FLAGS will get saved on-disk.
Thee first three bitmasks match the three fields in the git_index_entry flags_extended value that belong on disk. You can use them to interpret the data in the flags_extended.
The rest of the bitmasks match the other fields in the git_index_entry flags_extended value that are only used in-memory by libgit2. You can use them to interpret the data in the flags_extended.
The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.
\n", + "description": " Git index stage states ", + "comments": "", "fields": [ { "type": "int", - "name": "GIT_HASHSIG_NORMAL", - "comments": "Use all data
\n", + "name": "GIT_INDEX_STAGE_ANY", + "comments": "Match any index stage.
\n\nSome index APIs take a stage to match; pass this value to match\n any entry matching the path regardless of stage.
\n", + "value": -1 + }, + { + "type": "int", + "name": "GIT_INDEX_STAGE_NORMAL", + "comments": "A normal staged file in the index.
\n", "value": 0 }, { "type": "int", - "name": "GIT_HASHSIG_IGNORE_WHITESPACE", - "comments": "Ignore whitespace
\n", + "name": "GIT_INDEX_STAGE_ANCESTOR", + "comments": "The ancestor side of a conflict.
\n", "value": 1 }, { "type": "int", - "name": "GIT_HASHSIG_SMART_WHITESPACE", - "comments": "Ignore
\n\nand all space after
\n", + "name": "GIT_INDEX_STAGE_OURS", + "comments": "The "ours" side of a conflict.
\n", "value": 2 }, { "type": "int", - "name": "GIT_HASHSIG_ALLOW_SMALL_FILES", - "comments": "Allow hashing of small files
\n", - "value": 4 + "name": "GIT_INDEX_STAGE_THEIRS", + "comments": "The "theirs" side of a conflict.
\n", + "value": 3 } ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_index_time", + { + "decl": ["int32_t seconds", "uint32_t nanoseconds"], + "type": "struct", + "value": "git_index_time", + "file": "git2/index.h", + "line": 31, + "lineto": 35, + "block": "int32_t seconds\nuint32_t nanoseconds", + "tdef": "typedef", + "description": " Time structure used in a git index entry ", + "comments": "", + "fields": [ + { "type": "int32_t", "name": "seconds", "comments": "" }, + { "type": "uint32_t", "name": "nanoseconds", "comments": "" } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_indexer", + { + "decl": "git_indexer", + "type": "struct", + "value": "git_indexer", + "file": "git2/indexer.h", + "line": 27, + "lineto": 27, + "tdef": "typedef", + "description": " A git indexer object ", + "comments": "", "used": { - "returns": [], + "returns": ["git_remote_stats"], "needs": [ - "git_hashsig_create_fromfile" + "git_indexer_append", + "git_indexer_commit", + "git_indexer_free", + "git_indexer_hash", + "git_indexer_name", + "git_indexer_new", + "git_indexer_options_init", + "git_indexer_progress_cb", + "git_odb_write_pack", + "git_packbuilder_write" ] } } ], [ - "git_idxentry_extended_flag_t", + "git_indexer_options", { "decl": [ - "GIT_IDXENTRY_INTENT_TO_ADD", - "GIT_IDXENTRY_SKIP_WORKTREE", - "GIT_IDXENTRY_EXTENDED2", - "GIT_IDXENTRY_EXTENDED_FLAGS", - "GIT_IDXENTRY_UPDATE", - "GIT_IDXENTRY_REMOVE", - "GIT_IDXENTRY_UPTODATE", - "GIT_IDXENTRY_ADDED", - "GIT_IDXENTRY_HASHED", - "GIT_IDXENTRY_UNHASHED", - "GIT_IDXENTRY_WT_REMOVE", - "GIT_IDXENTRY_CONFLICTED", - "GIT_IDXENTRY_UNPACKED", - "GIT_IDXENTRY_NEW_SKIP_WORKTREE" + "unsigned int version", + "git_indexer_progress_cb progress_cb", + "void * progress_cb_payload", + "unsigned char verify" ], - "type": "enum", - "file": "index.h", - "line": 115, - "lineto": 135, - "block": "GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE", + "type": "struct", + "value": "git_indexer_options", + "file": "git2/indexer.h", + "line": 73, + "lineto": 100, + "block": "unsigned int version\ngit_indexer_progress_cb progress_cb\nvoid * progress_cb_payload\nunsigned char verify", "tdef": "typedef", - "description": " Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`", - "comments": "In memory, the flags_extended fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2. Only the flags in GIT_IDXENTRY_EXTENDED_FLAGS will get saved on-disk.
Thee first three bitmasks match the three fields in the git_index_entry flags_extended value that belong on disk. You can use them to interpret the data in the flags_extended.
The rest of the bitmasks match the other fields in the git_index_entry flags_extended value that are only used in-memory by libgit2. You can use them to interpret the data in the flags_extended.
Reserved for future extension
\n", - "value": 32768 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_EXTENDED_FLAGS", - "comments": "Reserved for future extension
\n", - "value": 24576 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_UPDATE", - "comments": "Reserved for future extension
\n", - "value": 1 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_REMOVE", - "comments": "Reserved for future extension
\n", - "value": 2 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_UPTODATE", - "comments": "Reserved for future extension
\n", - "value": 4 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_ADDED", - "comments": "Reserved for future extension
\n", - "value": 8 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_HASHED", - "comments": "Reserved for future extension
\n", - "value": 16 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_UNHASHED", - "comments": "Reserved for future extension
\n", - "value": 32 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_WT_REMOVE", - "comments": "remove in work directory
\n", - "value": 64 - }, - { - "type": "int", - "name": "GIT_IDXENTRY_CONFLICTED", - "comments": "", - "value": 128 + "type": "git_indexer_progress_cb", + "name": "progress_cb", + "comments": " progress_cb function to call with progress information " }, { - "type": "int", - "name": "GIT_IDXENTRY_UNPACKED", - "comments": "", - "value": 256 + "type": "void *", + "name": "progress_cb_payload", + "comments": " progress_cb_payload payload for the progress callback " }, { - "type": "int", - "name": "GIT_IDXENTRY_NEW_SKIP_WORKTREE", - "comments": "", - "value": 512 + "type": "unsigned char", + "name": "verify", + "comments": " Do connectivity checks for the received pack " } ], "used": { "returns": [], - "needs": [] + "needs": ["git_indexer_new", "git_indexer_options_init"] } } ], [ - "git_index", + "git_indexer_progress", { - "decl": "git_index", + "decl": [ + "unsigned int total_objects", + "unsigned int indexed_objects", + "unsigned int received_objects", + "unsigned int local_objects", + "unsigned int total_deltas", + "unsigned int indexed_deltas", + "size_t received_bytes" + ], "type": "struct", - "value": "git_index", - "file": "types.h", - "line": 132, - "lineto": 132, + "value": "git_indexer_progress", + "file": "git2/indexer.h", + "line": 34, + "lineto": 58, + "block": "unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes", "tdef": "typedef", - "description": " Memory representation of an index file. ", + "description": " This structure is used to provide callers information about the\n progress of indexing a packfile, either directly or part of a\n fetch or clone that downloads a packfile.", "comments": "", - "used": { - "returns": [ - "git_index_get_byindex", - "git_index_get_bypath" - ], - "needs": [ - "git_checkout_index", - "git_cherrypick_commit", - "git_diff_index_to_index", - "git_diff_index_to_workdir", - "git_diff_tree_to_index", - "git_index_add", - "git_index_add_all", - "git_index_add_bypath", - "git_index_add_frombuffer", - "git_index_caps", - "git_index_checksum", - "git_index_clear", - "git_index_conflict_add", - "git_index_conflict_cleanup", - "git_index_conflict_get", - "git_index_conflict_iterator_free", - "git_index_conflict_iterator_new", - "git_index_conflict_next", - "git_index_conflict_remove", - "git_index_entry_is_conflict", - "git_index_entry_stage", - "git_index_entrycount", - "git_index_find", - "git_index_find_prefix", - "git_index_free", - "git_index_get_byindex", - "git_index_get_bypath", - "git_index_has_conflicts", - "git_index_new", - "git_index_open", - "git_index_owner", - "git_index_path", - "git_index_read", - "git_index_read_tree", - "git_index_remove", - "git_index_remove_all", - "git_index_remove_bypath", - "git_index_remove_directory", - "git_index_set_caps", - "git_index_update_all", - "git_index_write", - "git_index_write_tree", - "git_index_write_tree_to", + "fields": [ + { + "type": "unsigned int", + "name": "total_objects", + "comments": " number of objects in the packfile being indexed " + }, + { + "type": "unsigned int", + "name": "indexed_objects", + "comments": " received objects that have been hashed " + }, + { + "type": "unsigned int", + "name": "received_objects", + "comments": " received_objects: objects which have been downloaded " + }, + { + "type": "unsigned int", + "name": "local_objects", + "comments": " locally-available objects that have been injected in order\n to fix a thin pack" + }, + { + "type": "unsigned int", + "name": "total_deltas", + "comments": " number of deltas in the packfile being indexed " + }, + { + "type": "unsigned int", + "name": "indexed_deltas", + "comments": " received deltas that have been indexed " + }, + { + "type": "size_t", + "name": "received_bytes", + "comments": " size of the packfile received up to now " + } + ], + "used": { + "returns": ["git_remote_stats"], + "needs": [ "git_indexer_append", "git_indexer_commit", - "git_indexer_free", - "git_indexer_hash", - "git_indexer_new", - "git_merge_commits", - "git_merge_file_from_index", - "git_merge_trees", - "git_pathspec_match_index", - "git_rebase_inmemory_index", - "git_repository_index", - "git_repository_set_index", - "git_revert_commit" + "git_indexer_progress_cb", + "git_odb_write_pack", + "git_packbuilder_write" ] } } ], [ - "git_index_add_option_t", + "git_libgit2_opt_t", { "decl": [ - "GIT_INDEX_ADD_DEFAULT", - "GIT_INDEX_ADD_FORCE", - "GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH", - "GIT_INDEX_ADD_CHECK_PATHSPEC" + "GIT_OPT_GET_MWINDOW_SIZE", + "GIT_OPT_SET_MWINDOW_SIZE", + "GIT_OPT_GET_MWINDOW_MAPPED_LIMIT", + "GIT_OPT_SET_MWINDOW_MAPPED_LIMIT", + "GIT_OPT_GET_SEARCH_PATH", + "GIT_OPT_SET_SEARCH_PATH", + "GIT_OPT_SET_CACHE_OBJECT_LIMIT", + "GIT_OPT_SET_CACHE_MAX_SIZE", + "GIT_OPT_ENABLE_CACHING", + "GIT_OPT_GET_CACHED_MEMORY", + "GIT_OPT_GET_TEMPLATE_PATH", + "GIT_OPT_SET_TEMPLATE_PATH", + "GIT_OPT_SET_SSL_CERT_LOCATIONS", + "GIT_OPT_SET_USER_AGENT", + "GIT_OPT_ENABLE_STRICT_OBJECT_CREATION", + "GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION", + "GIT_OPT_SET_SSL_CIPHERS", + "GIT_OPT_GET_USER_AGENT", + "GIT_OPT_ENABLE_OFS_DELTA", + "GIT_OPT_ENABLE_FSYNC_GITDIR", + "GIT_OPT_GET_WINDOWS_SHAREMODE", + "GIT_OPT_SET_WINDOWS_SHAREMODE", + "GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION", + "GIT_OPT_SET_ALLOCATOR", + "GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY", + "GIT_OPT_GET_PACK_MAX_OBJECTS", + "GIT_OPT_SET_PACK_MAX_OBJECTS", + "GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS", + "GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE", + "GIT_OPT_GET_MWINDOW_FILE_LIMIT", + "GIT_OPT_SET_MWINDOW_FILE_LIMIT", + "GIT_OPT_SET_ODB_PACKED_PRIORITY", + "GIT_OPT_SET_ODB_LOOSE_PRIORITY", + "GIT_OPT_GET_EXTENSIONS", + "GIT_OPT_SET_EXTENSIONS", + "GIT_OPT_GET_OWNER_VALIDATION", + "GIT_OPT_SET_OWNER_VALIDATION", + "GIT_OPT_GET_HOMEDIR", + "GIT_OPT_SET_HOMEDIR", + "GIT_OPT_SET_SERVER_CONNECT_TIMEOUT", + "GIT_OPT_GET_SERVER_CONNECT_TIMEOUT", + "GIT_OPT_SET_SERVER_TIMEOUT", + "GIT_OPT_GET_SERVER_TIMEOUT", + "GIT_OPT_SET_USER_AGENT_PRODUCT", + "GIT_OPT_GET_USER_AGENT_PRODUCT", + "GIT_OPT_ADD_SSL_X509_CERT" ], "type": "enum", - "file": "index.h", - "line": 150, - "lineto": 155, - "block": "GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC", + "file": "git2/common.h", + "line": 214, + "lineto": 261, + "block": "GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION\nGIT_OPT_SET_SSL_CIPHERS\nGIT_OPT_GET_USER_AGENT\nGIT_OPT_ENABLE_OFS_DELTA\nGIT_OPT_ENABLE_FSYNC_GITDIR\nGIT_OPT_GET_WINDOWS_SHAREMODE\nGIT_OPT_SET_WINDOWS_SHAREMODE\nGIT_OPT_ENABLE_STRICT_HASH_VERIFICATION\nGIT_OPT_SET_ALLOCATOR\nGIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY\nGIT_OPT_GET_PACK_MAX_OBJECTS\nGIT_OPT_SET_PACK_MAX_OBJECTS\nGIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS\nGIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE\nGIT_OPT_GET_MWINDOW_FILE_LIMIT\nGIT_OPT_SET_MWINDOW_FILE_LIMIT\nGIT_OPT_SET_ODB_PACKED_PRIORITY\nGIT_OPT_SET_ODB_LOOSE_PRIORITY\nGIT_OPT_GET_EXTENSIONS\nGIT_OPT_SET_EXTENSIONS\nGIT_OPT_GET_OWNER_VALIDATION\nGIT_OPT_SET_OWNER_VALIDATION\nGIT_OPT_GET_HOMEDIR\nGIT_OPT_SET_HOMEDIR\nGIT_OPT_SET_SERVER_CONNECT_TIMEOUT\nGIT_OPT_GET_SERVER_CONNECT_TIMEOUT\nGIT_OPT_SET_SERVER_TIMEOUT\nGIT_OPT_GET_SERVER_TIMEOUT\nGIT_OPT_SET_USER_AGENT_PRODUCT\nGIT_OPT_GET_USER_AGENT_PRODUCT\nGIT_OPT_ADD_SSL_X509_CERT", "tdef": "typedef", - "description": " Flags for APIs that add files matching pathspec ", - "comments": "", + "description": " Global library options", + "comments": "These are used to select which global option to set or get and are used in git_libgit2_opts().
This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git's documentation (in "Documentation/technical/index-format.txt").
\n\nThe flags field consists of a number of bit fields which can be accessed via the first set of GIT_IDXENTRY_... bitmasks below. These flags are all read from and persisted to disk.
The flags_extended field also has a number of bit fields which can be accessed via the later GIT_IDXENTRY_... bitmasks below. Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.
Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.
\n", - "fields": [ + }, { - "type": "git_index_time", - "name": "ctime", - "comments": "" + "type": "int", + "name": "GIT_OPT_SET_SEARCH_PATH", + "comments": "", + "value": 5 }, { - "type": "git_index_time", - "name": "mtime", - "comments": "" + "type": "int", + "name": "GIT_OPT_SET_CACHE_OBJECT_LIMIT", + "comments": "", + "value": 6 }, { - "type": "uint32_t", - "name": "dev", - "comments": "" + "type": "int", + "name": "GIT_OPT_SET_CACHE_MAX_SIZE", + "comments": "", + "value": 7 }, { - "type": "uint32_t", - "name": "ino", - "comments": "" + "type": "int", + "name": "GIT_OPT_ENABLE_CACHING", + "comments": "", + "value": 8 }, { - "type": "uint32_t", - "name": "mode", - "comments": "" + "type": "int", + "name": "GIT_OPT_GET_CACHED_MEMORY", + "comments": "", + "value": 9 }, { - "type": "uint32_t", - "name": "uid", - "comments": "" + "type": "int", + "name": "GIT_OPT_GET_TEMPLATE_PATH", + "comments": "", + "value": 10 }, { - "type": "uint32_t", - "name": "gid", - "comments": "" + "type": "int", + "name": "GIT_OPT_SET_TEMPLATE_PATH", + "comments": "", + "value": 11 }, { - "type": "uint32_t", - "name": "file_size", - "comments": "" + "type": "int", + "name": "GIT_OPT_SET_SSL_CERT_LOCATIONS", + "comments": "", + "value": 12 }, { - "type": "git_oid", - "name": "id", - "comments": "" + "type": "int", + "name": "GIT_OPT_SET_USER_AGENT", + "comments": "", + "value": 13 }, { - "type": "uint16_t", - "name": "flags", - "comments": "" + "type": "int", + "name": "GIT_OPT_ENABLE_STRICT_OBJECT_CREATION", + "comments": "", + "value": 14 }, { - "type": "uint16_t", - "name": "flags_extended", - "comments": "" + "type": "int", + "name": "GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION", + "comments": "", + "value": 15 }, { - "type": "const char *", - "name": "path", - "comments": "" - } - ], - "used": { - "returns": [ - "git_index_get_byindex", - "git_index_get_bypath" - ], - "needs": [ - "git_index_add", - "git_index_add_frombuffer", - "git_index_conflict_add", - "git_index_conflict_get", - "git_index_conflict_next", - "git_index_entry_is_conflict", - "git_index_entry_stage", - "git_merge_file_from_index" - ] - } - } - ], - [ - "git_index_time", - { - "decl": [ - "int32_t seconds", - "uint32_t nanoseconds" - ], - "type": "struct", - "value": "git_index_time", - "file": "index.h", - "line": 26, - "lineto": 30, - "block": "int32_t seconds\nuint32_t nanoseconds", - "tdef": "typedef", - "description": " Time structure used in a git index entry ", - "comments": "", - "fields": [ + "type": "int", + "name": "GIT_OPT_SET_SSL_CIPHERS", + "comments": "", + "value": 16 + }, { - "type": "int32_t", - "name": "seconds", - "comments": "" + "type": "int", + "name": "GIT_OPT_GET_USER_AGENT", + "comments": "", + "value": 17 }, { - "type": "uint32_t", - "name": "nanoseconds", - "comments": "" - } - ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_indexcap_t", - { - "decl": [ - "GIT_INDEXCAP_IGNORE_CASE", - "GIT_INDEXCAP_NO_FILEMODE", - "GIT_INDEXCAP_NO_SYMLINKS", - "GIT_INDEXCAP_FROM_OWNER" - ], - "type": "enum", - "file": "index.h", - "line": 138, - "lineto": 143, - "block": "GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER", - "tdef": "typedef", - "description": " Capabilities of system that affect index actions. ", - "comments": "", - "fields": [ + "type": "int", + "name": "GIT_OPT_ENABLE_OFS_DELTA", + "comments": "", + "value": 18 + }, + { + "type": "int", + "name": "GIT_OPT_ENABLE_FSYNC_GITDIR", + "comments": "", + "value": 19 + }, + { + "type": "int", + "name": "GIT_OPT_GET_WINDOWS_SHAREMODE", + "comments": "", + "value": 20 + }, { "type": "int", - "name": "GIT_INDEXCAP_IGNORE_CASE", + "name": "GIT_OPT_SET_WINDOWS_SHAREMODE", "comments": "", - "value": 1 + "value": 21 }, { "type": "int", - "name": "GIT_INDEXCAP_NO_FILEMODE", + "name": "GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION", "comments": "", - "value": 2 + "value": 22 }, { "type": "int", - "name": "GIT_INDEXCAP_NO_SYMLINKS", + "name": "GIT_OPT_SET_ALLOCATOR", "comments": "", - "value": 4 + "value": 23 }, { "type": "int", - "name": "GIT_INDEXCAP_FROM_OWNER", + "name": "GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY", "comments": "", - "value": -1 - } - ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_indxentry_flag_t", - { - "decl": [ - "GIT_IDXENTRY_EXTENDED", - "GIT_IDXENTRY_VALID" - ], - "type": "enum", - "file": "index.h", - "line": 86, - "lineto": 89, - "block": "GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID", - "tdef": "typedef", - "description": " Flags for index entries", - "comments": "", - "fields": [ + "value": 24 + }, { "type": "int", - "name": "GIT_IDXENTRY_EXTENDED", + "name": "GIT_OPT_GET_PACK_MAX_OBJECTS", "comments": "", - "value": 16384 + "value": 25 }, { "type": "int", - "name": "GIT_IDXENTRY_VALID", + "name": "GIT_OPT_SET_PACK_MAX_OBJECTS", "comments": "", - "value": 32768 - } - ], - "used": { - "returns": [], - "needs": [] - } - } - ], - [ - "git_libgit2_opt_t", - { - "decl": [ - "GIT_OPT_GET_MWINDOW_SIZE", - "GIT_OPT_SET_MWINDOW_SIZE", - "GIT_OPT_GET_MWINDOW_MAPPED_LIMIT", - "GIT_OPT_SET_MWINDOW_MAPPED_LIMIT", - "GIT_OPT_GET_SEARCH_PATH", - "GIT_OPT_SET_SEARCH_PATH", - "GIT_OPT_SET_CACHE_OBJECT_LIMIT", - "GIT_OPT_SET_CACHE_MAX_SIZE", - "GIT_OPT_ENABLE_CACHING", - "GIT_OPT_GET_CACHED_MEMORY", - "GIT_OPT_GET_TEMPLATE_PATH", - "GIT_OPT_SET_TEMPLATE_PATH", - "GIT_OPT_SET_SSL_CERT_LOCATIONS", - "GIT_OPT_SET_USER_AGENT", - "GIT_OPT_ENABLE_STRICT_OBJECT_CREATION", - "GIT_OPT_SET_SSL_CIPHERS" - ], - "type": "enum", - "file": "common.h", - "line": 144, - "lineto": 161, - "block": "GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS", - "tdef": "typedef", - "description": " Global library options", - "comments": "These are used to select which global option to set or get and are used in git_libgit2_opts().
To associate extra data with a driver, allocate extra data and put the git_merge_driver struct at the start of your data buffer, then cast the self pointer to your larger structure when your callback is invoked.
Take extra time to find minimal diff
\n", "value": 128 + }, + { + "type": "int", + "name": "GIT_MERGE_FILE_STYLE_ZDIFF3", + "comments": "Create zdiff3 ("zealous diff3")-style files
\n", + "value": 256 + }, + { + "type": "int", + "name": "GIT_MERGE_FILE_ACCEPT_CONFLICTS", + "comments": "Do not produce file conflicts when common regions have\n changed; keep the conflict markers in the file and accept\n that as the merge result.
\n", + "value": 512 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -30550,19 +31402,15 @@ ], "type": "struct", "value": "git_merge_file_input", - "file": "merge.h", - "line": 32, - "lineto": 46, + "file": "git2/merge.h", + "line": 35, + "lineto": 49, "block": "unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode", "tdef": "typedef", "description": " The file inputs to `git_merge_file`. Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.", "comments": "", "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" - }, + { "type": "unsigned int", "name": "version", "comments": "" }, { "type": "const char *", "name": "ptr", @@ -30586,10 +31434,7 @@ ], "used": { "returns": [], - "needs": [ - "git_merge_file", - "git_merge_file_init_input" - ] + "needs": ["git_merge_file", "git_merge_file_input_init"] } } ], @@ -30602,23 +31447,20 @@ "const char * our_label", "const char * their_label", "git_merge_file_favor_t favor", - "git_merge_file_flag_t flags" + "uint32_t flags", + "unsigned short marker_size" ], "type": "struct", "value": "git_merge_file_options", - "file": "merge.h", - "line": 168, - "lineto": 194, - "block": "unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags", + "file": "git2/merge.h", + "line": 195, + "lineto": 225, + "block": "unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\nuint32_t flags\nunsigned short marker_size", "tdef": "typedef", "description": " Options for merging a file", "comments": "", "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" - }, + { "type": "unsigned int", "name": "version", "comments": "" }, { "type": "const char *", "name": "ancestor_label", @@ -30640,9 +31482,14 @@ "comments": " The file to favor in region conflicts. " }, { - "type": "git_merge_file_flag_t", + "type": "uint32_t", "name": "flags", "comments": " see `git_merge_file_flag_t` above " + }, + { + "type": "unsigned short", + "name": "marker_size", + "comments": " The size of conflict markers (eg, \"\n<\n<\n<\n<\n<\n<\n<\n\"). Default is\n GIT_MERGE_CONFLICT_MARKER_SIZE. " } ], "used": { @@ -30650,7 +31497,7 @@ "needs": [ "git_merge_file", "git_merge_file_from_index", - "git_merge_file_init_options" + "git_merge_file_options_init" ] } } @@ -30667,9 +31514,9 @@ ], "type": "struct", "value": "git_merge_file_result", - "file": "merge.h", - "line": 215, - "lineto": 236, + "file": "git2/merge.h", + "line": 248, + "lineto": 269, "block": "unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len", "tdef": "typedef", "description": " Information about file-level merging", @@ -30718,13 +31565,14 @@ "GIT_MERGE_FIND_RENAMES", "GIT_MERGE_FAIL_ON_CONFLICT", "GIT_MERGE_SKIP_REUC", - "GIT_MERGE_NO_RECURSIVE" + "GIT_MERGE_NO_RECURSIVE", + "GIT_MERGE_VIRTUAL_BASE" ], "type": "enum", - "file": "merge.h", - "line": 68, - "lineto": 95, - "block": "GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE", + "file": "git2/merge.h", + "line": 74, + "lineto": 109, + "block": "GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE\nGIT_MERGE_VIRTUAL_BASE", "tdef": "typedef", "description": " Flags for `git_merge` options. A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.", "comments": "", @@ -30752,12 +31600,15 @@ "name": "GIT_MERGE_NO_RECURSIVE", "comments": "If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base. This flag provides a similar\n merge base to git-merge-resolve.
Treat this merge as if it is to produce the virtual base\n of a recursive merge. This will ensure that there are\n no conflicts, any conflicting regions will keep conflict\n markers in the merge result.
\n", + "value": 16 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -30765,32 +31616,28 @@ { "decl": [ "unsigned int version", - "git_merge_flag_t flags", + "uint32_t flags", "unsigned int rename_threshold", "unsigned int target_limit", "git_diff_similarity_metric * metric", "unsigned int recursion_limit", "const char * default_driver", "git_merge_file_favor_t file_favor", - "git_merge_file_flag_t file_flags" + "uint32_t file_flags" ], "type": "struct", "value": "git_merge_options", - "file": "merge.h", - "line": 241, - "lineto": 290, - "block": "unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags", + "file": "git2/merge.h", + "line": 274, + "lineto": 323, + "block": "unsigned int version\nuint32_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\nuint32_t file_flags", "tdef": "typedef", "description": " Merging options", "comments": "", "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, { - "type": "unsigned int", - "name": "version", - "comments": "" - }, - { - "type": "git_merge_flag_t", + "type": "uint32_t", "name": "flags", "comments": " See `git_merge_flag_t` above " }, @@ -30825,7 +31672,7 @@ "comments": " Flags for handling conflicting content, to be used with the standard\n (`text`) merge driver." }, { - "type": "git_merge_file_flag_t", + "type": "uint32_t", "name": "file_flags", "comments": " see `git_merge_file_flag_t` above " } @@ -30836,7 +31683,7 @@ "git_cherrypick_commit", "git_merge", "git_merge_commits", - "git_merge_init_options", + "git_merge_options_init", "git_merge_trees", "git_revert_commit" ] @@ -30852,9 +31699,9 @@ "GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY" ], "type": "enum", - "file": "merge.h", - "line": 345, - "lineto": 363, + "file": "git2/merge.h", + "line": 381, + "lineto": 399, "block": "GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY", "tdef": "typedef", "description": " The user's stated preference for merges.", @@ -30881,28 +31728,78 @@ ], "used": { "returns": [], - "needs": [ - "git_merge_analysis" - ] + "needs": ["git_merge_analysis", "git_merge_analysis_for_ref"] + } + } + ], + [ + "git_message_trailer", + { + "decl": ["const char * key", "const char * value"], + "type": "struct", + "value": "git_message_trailer", + "file": "git2/message.h", + "line": 43, + "lineto": 46, + "block": "const char * key\nconst char * value", + "tdef": "typedef", + "description": " Represents a single git message trailer.", + "comments": "", + "fields": [ + { "type": "const char *", "name": "key", "comments": "" }, + { "type": "const char *", "name": "value", "comments": "" } + ], + "used": { + "returns": [], + "needs": ["git_message_trailer_array_free", "git_message_trailers"] + } + } + ], + [ + "git_message_trailer_array", + { + "decl": [ + "git_message_trailer * trailers", + "size_t count", + "char * _trailer_block" + ], + "type": "struct", + "value": "git_message_trailer_array", + "file": "git2/message.h", + "line": 54, + "lineto": 60, + "block": "git_message_trailer * trailers\nsize_t count\nchar * _trailer_block", + "tdef": "typedef", + "description": " Represents an array of git message trailers.", + "comments": "Struct members under the private comment are private, subject to change and should not be used by callers.
\n", + "fields": [ + { + "type": "git_message_trailer *", + "name": "trailers", + "comments": "" + }, + { "type": "size_t", "name": "count", "comments": "" }, + { "type": "char *", "name": "_trailer_block", "comments": "" } + ], + "used": { + "returns": [], + "needs": ["git_message_trailer_array_free", "git_message_trailers"] } } ], [ - "git_merge_result", + "git_midx_writer", { - "decl": "git_merge_result", + "decl": "git_midx_writer", "type": "struct", - "value": "git_merge_result", - "file": "types.h", - "line": 181, - "lineto": 181, + "value": "git_midx_writer", + "file": "git2/types.h", + "line": 105, + "lineto": 105, "tdef": "typedef", - "description": " Merge result ", + "description": " a writer for multi-pack-index files. ", "comments": "", - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -30911,26 +31808,15 @@ "decl": "git_note", "type": "struct", "value": "git_note", - "file": "types.h", - "line": 150, - "lineto": 150, + "file": "git2/types.h", + "line": 174, + "lineto": 174, "tdef": "typedef", "description": " Representation of a git note ", "comments": "", "used": { "returns": [], - "needs": [ - "git_note_author", - "git_note_committer", - "git_note_foreach", - "git_note_free", - "git_note_id", - "git_note_iterator_free", - "git_note_iterator_new", - "git_note_message", - "git_note_next", - "git_note_read" - ] + "needs": ["git_note_iterator_free", "git_note_next"] } } ], @@ -30940,19 +31826,15 @@ "decl": "git_note_iterator", "type": "struct", "value": "git_note_iterator", - "file": "notes.h", - "line": 35, - "lineto": 35, + "file": "git2/notes.h", + "line": 37, + "lineto": 37, "tdef": "typedef", "description": " note iterator", "comments": "", "used": { "returns": [], - "needs": [ - "git_note_iterator_free", - "git_note_iterator_new", - "git_note_next" - ] + "needs": ["git_note_iterator_free", "git_note_next"] } } ], @@ -30962,17 +31844,25 @@ "decl": "git_object", "type": "struct", "value": "git_object", - "file": "types.h", - "line": 108, - "lineto": 108, + "file": "git2/types.h", + "line": 129, + "lineto": 129, "tdef": "typedef", "description": " Representation of a generic object in a repository ", "comments": "", "used": { - "returns": [], + "returns": [ + "git_blob_rawsize", + "git_object_string2type", + "git_object_type", + "git_odb_object_type", + "git_tag_target_type", + "git_tree_entry_type" + ], "needs": [ "git_checkout_tree", "git_describe_commit", + "git_object__size", "git_object_dup", "git_object_free", "git_object_id", @@ -30981,9 +31871,19 @@ "git_object_lookup_prefix", "git_object_owner", "git_object_peel", + "git_object_rawcontent_is_valid", "git_object_short_id", "git_object_type", + "git_object_type2string", + "git_object_typeisloose", + "git_odb_hash", + "git_odb_hashfile", + "git_odb_open_rstream", + "git_odb_open_wstream", + "git_odb_read_header", + "git_odb_write", "git_reference_peel", + "git_repository_hashfile", "git_reset", "git_reset_default", "git_revparse_ext", @@ -30998,24 +31898,122 @@ } } ], + [ + "git_object_t", + { + "decl": [ + "GIT_OBJECT_ANY", + "GIT_OBJECT_INVALID", + "GIT_OBJECT_COMMIT", + "GIT_OBJECT_TREE", + "GIT_OBJECT_BLOB", + "GIT_OBJECT_TAG", + "GIT_OBJECT_OFS_DELTA", + "GIT_OBJECT_REF_DELTA" + ], + "type": "enum", + "file": "git2/types.h", + "line": 73, + "lineto": 82, + "block": "GIT_OBJECT_ANY\nGIT_OBJECT_INVALID\nGIT_OBJECT_COMMIT\nGIT_OBJECT_TREE\nGIT_OBJECT_BLOB\nGIT_OBJECT_TAG\nGIT_OBJECT_OFS_DELTA\nGIT_OBJECT_REF_DELTA", + "tdef": "typedef", + "description": " Basic type (loose or packed) of any Git object. ", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_OBJECT_ANY", + "comments": "Object can be any of the following
\n", + "value": -2 + }, + { + "type": "int", + "name": "GIT_OBJECT_INVALID", + "comments": "Object is invalid.
\n", + "value": -1 + }, + { + "type": "int", + "name": "GIT_OBJECT_COMMIT", + "comments": "A commit object.
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_OBJECT_TREE", + "comments": "A tree (directory listing) object.
\n", + "value": 2 + }, + { + "type": "int", + "name": "GIT_OBJECT_BLOB", + "comments": "A file revision object.
\n", + "value": 3 + }, + { + "type": "int", + "name": "GIT_OBJECT_TAG", + "comments": "An annotated tag object.
\n", + "value": 4 + }, + { + "type": "int", + "name": "GIT_OBJECT_OFS_DELTA", + "comments": "A delta, base is given by an offset.
\n", + "value": 6 + }, + { + "type": "int", + "name": "GIT_OBJECT_REF_DELTA", + "comments": "A delta, base is given by object id.
\n", + "value": 7 + } + ], + "used": { + "returns": [ + "git_object_string2type", + "git_object_type", + "git_odb_object_type", + "git_tag_target_type", + "git_tree_entry_type" + ], + "needs": [ + "git_object__size", + "git_object_lookup", + "git_object_lookup_bypath", + "git_object_lookup_prefix", + "git_object_peel", + "git_object_rawcontent_is_valid", + "git_object_type2string", + "git_object_typeisloose", + "git_odb_hash", + "git_odb_hashfile", + "git_odb_open_rstream", + "git_odb_open_wstream", + "git_odb_read_header", + "git_odb_write", + "git_reference_peel", + "git_repository_hashfile" + ] + } + } + ], [ "git_odb", { "decl": "git_odb", "type": "struct", "value": "git_odb", - "file": "types.h", - "line": 81, - "lineto": 81, + "file": "git2/types.h", + "line": 88, + "lineto": 88, "tdef": "typedef", - "description": " An open object database handle. ", + "description": " An object database stores the objects (commit, trees, blobs, tags,\n etc) for a repository.", "comments": "", "used": { "returns": [], "needs": [ "git_indexer_new", - "git_mempack_new", - "git_mempack_reset", "git_odb_add_alternate", "git_odb_add_backend", "git_odb_add_disk_alternate", @@ -31023,12 +32021,12 @@ "git_odb_backend_one_pack", "git_odb_backend_pack", "git_odb_exists", + "git_odb_exists_ext", "git_odb_exists_prefix", "git_odb_expand_ids", "git_odb_foreach", "git_odb_free", "git_odb_get_backend", - "git_odb_init_backend", "git_odb_new", "git_odb_num_backends", "git_odb_object_data", @@ -31044,14 +32042,15 @@ "git_odb_read_header", "git_odb_read_prefix", "git_odb_refresh", + "git_odb_set_commit_graph", "git_odb_stream_finalize_write", "git_odb_stream_free", "git_odb_stream_read", "git_odb_stream_write", "git_odb_write", + "git_odb_write_multi_pack_index", "git_odb_write_pack", "git_repository_odb", - "git_repository_set_odb", "git_repository_wrap_odb" ] } @@ -31063,115 +32062,118 @@ "decl": "git_odb_backend", "type": "struct", "value": "git_odb_backend", - "file": "types.h", - "line": 84, - "lineto": 84, - "block": "unsigned int version\ngit_odb * odb\nint (*)(void **, int *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, int *, git_otype *, git_odb_backend *, const git_oid *, int) read_prefix\nint (*)(int *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, int, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, int) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free", + "file": "git2/types.h", + "line": 91, + "lineto": 91, "tdef": "typedef", "description": " A custom backend in an ODB ", "comments": "", + "used": { + "returns": [], + "needs": [ + "git_odb_add_alternate", + "git_odb_add_backend", + "git_odb_backend_loose", + "git_odb_backend_one_pack", + "git_odb_backend_pack", + "git_odb_get_backend" + ] + } + } + ], + [ + "git_odb_backend_loose_options", + { + "decl": [ + "unsigned int version", + "uint32_t flags", + "int compression_level", + "unsigned int dir_mode", + "unsigned int file_mode", + "git_oid_t oid_type" + ], + "type": "struct", + "value": "git_odb_backend_loose_options", + "file": "git2/odb_backend.h", + "line": 49, + "lineto": 75, + "block": "unsigned int version\nuint32_t flags\nint compression_level\nunsigned int dir_mode\nunsigned int file_mode\ngit_oid_t oid_type", + "tdef": "typedef", + "description": " Options for configuring a loose object backend. ", + "comments": "", "fields": [ { "type": "unsigned int", "name": "version", - "comments": "" - }, - { - "type": "git_odb *", - "name": "odb", - "comments": "" - }, - { - "type": "int (*)(void **, int *, git_otype *, git_odb_backend *, const git_oid *)", - "name": "read", - "comments": "" - }, - { - "type": "int (*)(git_oid *, void **, int *, git_otype *, git_odb_backend *, const git_oid *, int)", - "name": "read_prefix", - "comments": "" - }, - { - "type": "int (*)(int *, git_otype *, git_odb_backend *, const git_oid *)", - "name": "read_header", - "comments": "" - }, - { - "type": "int (*)(git_odb_backend *, const git_oid *, const void *, int, git_otype)", - "name": "write", - "comments": " Write an object into the backend. The id of the object has\n already been calculated and is passed in." - }, - { - "type": "int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)", - "name": "writestream", - "comments": "" + "comments": " version for the struct " }, { - "type": "int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)", - "name": "readstream", - "comments": "" + "type": "uint32_t", + "name": "flags", + "comments": " A combination of the `git_odb_backend_loose_flag_t` types. " }, { - "type": "int (*)(git_odb_backend *, const git_oid *)", - "name": "exists", - "comments": "" + "type": "int", + "name": "compression_level", + "comments": " zlib compression level to use (0-9), where 1 is the fastest\n at the expense of larger files, and 9 produces the best\n compression at the expense of speed. 0 indicates that no\n compression should be performed. -1 is the default (currently\n optimizing for speed)." }, { - "type": "int (*)(git_oid *, git_odb_backend *, const git_oid *, int)", - "name": "exists_prefix", - "comments": "" + "type": "unsigned int", + "name": "dir_mode", + "comments": " Permissions to use creating a directory or 0 for defaults " }, { - "type": "int (*)(git_odb_backend *)", - "name": "refresh", - "comments": " If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)." + "type": "unsigned int", + "name": "file_mode", + "comments": " Permissions to use creating a file or 0 for defaults " }, { - "type": "int (*)(git_odb_backend *, git_odb_foreach_cb, void *)", - "name": "foreach", - "comments": "" - }, + "type": "git_oid_t", + "name": "oid_type", + "comments": " Type of object IDs to use for this object database, or\n 0 for default (currently SHA1)." + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_odb_backend_pack_options", + { + "decl": ["unsigned int version", "git_oid_t oid_type"], + "type": "struct", + "value": "git_odb_backend_pack_options", + "file": "git2/odb_backend.h", + "line": 24, + "lineto": 32, + "block": "unsigned int version\ngit_oid_t oid_type", + "tdef": "typedef", + "description": " Options for configuring a packfile object backend. ", + "comments": "", + "fields": [ { - "type": "int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)", - "name": "writepack", - "comments": "" + "type": "unsigned int", + "name": "version", + "comments": " version for the struct " }, { - "type": "void (*)(git_odb_backend *)", - "name": "free", - "comments": " Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function." + "type": "git_oid_t", + "name": "oid_type", + "comments": " Type of object IDs to use for this object database, or\n 0 for default (currently SHA1)." } ], - "used": { - "returns": [], - "needs": [ - "git_mempack_new", - "git_mempack_reset", - "git_odb_add_alternate", - "git_odb_add_backend", - "git_odb_backend_loose", - "git_odb_backend_one_pack", - "git_odb_backend_pack", - "git_odb_get_backend", - "git_odb_init_backend" - ] - } + "used": { "returns": [], "needs": [] } } ], [ "git_odb_expand_id", { - "decl": [ - "git_oid id", - "unsigned short length", - "git_otype type" - ], + "decl": ["git_oid id", "unsigned short length", "git_object_t type"], "type": "struct", "value": "git_odb_expand_id", - "file": "odb.h", - "line": 180, - "lineto": 195, - "block": "git_oid id\nunsigned short length\ngit_otype type", + "file": "git2/odb.h", + "line": 250, + "lineto": 265, + "block": "git_oid id\nunsigned short length\ngit_object_t type", "tdef": "typedef", "description": " The information about object IDs to query in `git_odb_expand_ids`,\n which will be populated upon return.", "comments": "", @@ -31187,17 +32189,35 @@ "comments": " The length of the object ID (in nibbles, or packets of 4 bits; the\n number of hex characters)" }, { - "type": "git_otype", + "type": "git_object_t", "name": "type", - "comments": " The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJ_ANY` to query for any object matching the ID." + "comments": " The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJECT_ANY` to query for any object matching the ID." } ], - "used": { - "returns": [], - "needs": [ - "git_odb_expand_ids" - ] - } + "used": { "returns": [], "needs": ["git_odb_expand_ids"] } + } + ], + [ + "git_odb_lookup_flags_t", + { + "decl": ["GIT_ODB_LOOKUP_NO_REFRESH"], + "type": "enum", + "file": "git2/odb.h", + "line": 26, + "lineto": 34, + "block": "GIT_ODB_LOOKUP_NO_REFRESH", + "tdef": "typedef", + "description": " Flags controlling the behavior of ODB lookup operations ", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_ODB_LOOKUP_NO_REFRESH", + "comments": "Don't call git_odb_refresh if the lookup fails. Useful when doing\n a batch of lookup operations for objects that may legitimately not\n exist. When using this flag, you may wish to manually call\n git_odb_refresh before processing a batch of objects.
SHA1
\n", + "value": 1 } ], - "used": { - "returns": [], - "needs": [ - "git_merge_bases", - "git_merge_bases_many", - "git_oidarray_free" - ] - } + "used": { "returns": ["git_repository_oid_type"], "needs": [] } } ], [ - "git_otype", + "git_oidarray", { - "decl": [ - "GIT_OBJ_ANY", - "GIT_OBJ_BAD", - "GIT_OBJ__EXT1", - "GIT_OBJ_COMMIT", - "GIT_OBJ_TREE", - "GIT_OBJ_BLOB", - "GIT_OBJ_TAG", - "GIT_OBJ__EXT2", - "GIT_OBJ_OFS_DELTA", - "GIT_OBJ_REF_DELTA" - ], - "type": "enum", - "file": "types.h", - "line": 67, - "lineto": 78, - "block": "GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA", + "decl": ["git_oid * ids", "size_t count"], + "type": "struct", + "value": "git_oidarray", + "file": "git2/oidarray.h", + "line": 23, + "lineto": 26, + "block": "git_oid * ids\nsize_t count", "tdef": "typedef", - "description": " Basic type (loose or packed) of any Git object. ", + "description": " Array of object ids ", "comments": "", "fields": [ - { - "type": "int", - "name": "GIT_OBJ_ANY", - "comments": "Object can be any of the following
\n", - "value": -2 - }, - { - "type": "int", - "name": "GIT_OBJ_BAD", - "comments": "Object is invalid.
\n", - "value": -1 - }, - { - "type": "int", - "name": "GIT_OBJ__EXT1", - "comments": "Reserved for future use.
\n", - "value": 0 - }, - { - "type": "int", - "name": "GIT_OBJ_COMMIT", - "comments": "A commit object.
\n", - "value": 1 - }, - { - "type": "int", - "name": "GIT_OBJ_TREE", - "comments": "A tree (directory listing) object.
\n", - "value": 2 - }, - { - "type": "int", - "name": "GIT_OBJ_BLOB", - "comments": "A file revision object.
\n", - "value": 3 - }, - { - "type": "int", - "name": "GIT_OBJ_TAG", - "comments": "An annotated tag object.
\n", - "value": 4 - }, - { - "type": "int", - "name": "GIT_OBJ__EXT2", - "comments": "Reserved for future use.
\n", - "value": 5 - }, - { - "type": "int", - "name": "GIT_OBJ_OFS_DELTA", - "comments": "A delta, base is given by an offset.
\n", - "value": 6 - }, - { - "type": "int", - "name": "GIT_OBJ_REF_DELTA", - "comments": "A delta, base is given by object id.
\n", - "value": 7 - } + { "type": "git_oid *", "name": "ids", "comments": "" }, + { "type": "size_t", "name": "count", "comments": "" } ], "used": { - "returns": [ - "git_object_string2type", - "git_object_type", - "git_odb_object_type", - "git_tag_target_type", - "git_tree_entry_type" - ], + "returns": [], "needs": [ - "git_object__size", - "git_object_lookup", - "git_object_lookup_bypath", - "git_object_lookup_prefix", - "git_object_peel", - "git_object_type2string", - "git_object_typeisloose", - "git_odb_hash", - "git_odb_hashfile", - "git_odb_open_wstream", - "git_odb_read_header", - "git_odb_write", - "git_reference_peel", - "git_repository_hashfile" + "git_merge_bases", + "git_merge_bases_many", + "git_oidarray_dispose", + "git_oidarray_free" ] } } @@ -31709,9 +32628,9 @@ "decl": "git_packbuilder", "type": "struct", "value": "git_packbuilder", - "file": "types.h", - "line": 153, - "lineto": 153, + "file": "git2/types.h", + "line": 177, + "lineto": 177, "tdef": "typedef", "description": " Representation of a git packbuilder ", "comments": "", @@ -31726,11 +32645,13 @@ "git_packbuilder_insert_recur", "git_packbuilder_insert_tree", "git_packbuilder_insert_walk", + "git_packbuilder_name", "git_packbuilder_new", "git_packbuilder_object_count", "git_packbuilder_set_callbacks", "git_packbuilder_set_threads", "git_packbuilder_write", + "git_packbuilder_write_buf", "git_packbuilder_written" ] } @@ -31744,9 +32665,9 @@ "GIT_PACKBUILDER_DELTAFICATION" ], "type": "enum", - "file": "pack.h", - "line": 51, - "lineto": 54, + "file": "git2/pack.h", + "line": 52, + "lineto": 55, "block": "GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION", "tdef": "typedef", "description": " Stages that are reported by the packbuilder progress callback.", @@ -31765,10 +32686,7 @@ "value": 1 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -31777,7 +32695,7 @@ "decl": "git_patch", "type": "struct", "value": "git_patch", - "file": "patch.h", + "file": "git2/patch.h", "line": 29, "lineto": 29, "tdef": "typedef", @@ -31797,6 +32715,7 @@ "git_patch_line_stats", "git_patch_num_hunks", "git_patch_num_lines_in_hunk", + "git_patch_owner", "git_patch_print", "git_patch_size", "git_patch_to_buf" @@ -31804,15 +32723,50 @@ } } ], + [ + "git_path_fs", + { + "decl": ["GIT_PATH_FS_GENERIC", "GIT_PATH_FS_NTFS", "GIT_PATH_FS_HFS"], + "type": "enum", + "file": "git2/sys/path.h", + "line": 44, + "lineto": 51, + "block": "GIT_PATH_FS_GENERIC\nGIT_PATH_FS_NTFS\nGIT_PATH_FS_HFS", + "tdef": "typedef", + "description": " The kinds of checks to perform according to which filesystem we are trying to\n protect.", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_PATH_FS_GENERIC", + "comments": "Do both NTFS- and HFS-specific checks
\n", + "value": 0 + }, + { + "type": "int", + "name": "GIT_PATH_FS_NTFS", + "comments": "Do NTFS-specific checks only
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_PATH_FS_HFS", + "comments": "Do HFS-specific checks only
\n", + "value": 2 + } + ], + "used": { "returns": [], "needs": [] } + } + ], [ "git_pathspec", { "decl": "git_pathspec", "type": "struct", "value": "git_pathspec", - "file": "pathspec.h", - "line": 20, - "lineto": 20, + "file": "git2/pathspec.h", + "line": 27, + "lineto": 27, "tdef": "typedef", "description": " Compiled pathspec", "comments": "", @@ -31849,13 +32803,13 @@ "GIT_PATHSPEC_FAILURES_ONLY" ], "type": "enum", - "file": "pathspec.h", - "line": 48, - "lineto": 56, + "file": "git2/pathspec.h", + "line": 37, + "lineto": 80, "block": "GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY", "tdef": "typedef", "description": " Options controlling how pathspec match should be executed", - "comments": "git_pathspec_match_list_entrycount will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the git_pathspec_match_list should track which patterns matched which files so that at the end of the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the git_pathspec_match_list does not need to keep the actual matching filenames. Use this to just test if there were any matches at all or in combination with GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise\n match will use native case sensitivity of platform filesystem
\n", "value": 1 }, { "type": "int", "name": "GIT_PATHSPEC_USE_CASE", - "comments": "", + "comments": "GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise\n match will use native case sensitivity of platform filesystem
\n", "value": 2 }, { "type": "int", "name": "GIT_PATHSPEC_NO_GLOB", - "comments": "", + "comments": "GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple\n string comparison for matching
\n", "value": 4 }, { "type": "int", "name": "GIT_PATHSPEC_NO_MATCH_ERROR", - "comments": "", + "comments": "GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error\n code GIT_ENOTFOUND if no matches are found; otherwise no matches is\n still success (return 0) but git_pathspec_match_list_entrycount\n will indicate 0 matches.
GIT_PATHSPEC_FIND_FAILURES means that the git_pathspec_match_list\n should track which patterns matched which files so that at the end of\n the match we can identify patterns that did not match any files.
GIT_PATHSPEC_FAILURES_ONLY means that the git_pathspec_match_list\n does not need to keep the actual matching filenames. Use this to\n just test if there were any matches at all or in combination with\n GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.
Note that not all types may be supported, depending on the platform and compilation options.
\n", "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" - }, + { "type": "unsigned int", "name": "version", "comments": "" }, { "type": "git_proxy_t", "name": "type", @@ -31972,14 +32919,14 @@ "comments": " The URL of the proxy." }, { - "type": "git_cred_acquire_cb", + "type": "git_credential_acquire_cb", "name": "credentials", "comments": " This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set." }, { "type": "git_transport_certificate_check_cb", "name": "certificate_check", - "comments": " If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error." + "comments": " If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 0 to allow the connection\n or a negative value to indicate an error." }, { "type": "void *", @@ -31989,25 +32936,18 @@ ], "used": { "returns": [], - "needs": [ - "git_proxy_init_options", - "git_remote_connect" - ] + "needs": ["git_proxy_options_init", "git_remote_connect"] } } ], [ "git_proxy_t", { - "decl": [ - "GIT_PROXY_NONE", - "GIT_PROXY_AUTO", - "GIT_PROXY_SPECIFIED" - ], + "decl": ["GIT_PROXY_NONE", "GIT_PROXY_AUTO", "GIT_PROXY_SPECIFIED"], "type": "enum", - "file": "proxy.h", - "line": 18, - "lineto": 34, + "file": "git2/proxy.h", + "line": 26, + "lineto": 42, "block": "GIT_PROXY_NONE\nGIT_PROXY_AUTO\nGIT_PROXY_SPECIFIED", "tdef": "typedef", "description": " The type of proxy to use.", @@ -32016,7 +32956,7 @@ { "type": "int", "name": "GIT_PROXY_NONE", - "comments": "Do not attempt to connect through a proxy
\n\nIf built against lbicurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.
\n", + "comments": "Do not attempt to connect through a proxy
\n\nIf built against libcurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.
\n", "value": 0 }, { @@ -32032,10 +32972,7 @@ "value": 2 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -32044,17 +32981,17 @@ "decl": "git_push", "type": "struct", "value": "git_push", - "file": "types.h", - "line": 236, - "lineto": 236, + "file": "git2/types.h", + "line": 269, + "lineto": 269, "tdef": "typedef", "description": " Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.", "comments": "", "used": { "returns": [], "needs": [ - "git_push_init_options", "git_push_negotiation", + "git_push_options_init", "git_remote_push", "git_remote_upload" ] @@ -32069,23 +33006,21 @@ "unsigned int pb_parallelism", "git_remote_callbacks callbacks", "git_proxy_options proxy_opts", - "git_strarray custom_headers" + "git_remote_redirect_t follow_redirects", + "git_strarray custom_headers", + "git_strarray remote_push_options" ], "type": "struct", "value": "git_push_options", - "file": "remote.h", - "line": 585, - "lineto": 612, - "block": "unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_strarray custom_headers", + "file": "git2/remote.h", + "line": 860, + "lineto": 899, + "block": "unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_remote_redirect_t follow_redirects\ngit_strarray custom_headers\ngit_strarray remote_push_options", "tdef": "typedef", "description": " Controls the behavior of a git_push object.", "comments": "", "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" - }, + { "type": "unsigned int", "name": "version", "comments": "" }, { "type": "unsigned int", "name": "pb_parallelism", @@ -32101,16 +33036,26 @@ "name": "proxy_opts", "comments": " Proxy options to use, by default no proxy is used." }, + { + "type": "git_remote_redirect_t", + "name": "follow_redirects", + "comments": " Whether to allow off-site redirects. If this is not\n specified, the `http.followRedirects` configuration setting\n will be consulted." + }, { "type": "git_strarray", "name": "custom_headers", "comments": " Extra headers for this push operation" + }, + { + "type": "git_strarray", + "name": "remote_push_options", + "comments": " \"Push options\" to deliver to the remote." } ], "used": { "returns": [], "needs": [ - "git_push_init_options", + "git_push_options_init", "git_remote_push", "git_remote_upload" ] @@ -32128,9 +33073,9 @@ ], "type": "struct", "value": "git_push_update", - "file": "remote.h", - "line": 343, - "lineto": 360, + "file": "git2/remote.h", + "line": 490, + "lineto": 507, "block": "char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst", "tdef": "typedef", "description": " Represents an update which will be performed on the remote during push", @@ -32157,12 +33102,7 @@ "comments": " The new target for the reference" } ], - "used": { - "returns": [], - "needs": [ - "git_push_negotiation" - ] - } + "used": { "returns": [], "needs": ["git_push_negotiation"] } } ], [ @@ -32171,29 +33111,31 @@ "decl": "git_rebase", "type": "struct", "value": "git_rebase", - "file": "types.h", - "line": 187, - "lineto": 187, + "file": "git2/types.h", + "line": 220, + "lineto": 220, "tdef": "typedef", "description": " Representation of a rebase ", "comments": "", "used": { - "returns": [ - "git_rebase_operation_byindex" - ], + "returns": ["git_rebase_operation_byindex"], "needs": [ "git_rebase_abort", "git_rebase_commit", "git_rebase_finish", "git_rebase_free", "git_rebase_init", - "git_rebase_init_options", "git_rebase_inmemory_index", "git_rebase_next", + "git_rebase_onto_id", + "git_rebase_onto_name", "git_rebase_open", "git_rebase_operation_byindex", "git_rebase_operation_current", - "git_rebase_operation_entrycount" + "git_rebase_operation_entrycount", + "git_rebase_options_init", + "git_rebase_orig_head_id", + "git_rebase_orig_head_name" ] } } @@ -32208,9 +33150,9 @@ ], "type": "struct", "value": "git_rebase_operation", - "file": "rebase.h", - "line": 130, - "lineto": 145, + "file": "git2/rebase.h", + "line": 174, + "lineto": 189, "block": "git_rebase_operation_t type\nconst git_oid id\nconst char * exec", "tdef": "typedef", "description": " A rebase operation", @@ -32233,12 +33175,8 @@ } ], "used": { - "returns": [ - "git_rebase_operation_byindex" - ], - "needs": [ - "git_rebase_next" - ] + "returns": ["git_rebase_operation_byindex"], + "needs": ["git_rebase_next"] } } ], @@ -32254,9 +33192,9 @@ "GIT_REBASE_OPERATION_EXEC" ], "type": "enum", - "file": "rebase.h", - "line": 78, - "lineto": 114, + "file": "git2/rebase.h", + "line": 119, + "lineto": 155, "block": "GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC", "tdef": "typedef", "description": " Type of rebase operation in-progress after calling `git_rebase_next`.", @@ -32299,60 +33237,82 @@ "value": 5 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ - "git_ref_t", + "git_rebase_options", { "decl": [ - "GIT_REF_INVALID", - "GIT_REF_OID", - "GIT_REF_SYMBOLIC", - "GIT_REF_LISTALL" + "unsigned int version", + "int quiet", + "int inmemory", + "const char * rewrite_notes_ref", + "git_merge_options merge_options", + "git_checkout_options checkout_options", + "git_commit_create_cb commit_create_cb", + "int (*)(git_buf *, git_buf *, const char *, void *) signing_cb", + "void * payload" ], - "type": "enum", - "file": "types.h", - "line": 190, - "lineto": 195, - "block": "GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL", + "type": "struct", + "value": "git_rebase_options", + "file": "git2/rebase.h", + "line": 32, + "lineto": 114, + "block": "unsigned int version\nint quiet\nint inmemory\nconst char * rewrite_notes_ref\ngit_merge_options merge_options\ngit_checkout_options checkout_options\ngit_commit_create_cb commit_create_cb\nint (*)(git_buf *, git_buf *, const char *, void *) signing_cb\nvoid * payload", "tdef": "typedef", - "description": " Basic type of any Git reference. ", - "comments": "", + "description": " Rebase options", + "comments": "Use to tell the rebase machinery how to operate.
\n", "fields": [ + { "type": "unsigned int", "name": "version", "comments": "" }, + { + "type": "int", + "name": "quiet", + "comments": " Used by `git_rebase_init`, this will instruct other clients working\n on this rebase that you want a quiet rebase experience, which they\n may choose to provide in an application-specific manner. This has no\n effect upon libgit2 directly, but is provided for interoperability\n between Git tools." + }, + { + "type": "int", + "name": "inmemory", + "comments": " Used by `git_rebase_init`, this will begin an in-memory rebase,\n which will allow callers to step through the rebase operations and\n commit the rebased changes, but will not rewind HEAD or update the\n repository to be in a rebasing state. This will not interfere with\n the working directory (if there is one)." + }, + { + "type": "const char *", + "name": "rewrite_notes_ref", + "comments": " Used by `git_rebase_finish`, this is the name of the notes reference\n used to rewrite notes for rebased commits when finishing the rebase;\n if NULL, the contents of the configuration option `notes.rewriteRef`\n is examined, unless the configuration option `notes.rewrite.rebase`\n is set to false. If `notes.rewriteRef` is also NULL, notes will\n not be rewritten." + }, + { + "type": "git_merge_options", + "name": "merge_options", + "comments": " Options to control how trees are merged during `git_rebase_next`." + }, { - "type": "int", - "name": "GIT_REF_INVALID", - "comments": "Invalid reference
\n", - "value": 0 + "type": "git_checkout_options", + "name": "checkout_options", + "comments": " Options to control how files are written during `git_rebase_init`,\n `git_rebase_next` and `git_rebase_abort`. Note that during\n `abort`, these options will add an implied `GIT_CHECKOUT_FORCE`\n to match git semantics." }, { - "type": "int", - "name": "GIT_REF_OID", - "comments": "A reference which points at an object id
\n", - "value": 1 + "type": "git_commit_create_cb", + "name": "commit_create_cb", + "comments": " Optional callback that allows users to override commit\n creation in `git_rebase_commit`. If specified, users can\n create their own commit and provide the commit ID, which\n may be useful for signing commits or otherwise customizing\n the commit creation.\n\n If this callback returns `GIT_PASSTHROUGH`, then\n `git_rebase_commit` will continue to create the commit." }, { - "type": "int", - "name": "GIT_REF_SYMBOLIC", - "comments": "A reference which points at another reference
\n", - "value": 2 + "type": "int (*)(git_buf *, git_buf *, const char *, void *)", + "name": "signing_cb", + "comments": " If provided, this will be called with the commit content, allowing\n a signature to be added to the rebase commit. Can be skipped with\n GIT_PASSTHROUGH. If GIT_PASSTHROUGH is returned, a commit will be made\n without a signature.\n\n This field is only used when performing git_rebase_commit.\n\n This callback is not invoked if a `git_commit_create_cb` is\n specified.\n\n This callback is deprecated; users should provide a\n creation callback as `commit_create_cb` that produces a\n commit buffer, signs it, and commits it." }, { - "type": "int", - "name": "GIT_REF_LISTALL", - "comments": "", - "value": 3 + "type": "void *", + "name": "payload", + "comments": " This will be passed to each of the callbacks in this struct\n as the last parameter." } ], "used": { - "returns": [ - "git_reference_type" - ], - "needs": [] + "returns": [], + "needs": [ + "git_rebase_init", + "git_rebase_open", + "git_rebase_options_init" + ] } } ], @@ -32362,24 +33322,20 @@ "decl": "git_refdb", "type": "struct", "value": "git_refdb", - "file": "types.h", - "line": 96, - "lineto": 96, + "file": "git2/types.h", + "line": 108, + "lineto": 108, "tdef": "typedef", "description": " An open refs database handle. ", "comments": "", "used": { "returns": [], "needs": [ - "git_refdb_backend_fs", "git_refdb_compress", "git_refdb_free", - "git_refdb_init_backend", "git_refdb_new", "git_refdb_open", - "git_refdb_set_backend", - "git_repository_refdb", - "git_repository_set_refdb" + "git_repository_refdb" ] } } @@ -32390,108 +33346,13 @@ "decl": "git_refdb_backend", "type": "struct", "value": "git_refdb_backend", - "file": "types.h", - "line": 99, - "lineto": 99, - "block": "unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock", + "file": "git2/types.h", + "line": 111, + "lineto": 111, "tdef": "typedef", "description": " A custom backend for refs ", "comments": "", - "fields": [ - { - "type": "unsigned int", - "name": "version", - "comments": "" - }, - { - "type": "int (*)(int *, git_refdb_backend *, const char *)", - "name": "exists", - "comments": " Queries the refdb backend to determine if the given ref_name\n exists. A refdb implementation must provide this function." - }, - { - "type": "int (*)(git_reference **, git_refdb_backend *, const char *)", - "name": "lookup", - "comments": " Queries the refdb backend for a given reference. A refdb\n implementation must provide this function." - }, - { - "type": "int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)", - "name": "iterator", - "comments": " Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function." - }, - { - "type": "int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)", - "name": "write", - "comments": "" - }, - { - "type": "int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)", - "name": "rename", - "comments": "" - }, - { - "type": "int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)", - "name": "del", - "comments": " Deletes the given reference (and if necessary its reflog)\n from the refdb. A refdb implementation must provide this\n function." - }, - { - "type": "int (*)(git_refdb_backend *)", - "name": "compress", - "comments": " Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific. (For on-disk reference\n databases, this may pack all loose references.) A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done." - }, - { - "type": "int (*)(git_refdb_backend *, const char *)", - "name": "has_log", - "comments": " Query whether a particular reference has a log (may be empty)" - }, - { - "type": "int (*)(git_refdb_backend *, const char *)", - "name": "ensure_log", - "comments": " Make sure a particular reference will have a reflog which\n will be appended to on writes." - }, - { - "type": "void (*)(git_refdb_backend *)", - "name": "free", - "comments": " Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function." - }, - { - "type": "int (*)(git_reflog **, git_refdb_backend *, const char *)", - "name": "reflog_read", - "comments": " Read the reflog for the given reference name." - }, - { - "type": "int (*)(git_refdb_backend *, git_reflog *)", - "name": "reflog_write", - "comments": " Write a reflog to disk." - }, - { - "type": "int (*)(git_refdb_backend *, const char *, const char *)", - "name": "reflog_rename", - "comments": " Rename a reflog" - }, - { - "type": "int (*)(git_refdb_backend *, const char *)", - "name": "reflog_delete", - "comments": " Remove a reflog." - }, - { - "type": "int (*)(void **, git_refdb_backend *, const char *)", - "name": "lock", - "comments": " Lock a reference. The opaque parameter will be passed to the unlock function" - }, - { - "type": "int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)", - "name": "unlock", - "comments": " Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)" - } - ], - "used": { - "returns": [], - "needs": [ - "git_refdb_backend_fs", - "git_refdb_init_backend", - "git_refdb_set_backend" - ] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -32500,22 +33361,20 @@ "decl": "git_reference", "type": "struct", "value": "git_reference", - "file": "types.h", - "line": 169, - "lineto": 169, + "file": "git2/types.h", + "line": 194, + "lineto": 194, "tdef": "typedef", "description": " In-memory representation of a reference. ", "comments": "", "used": { - "returns": [ - "git_reference__alloc", - "git_reference__alloc_symbolic" - ], + "returns": ["git_reference_type"], "needs": [ "git_annotated_commit_from_ref", "git_branch_create", "git_branch_create_from_annotated", "git_branch_delete", + "git_branch_is_checked_out", "git_branch_is_head", "git_branch_lookup", "git_branch_move", @@ -32523,12 +33382,15 @@ "git_branch_next", "git_branch_set_upstream", "git_branch_upstream", + "git_merge_analysis_for_ref", "git_reference_cmp", "git_reference_create", "git_reference_create_matching", "git_reference_delete", + "git_reference_dup", "git_reference_dwim", "git_reference_foreach", + "git_reference_foreach_cb", "git_reference_foreach_glob", "git_reference_foreach_name", "git_reference_free", @@ -32557,46 +33419,70 @@ "git_reference_target_peel", "git_reference_type", "git_repository_head", + "git_repository_head_for_worktree", "git_revparse_ext" ] } } ], [ - "git_reference_iterator", + "git_reference_format_t", { - "decl": "git_reference_iterator", - "type": "struct", - "value": "git_reference_iterator", - "file": "types.h", - "line": 172, - "lineto": 172, - "block": "git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free", + "decl": [ + "GIT_REFERENCE_FORMAT_NORMAL", + "GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL", + "GIT_REFERENCE_FORMAT_REFSPEC_PATTERN", + "GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND" + ], + "type": "enum", + "file": "git2/refs.h", + "line": 663, + "lineto": 692, + "block": "GIT_REFERENCE_FORMAT_NORMAL\nGIT_REFERENCE_FORMAT_ALLOW_ONELEVEL\nGIT_REFERENCE_FORMAT_REFSPEC_PATTERN\nGIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND", "tdef": "typedef", - "description": " Iterator for references ", + "description": " Normalization options for reference lookup", "comments": "", "fields": [ { - "type": "git_refdb *", - "name": "db", - "comments": "" + "type": "int", + "name": "GIT_REFERENCE_FORMAT_NORMAL", + "comments": "No particular normalization.
\n", + "value": 0 }, { - "type": "int (*)(git_reference **, git_reference_iterator *)", - "name": "next", - "comments": " Return the current reference and advance the iterator." + "type": "int", + "name": "GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL", + "comments": "Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)
\n", + "value": 1 }, { - "type": "int (*)(const char **, git_reference_iterator *)", - "name": "next_name", - "comments": " Return the name of the current reference and advance the iterator" + "type": "int", + "name": "GIT_REFERENCE_FORMAT_REFSPEC_PATTERN", + "comments": "Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n<star
\n\n\n\n", + "value": 2 }, { - "type": "void (*)(git_reference_iterator *)", - "name": "free", - "comments": " Free the iterator" + "type": "int", + "name": "GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND", + "comments": ")\n in place of a one full pathname component\n (e.g., foo/\n<star\n/bar but not foo/bar\n<star\n).
\n
Interpret the name as part of a refspec in shorthand form\n so the ONELEVEL naming rules aren't enforced and 'master'\n becomes a valid name.
No particular normalization.
\n", + "name": "GIT_REFERENCE_INVALID", + "comments": "Invalid reference
\n", "value": 0 }, { "type": "int", - "name": "GIT_REF_FORMAT_ALLOW_ONELEVEL", - "comments": "Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)
\n", + "name": "GIT_REFERENCE_DIRECT", + "comments": "A reference that points at an object id
\n", "value": 1 }, { "type": "int", - "name": "GIT_REF_FORMAT_REFSPEC_PATTERN", - "comments": "Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n<star
\n\n\n\n", + "name": "GIT_REFERENCE_SYMBOLIC", + "comments": ")\n in place of a one full pathname component\n (e.g., foo/\n<star\n/bar but not foo/bar\n<star\n).
\n
A reference that points at another reference
\n", "value": 2 }, { "type": "int", - "name": "GIT_REF_FORMAT_REFSPEC_SHORTHAND", - "comments": "Interpret the name as part of a refspec in shorthand form\n so the ONELEVEL naming rules aren't enforced and 'master'\n becomes a valid name.
Set the callbacks to be called by the remote when informing the user about the progress of the network operations.
\n", @@ -32860,7 +33770,7 @@ { "type": "unsigned int", "name": "version", - "comments": "" + "comments": " The version " }, { "type": "git_transport_message_cb", @@ -32868,29 +33778,29 @@ "comments": " Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output)." }, { - "type": "int (*)(git_remote_completion_type, void *)", + "type": "int (*)(git_remote_completion_t, void *)", "name": "completion", - "comments": " Completion is called when different parts of the download\n process are done (currently unused)." + "comments": "" }, { - "type": "git_cred_acquire_cb", + "type": "git_credential_acquire_cb", "name": "credentials", "comments": " This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set." }, { "type": "git_transport_certificate_check_cb", "name": "certificate_check", - "comments": " If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error." + "comments": " If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 0 to allow the connection\n or a negative value to indicate an error." }, { - "type": "git_transfer_progress_cb", + "type": "git_indexer_progress_cb", "name": "transfer_progress", "comments": " During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer." }, { "type": "int (*)(const char *, const git_oid *, const git_oid *, void *)", "name": "update_tips", - "comments": " Each time a reference is updated locally, this function\n will be called with information about it." + "comments": "" }, { "type": "git_packbuilder_progress", @@ -32898,14 +33808,14 @@ "comments": " Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected." }, { - "type": "git_push_transfer_progress", + "type": "git_push_transfer_progress_cb", "name": "push_transfer_progress", "comments": " Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected." }, { - "type": "int (*)(const char *, const char *, void *)", + "type": "git_push_update_reference_cb", "name": "push_update_reference", - "comments": " Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given." + "comments": " See documentation of git_push_update_reference_cb" }, { "type": "git_push_negotiation", @@ -32917,10 +33827,25 @@ "name": "transport", "comments": " Create the transport to use for this operation. Leave NULL\n to auto-detect." }, + { + "type": "git_remote_ready_cb", + "name": "remote_ready", + "comments": " Callback when the remote is ready to connect." + }, { "type": "void *", "name": "payload", "comments": " This will be passed to each of the callbacks in this struct\n as the last parameter." + }, + { + "type": "git_url_resolve_cb", + "name": "resolve_url", + "comments": " Resolve URL before connecting to remote.\n The returned URL will be used to connect to the remote instead.\n\n This callback is deprecated; users should use\n git_remote_ready_cb and configure the instance URL instead." + }, + { + "type": "int (*)(const char *, const git_oid *, const git_oid *, git_refspec *, void *)", + "name": "update_refs", + "comments": "" } ], "used": { @@ -32935,7 +33860,7 @@ } ], [ - "git_remote_completion_type", + "git_remote_completion_t", { "decl": [ "GIT_REMOTE_COMPLETION_DOWNLOAD", @@ -32943,9 +33868,9 @@ "GIT_REMOTE_COMPLETION_ERROR" ], "type": "enum", - "file": "remote.h", - "line": 328, - "lineto": 332, + "file": "git2/remote.h", + "line": 466, + "lineto": 470, "block": "GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR", "tdef": "typedef", "description": " Argument to the completion callback which tells it which operation\n finished.", @@ -32970,9 +33895,137 @@ "value": 2 } ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_remote_connect_options", + { + "decl": [ + "unsigned int version", + "git_remote_callbacks callbacks", + "git_proxy_options proxy_opts", + "git_remote_redirect_t follow_redirects", + "git_strarray custom_headers" + ], + "type": "struct", + "value": "git_remote_connect_options", + "file": "git2/remote.h", + "line": 928, + "lineto": 946, + "block": "unsigned int version\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_remote_redirect_t follow_redirects\ngit_strarray custom_headers", + "tdef": "typedef", + "description": " Remote creation options structure", + "comments": "Initialize with GIT_REMOTE_CREATE_OPTIONS_INIT. Alternatively, you can use git_remote_create_options_init.
Ignore the repository apply.insteadOf configuration
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC", + "comments": "Don't build a fetchspec from the name if none is set
\n", + "value": 2 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_remote_create_options", + { + "decl": [ + "unsigned int version", + "git_repository * repository", + "const char * name", + "const char * fetchspec", + "unsigned int flags" + ], + "type": "struct", + "value": "git_remote_create_options", + "file": "git2/remote.h", + "line": 97, + "lineto": 117, + "block": "unsigned int version\ngit_repository * repository\nconst char * name\nconst char * fetchspec\nunsigned int flags", + "tdef": "typedef", + "description": " Remote creation options structure", + "comments": "Initialize with GIT_REMOTE_CREATE_OPTIONS_INIT. Alternatively, you can use git_remote_create_options_init.
Do not follow any off-site redirects at any stage of\n the fetch or push.
\n", + "value": 1 }, { - "type": "git_oid", - "name": "oid", - "comments": "" + "type": "int", + "name": "GIT_REMOTE_REDIRECT_INITIAL", + "comments": "Allow off-site redirects only upon the initial request.\n This is the default.
\n", + "value": 2 }, { - "type": "git_oid", - "name": "loid", - "comments": "" - }, + "type": "int", + "name": "GIT_REMOTE_REDIRECT_ALL", + "comments": "Allow redirects at any stage in the fetch or push.
\n", + "value": 4 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_remote_update_flags", + { + "decl": [ + "GIT_REMOTE_UPDATE_FETCHHEAD", + "GIT_REMOTE_UPDATE_REPORT_UNCHANGED" + ], + "type": "enum", + "file": "git2/remote.h", + "line": 82, + "lineto": 88, + "block": "GIT_REMOTE_UPDATE_FETCHHEAD\nGIT_REMOTE_UPDATE_REPORT_UNCHANGED", + "tdef": "typedef", + "description": " How to handle reference updates.", + "comments": "", + "fields": [ { - "type": "char *", - "name": "name", - "comments": "" + "type": "int", + "name": "GIT_REMOTE_UPDATE_FETCHHEAD", + "comments": "", + "value": 1 }, { - "type": "char *", - "name": "symref_target", - "comments": " If the server send a symref mapping for this ref, this will\n point to the target." + "type": "int", + "name": "GIT_REMOTE_UPDATE_REPORT_UNCHANGED", + "comments": "", + "value": 2 } ], - "used": { - "returns": [], - "needs": [ - "git_headlist_cb", - "git_remote_ls" - ] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -33037,9 +34139,9 @@ "decl": "git_repository", "type": "struct", "value": "git_repository", - "file": "types.h", - "line": 105, - "lineto": 105, + "file": "git2/types.h", + "line": 123, + "lineto": 123, "tdef": "typedef", "description": " Representation of an existing git repository,\n including all its object contents", "comments": "", @@ -33047,9 +34149,9 @@ "returns": [ "git_blob_owner", "git_commit_owner", - "git_filter_source_repo", "git_index_owner", "git_object_owner", + "git_patch_owner", "git_reference_owner", "git_remote_owner", "git_revwalk_repository", @@ -33062,23 +34164,30 @@ "git_annotated_commit_from_ref", "git_annotated_commit_from_revspec", "git_annotated_commit_lookup", + "git_apply", + "git_apply_to_tree", "git_attr_add_macro", "git_attr_cache_flush", "git_attr_foreach", + "git_attr_foreach_ext", "git_attr_get", + "git_attr_get_ext", "git_attr_get_many", - "git_blame_file", - "git_blob_create_frombuffer", - "git_blob_create_fromchunks", - "git_blob_create_fromdisk", - "git_blob_create_fromstream", - "git_blob_create_fromworkdir", + "git_attr_get_many_ext", + "git_blob_create_from_buffer", + "git_blob_create_from_disk", + "git_blob_create_from_stream", + "git_blob_create_from_workdir", "git_blob_lookup", "git_blob_lookup_prefix", "git_branch_create", "git_branch_create_from_annotated", "git_branch_iterator_new", "git_branch_lookup", + "git_branch_remote_name", + "git_branch_upstream_merge", + "git_branch_upstream_name", + "git_branch_upstream_remote", "git_checkout_head", "git_checkout_index", "git_checkout_tree", @@ -33087,12 +34196,13 @@ "git_clone", "git_commit_create", "git_commit_create_buffer", - "git_commit_create_from_callback", + "git_commit_create_from_stage", "git_commit_create_v", "git_commit_create_with_signature", "git_commit_extract_signature", "git_commit_lookup", "git_commit_lookup_prefix", + "git_config_add_file_ondisk", "git_describe_workdir", "git_diff_commit_as_email", "git_diff_index_to_index", @@ -33103,16 +34213,19 @@ "git_diff_tree_to_workdir_with_index", "git_filter_list_apply_to_file", "git_filter_list_load", - "git_filter_list_new", + "git_filter_list_load_ext", "git_filter_list_stream_file", "git_graph_ahead_behind", "git_graph_descendant_of", + "git_graph_reachable_from_any", "git_ignore_add_rule", "git_ignore_clear_internal_rules", "git_ignore_path_is_ignored", "git_index_write_tree_to", + "git_mailmap_from_repository", "git_merge", "git_merge_analysis", + "git_merge_analysis_for_ref", "git_merge_base", "git_merge_base_many", "git_merge_base_octopus", @@ -33121,18 +34234,12 @@ "git_merge_commits", "git_merge_file_from_index", "git_merge_trees", - "git_note_create", - "git_note_foreach", - "git_note_iterator_new", - "git_note_read", - "git_note_remove", "git_object_lookup", "git_object_lookup_prefix", "git_packbuilder_new", "git_pathspec_match_workdir", "git_rebase_init", "git_rebase_open", - "git_refdb_backend_fs", "git_refdb_new", "git_refdb_open", "git_reference_create", @@ -33167,7 +34274,8 @@ "git_remote_set_autotag", "git_remote_set_pushurl", "git_remote_set_url", - "git_repository__cleanup", + "git_repository_commit_parents", + "git_repository_commondir", "git_repository_config", "git_repository_config_snapshot", "git_repository_create_cb", @@ -33178,36 +34286,35 @@ "git_repository_hashfile", "git_repository_head", "git_repository_head_detached", + "git_repository_head_detached_for_worktree", + "git_repository_head_for_worktree", "git_repository_head_unborn", "git_repository_ident", "git_repository_index", "git_repository_init", "git_repository_init_ext", - "git_repository_init_init_options", + "git_repository_init_options_init", "git_repository_is_bare", "git_repository_is_empty", "git_repository_is_shallow", + "git_repository_is_worktree", + "git_repository_item_path", "git_repository_mergehead_foreach", "git_repository_message", "git_repository_message_remove", - "git_repository_new", "git_repository_odb", + "git_repository_oid_type", "git_repository_open", "git_repository_open_bare", "git_repository_open_ext", + "git_repository_open_from_worktree", "git_repository_path", "git_repository_refdb", - "git_repository_reinit_filesystem", - "git_repository_set_bare", - "git_repository_set_config", "git_repository_set_head", "git_repository_set_head_detached", "git_repository_set_head_detached_from_annotated", "git_repository_set_ident", - "git_repository_set_index", "git_repository_set_namespace", - "git_repository_set_odb", - "git_repository_set_refdb", "git_repository_set_workdir", "git_repository_state", "git_repository_state_cleanup", @@ -33223,16 +34330,20 @@ "git_revparse_single", "git_revwalk_new", "git_signature_default", + "git_signature_default_from_env", "git_stash_apply", "git_stash_drop", "git_stash_foreach", "git_stash_pop", + "git_stash_save", + "git_stash_save_with_opts", "git_status_file", "git_status_foreach", "git_status_foreach_ext", "git_status_list_new", "git_status_should_ignore", "git_submodule_add_setup", + "git_submodule_clone", "git_submodule_foreach", "git_submodule_lookup", "git_submodule_open", @@ -33246,7 +34357,7 @@ "git_submodule_status", "git_tag_annotation_create", "git_tag_create", - "git_tag_create_frombuffer", + "git_tag_create_from_buffer", "git_tag_create_lightweight", "git_tag_delete", "git_tag_foreach", @@ -33254,10 +34365,16 @@ "git_tag_list_match", "git_tag_lookup", "git_tag_lookup_prefix", + "git_transaction_new", + "git_tree_create_updated", "git_tree_entry_to_object", "git_tree_lookup", "git_tree_lookup_prefix", - "git_treebuilder_new" + "git_treebuilder_new", + "git_worktree_add", + "git_worktree_list", + "git_worktree_lookup", + "git_worktree_open_from_repository" ] } } @@ -33275,61 +34392,58 @@ "GIT_REPOSITORY_INIT_RELATIVE_GITLINK" ], "type": "enum", - "file": "repository.h", - "line": 202, - "lineto": 210, + "file": "git2/repository.h", + "line": 249, + "lineto": 295, "block": "GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK", "tdef": "typedef", "description": " Option flags for `git_repository_init_ext`.", - "comments": "These flags configure extra behaviors to git_repository_init_ext. In every case, the default behavior is the zero value (i.e. flag is not set). Just OR the flag values together for the flags parameter when initializing a new repo. Details of individual values are:
init.templatedir global config if not, or falling back on "/usr/share/git-core/templates" if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is specified, use relative paths for the gitdir and core.worktree.These flags configure extra behaviors to git_repository_init_ext. In every case, the default behavior is the zero value (i.e. flag is not set). Just OR the flag values together for the flags parameter when initializing a new repo.
Create a bare repository with no working directory.
\n", "value": 1 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_NO_REINIT", - "comments": "", + "comments": "Return an GIT_EEXISTS error if the repo_path appears to already be\n an git repository.
\n", "value": 2 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_NO_DOTGIT_DIR", - "comments": "", + "comments": "Normally a "/.git/" will be appended to the repo path for\n non-bare repos (if it is not already there), but passing this flag\n prevents that behavior.
\n", "value": 4 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_MKDIR", - "comments": "", + "comments": "Make the repo_path (and workdir_path) as needed. Init is always willing\n to create the ".git" directory even without this flag. This flag tells\n init to create the trailing component of the repo and workdir paths\n as needed.
\n", "value": 8 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_MKPATH", - "comments": "", + "comments": "Recursively make all components of the repo and workdir paths as\n necessary.
\n", "value": 16 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE", - "comments": "", + "comments": "libgit2 normally uses internal templates to initialize a new repo.\n This flags enables external templates, looking the "template_path" from\n the options if set, or the init.templatedir global config if not,\n or falling back on "/usr/share/git-core/templates" if it exists.
If an alternate workdir is specified, use relative paths for the gitdir\n and core.worktree.
\n", "value": 64 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -33341,37 +34455,34 @@ "GIT_REPOSITORY_INIT_SHARED_ALL" ], "type": "enum", - "file": "repository.h", - "line": 225, - "lineto": 229, + "file": "git2/repository.h", + "line": 304, + "lineto": 320, "block": "GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL", "tdef": "typedef", "description": " Mode options for `git_repository_init_ext`.", - "comments": "Set the mode field of the git_repository_init_options structure either to the custom mode that you would like, or to one of the following modes:
Set the mode field of the git_repository_init_options structure either to the custom mode that you would like, or to one of the defined modes.
Use permissions configured by umask - the default.
\n", "value": 0 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_SHARED_GROUP", - "comments": "", + "comments": "Use "--shared=group" behavior, chmod'ing the new repo to be group\n writable and "g+sx" for sticky group assignment.
\n", "value": 1533 }, { "type": "int", "name": "GIT_REPOSITORY_INIT_SHARED_ALL", - "comments": "", + "comments": "Use "--shared=all" behavior, adding world readability.
\n", "value": 1535 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -33389,104 +34500,241 @@ ], "type": "struct", "value": "git_repository_init_options", - "file": "repository.h", - "line": 259, - "lineto": 268, + "file": "git2/repository.h", + "line": 328, + "lineto": 387, "block": "unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url", "tdef": "typedef", "description": " Extended options structure for `git_repository_init_ext`.", - "comments": "This contains extra options for git_repository_init_ext that enable additional initialization features. The fields are:
This contains extra options for git_repository_init_ext that enable additional initialization features.
st_dev changes from the stat system call). (E.g. Searching in a user's home directory "/home/user/source/" will not return "/.git/" as the found repo if "/" is a different filesystem than "/home".) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless of core.bare config, and defer loading config file for faster setup. Unlike git_repository_open_bare, this can follow gitlinks.Only open the repository if it can be immediately found in the\n start_path. Do not walk up from the start_path looking at parent\n directories.
\n", "value": 1 }, { "type": "int", "name": "GIT_REPOSITORY_OPEN_CROSS_FS", - "comments": "", + "comments": "Unless this flag is set, open will not continue searching across\n filesystem boundaries (i.e. when st_dev changes from the stat\n system call). For example, searching in a user's home directory at\n "/home/user/source/" will not return "/.git/" as the found repo if\n "/" is a different filesystem than "/home".
Open repository as a bare repo regardless of core.bare config, and\n defer loading config file for faster setup.\n Unlike git_repository_open_bare, this can follow gitlinks.
Do not check for a repository by appending /.git to the start_path;\n only open the repository if start_path itself points to the git\n directory.
\n", + "value": 8 + }, + { + "type": "int", + "name": "GIT_REPOSITORY_OPEN_FROM_ENV", + "comments": "Find and open a git repository, respecting the environment variables\n used by the git command-line tools.\n If set, git_repository_open_ext will ignore the other flags and\n the ceiling_dirs argument, and will allow a NULL path to use\n GIT_DIR or search from the current directory.\n The search for a repository will respect $GIT_CEILING_DIRECTORIES and\n $GIT_DISCOVERY_ACROSS_FILESYSTEM. The opened repository will\n respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and\n $GIT_ALTERNATE_OBJECT_DIRECTORIES.\n In the future, this flag will also cause git_repository_open_ext\n to respect $GIT_WORK_TREE and $GIT_COMMON_DIR; currently,\n git_repository_open_ext with this flag will error out if either\n $GIT_WORK_TREE or $GIT_COMMON_DIR is set.
The spec targeted a single object.
\n", - "value": 1 - }, - { - "type": "int", - "name": "GIT_REVPARSE_RANGE", - "comments": "The spec targeted a range of commits.
\n", - "value": 2 - }, - { - "type": "int", - "name": "GIT_REVPARSE_MERGE_BASE", - "comments": "The spec used the '...' operator, which invokes special semantics.
\n", - "value": 4 + "comments": " Options for the checkout " } ], "used": { "returns": [], - "needs": [] + "needs": ["git_revert", "git_revert_options_init"] } } ], [ "git_revspec", { - "decl": [ - "git_object * from", - "git_object * to", - "unsigned int flags" - ], + "decl": ["git_object * from", "git_object * to", "unsigned int flags"], "type": "struct", "value": "git_revspec", - "file": "revparse.h", + "file": "git2/revparse.h", "line": 83, "lineto": 90, "block": "git_object * from\ngit_object * to\nunsigned int flags", @@ -33761,15 +34946,49 @@ { "type": "unsigned int", "name": "flags", - "comments": " The intent of the revspec (i.e. `git_revparse_mode_t` flags) " + "comments": " The intent of the revspec (i.e. `git_revspec_mode_t` flags) " } ], - "used": { - "returns": [], - "needs": [ - "git_revparse" - ] - } + "used": { "returns": [], "needs": ["git_revparse"] } + } + ], + [ + "git_revspec_t", + { + "decl": [ + "GIT_REVSPEC_SINGLE", + "GIT_REVSPEC_RANGE", + "GIT_REVSPEC_MERGE_BASE" + ], + "type": "enum", + "file": "git2/revparse.h", + "line": 71, + "lineto": 78, + "block": "GIT_REVSPEC_SINGLE\nGIT_REVSPEC_RANGE\nGIT_REVSPEC_MERGE_BASE", + "tdef": "typedef", + "description": " Revparse flags. These indicate the intended behavior of the spec passed to\n git_revparse.", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_REVSPEC_SINGLE", + "comments": "The spec targeted a single object.
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_REVSPEC_RANGE", + "comments": "The spec targeted a range of commits.
\n", + "value": 2 + }, + { + "type": "int", + "name": "GIT_REVSPEC_MERGE_BASE", + "comments": "The spec used the '...' operator, which invokes special semantics.
\n", + "value": 4 + } + ], + "used": { "returns": [], "needs": [] } } ], [ @@ -33778,9 +34997,9 @@ "decl": "git_revwalk", "type": "struct", "value": "git_revwalk", - "file": "types.h", - "line": 111, - "lineto": 111, + "file": "git2/types.h", + "line": 132, + "lineto": 132, "tdef": "typedef", "description": " Representation of an in-progress walk through the commits in a repo ", "comments": "", @@ -33812,16 +35031,12 @@ [ "git_signature", { - "decl": [ - "char * name", - "char * email", - "git_time when" - ], + "decl": ["char * name", "char * email", "git_time when"], "type": "struct", "value": "git_signature", - "file": "types.h", - "line": 162, - "lineto": 166, + "file": "git2/types.h", + "line": 187, + "lineto": 191, "block": "char * name\nchar * email\ngit_time when", "tdef": "typedef", "description": " An action signature (e.g. for committers, taggers, etc) ", @@ -33847,71 +35062,81 @@ "returns": [ "git_commit_author", "git_commit_committer", - "git_note_author", - "git_note_committer", "git_reflog_entry_committer", "git_tag_tagger" ], "needs": [ "git_commit_amend", + "git_commit_author_with_mailmap", + "git_commit_committer_with_mailmap", "git_commit_create", "git_commit_create_buffer", - "git_commit_create_from_callback", + "git_commit_create_cb", "git_commit_create_v", - "git_note_create", - "git_note_remove", + "git_mailmap_resolve_signature", "git_rebase_commit", "git_rebase_finish", "git_reflog_append", "git_signature_default", + "git_signature_default_from_env", "git_signature_dup", "git_signature_free", + "git_signature_from_buffer", "git_signature_new", "git_signature_now", + "git_stash_save", "git_tag_annotation_create", - "git_tag_create" + "git_tag_create", + "git_transaction_set_symbolic_target", + "git_transaction_set_target" ] } } ], [ - "git_smart_subtransport_definition", + "git_smart_service_t", { "decl": [ - "git_smart_subtransport_cb callback", - "unsigned int rpc", - "void * param" + "GIT_SERVICE_UPLOADPACK_LS", + "GIT_SERVICE_UPLOADPACK", + "GIT_SERVICE_RECEIVEPACK_LS", + "GIT_SERVICE_RECEIVEPACK" ], - "type": "struct", - "value": "git_smart_subtransport_definition", - "file": "sys/transport.h", - "line": 326, - "lineto": 339, - "block": "git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param", + "type": "enum", + "file": "git2/sys/transport.h", + "line": 323, + "lineto": 328, + "block": "GIT_SERVICE_UPLOADPACK_LS\nGIT_SERVICE_UPLOADPACK\nGIT_SERVICE_RECEIVEPACK_LS\nGIT_SERVICE_RECEIVEPACK", "tdef": "typedef", - "description": " Definition for a \"subtransport\"", - "comments": "This is used to let the smart protocol code know about the protocol which you are implementing.
\n", + "description": " Actions that the smart transport can ask a subtransport to perform ", + "comments": "", "fields": [ { - "type": "git_smart_subtransport_cb", - "name": "callback", - "comments": " The function to use to create the git_smart_subtransport " + "type": "int", + "name": "GIT_SERVICE_UPLOADPACK_LS", + "comments": "", + "value": 1 }, { - "type": "unsigned int", - "name": "rpc", - "comments": " True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not." + "type": "int", + "name": "GIT_SERVICE_UPLOADPACK", + "comments": "", + "value": 2 }, { - "type": "void *", - "name": "param", - "comments": " Param of the callback" + "type": "int", + "name": "GIT_SERVICE_RECEIVEPACK_LS", + "comments": "", + "value": 3 + }, + { + "type": "int", + "name": "GIT_SERVICE_RECEIVEPACK", + "comments": "", + "value": 4 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -33924,9 +35149,9 @@ "GIT_SORT_REVERSE" ], "type": "enum", - "file": "revwalk.h", + "file": "git2/revwalk.h", "line": 26, - "lineto": 55, + "lineto": 53, "block": "GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE", "tdef": "typedef", "description": " Flags to specify the sorting which a revwalk should perform.", @@ -33935,13 +35160,13 @@ { "type": "int", "name": "GIT_SORT_NONE", - "comments": "Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.
\n", + "comments": "Sort the output with the same default method from git: reverse\n chronological order. This is the default sorting for new walkers.
Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.
\n", + "comments": "Sort the repository contents in topological order (no parents before\n all of its children are shown); this sorting mode can be combined\n with time sorting to produce git's --date-order`.
Initialize with GIT_STASH_APPLY_OPTIONS_INIT. Alternatively, you can use git_stash_apply_options_init.
Loading the stashed data from the object database.
\n", + "value": 1 + }, + { + "type": "int", + "name": "GIT_STASH_APPLY_PROGRESS_ANALYZE_INDEX", + "comments": "The stored index is being analyzed.
\n", + "value": 2 + }, + { + "type": "int", + "name": "GIT_STASH_APPLY_PROGRESS_ANALYZE_MODIFIED", + "comments": "The modified files are being analyzed.
\n", + "value": 3 + }, + { + "type": "int", + "name": "GIT_STASH_APPLY_PROGRESS_ANALYZE_UNTRACKED", + "comments": "The untracked and ignored files are being analyzed.
\n", + "value": 4 + }, + { + "type": "int", + "name": "GIT_STASH_APPLY_PROGRESS_CHECKOUT_UNTRACKED", + "comments": "The untracked files are being written to disk.
\n", + "value": 5 + }, + { + "type": "int", + "name": "GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED", + "comments": "The modified files are being written to disk.
\n", + "value": 6 + }, + { + "type": "int", + "name": "GIT_STASH_APPLY_PROGRESS_DONE", + "comments": "The stash was applied successfully.
\n", + "value": 7 + } + ], + "used": { "returns": [], "needs": ["git_stash_apply_progress_cb"] } + } + ], [ "git_stash_flags", { @@ -34005,13 +35343,14 @@ "GIT_STASH_DEFAULT", "GIT_STASH_KEEP_INDEX", "GIT_STASH_INCLUDE_UNTRACKED", - "GIT_STASH_INCLUDE_IGNORED" + "GIT_STASH_INCLUDE_IGNORED", + "GIT_STASH_KEEP_ALL" ], "type": "enum", - "file": "stash.h", - "line": 24, - "lineto": 47, - "block": "GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED", + "file": "git2/stash.h", + "line": 30, + "lineto": 58, + "block": "GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED\nGIT_STASH_KEEP_ALL", "tdef": "typedef", "description": " Stash flags", "comments": "", @@ -34039,23 +35378,107 @@ "name": "GIT_STASH_INCLUDE_IGNORED", "comments": "All ignored files are also stashed and then cleaned up from\n the working directory
\n", "value": 4 + }, + { + "type": "int", + "name": "GIT_STASH_KEEP_ALL", + "comments": "All changes in the index and working directory are left intact
\n", + "value": 8 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_stash_save_options", + { + "decl": [ + "unsigned int version", + "uint32_t flags", + "const git_signature * stasher", + "const char * message", + "git_strarray paths" + ], + "type": "struct", + "value": "git_stash_save_options", + "file": "git2/stash.h", + "line": 86, + "lineto": 100, + "block": "unsigned int version\nuint32_t flags\nconst git_signature * stasher\nconst char * message\ngit_strarray paths", + "tdef": "typedef", + "description": " Stash save options structure", + "comments": "Initialize with GIT_STASH_SAVE_OPTIONS_INIT. Alternatively, you can use git_stash_save_options_init.
The status value provides the status flags for this file.
The head_to_index value provides detailed information about the differences between the file in HEAD and the file in the index.
The index_to_workdir value provides detailed information about the differences between the file in the index and the file in the working directory.
git ls-files -o -i --exclude-standard with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection should be processed between the head and the index and enables the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename detection should be run between the index and the working directory and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case sensitivity for the file system and forces the output to be in case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case sensitivity for the file system and forces the output to be in case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of doing a "soft" index reload (i.e. reloading the index data if the file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache in the index for files that are unchanged but have out of date stat information in the index. It will result in less work being done on subsequent calls to get status. This is mutually exclusive with the NO_REFRESH option.Calling git_status_foreach() is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS. Those options are bundled together as GIT_STATUS_OPT_DEFAULTS if you want them as a baseline.
Calling git_status_foreach() is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS. Those options are bundled together as GIT_STATUS_OPT_DEFAULTS if you want them as a baseline.
Says that callbacks should be made on untracked files.\n These will only be made if the workdir files are included in the status\n "show" option.
\n", "value": 1 }, { "type": "int", "name": "GIT_STATUS_OPT_INCLUDE_IGNORED", - "comments": "", + "comments": "Says that ignored files get callbacks.\n Again, these callbacks will only be made if the workdir files are\n included in the status "show" option.
\n", "value": 2 }, { "type": "int", "name": "GIT_STATUS_OPT_INCLUDE_UNMODIFIED", - "comments": "", + "comments": "Indicates that callback should be made even on unmodified files.
\n", "value": 4 }, { "type": "int", "name": "GIT_STATUS_OPT_EXCLUDE_SUBMODULES", - "comments": "", + "comments": "Indicates that submodules should be skipped.\n This only applies if there are no pending typechanges to the submodule\n (either from or to another type).
\n", "value": 8 }, { "type": "int", "name": "GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS", - "comments": "", + "comments": "Indicates that all files in untracked directories should be included.\n Normally if an entire directory is new, then just the top-level\n directory is included (with a trailing slash on the entry name).\n This flag says to include all of the individual files in the directory\n instead.
\n", "value": 16 }, { "type": "int", "name": "GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH", - "comments": "", + "comments": "Indicates that the given path should be treated as a literal path,\n and not as a pathspec pattern.
\n", "value": 32 }, { "type": "int", "name": "GIT_STATUS_OPT_RECURSE_IGNORED_DIRS", - "comments": "", + "comments": "Indicates that the contents of ignored directories should be included\n in the status. This is like doing git ls-files -o -i --exclude-standard\n with core git.
Indicates that rename detection should be processed between the head and\n the index and enables the GIT_STATUS_INDEX_RENAMED as a possible status\n flag.
\n", "value": 128 }, { "type": "int", "name": "GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR", - "comments": "", + "comments": "Indicates that rename detection should be run between the index and the\n working directory and enabled GIT_STATUS_WT_RENAMED as a possible status\n flag.
\n", "value": 256 }, { "type": "int", "name": "GIT_STATUS_OPT_SORT_CASE_SENSITIVELY", - "comments": "", + "comments": "Overrides the native case sensitivity for the file system and forces\n the output to be in case-sensitive order.
\n", "value": 512 }, { "type": "int", "name": "GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY", - "comments": "", + "comments": "Overrides the native case sensitivity for the file system and forces\n the output to be in case-insensitive order.
\n", "value": 1024 }, { "type": "int", "name": "GIT_STATUS_OPT_RENAMES_FROM_REWRITES", - "comments": "", + "comments": "Iindicates that rename detection should include rewritten files.
\n", "value": 2048 }, { "type": "int", "name": "GIT_STATUS_OPT_NO_REFRESH", - "comments": "", + "comments": "Bypasses the default status behavior of doing a "soft" index reload\n (i.e. reloading the index data if the file on disk has been modified\n outside libgit2).
\n", "value": 4096 }, { "type": "int", "name": "GIT_STATUS_OPT_UPDATE_INDEX", - "comments": "", + "comments": "Tells libgit2 to refresh the stat cache in the index for files that are\n unchanged but have out of date stat einformation in the index.\n It will result in less work being done on subsequent calls to get status.\n This is mutually exclusive with the NO_REFRESH option.
\n", "value": 8192 }, { - "type": "int", - "name": "GIT_STATUS_OPT_INCLUDE_UNREADABLE", - "comments": "", - "value": 16384 + "type": "int", + "name": "GIT_STATUS_OPT_INCLUDE_UNREADABLE", + "comments": "Normally files that cannot be opened or read are ignored as\n these are often transient files; this option will return\n unreadable files as GIT_STATUS_WT_UNREADABLE.
Unreadable files will be detected and given the status\n untracked instead of unreadable.
\n", + "value": 32768 + } + ], + "used": { "returns": [], "needs": [] } + } + ], + [ + "git_status_options", + { + "decl": [ + "unsigned int version", + "git_status_show_t show", + "unsigned int flags", + "git_strarray pathspec", + "git_tree * baseline", + "uint16_t rename_threshold" + ], + "type": "struct", + "value": "git_status_options", + "file": "git2/status.h", + "line": 222, + "lineto": 262, + "block": "unsigned int version\ngit_status_show_t show\nunsigned int flags\ngit_strarray pathspec\ngit_tree * baseline\nuint16_t rename_threshold", + "tdef": "typedef", + "description": " Options to control how `git_status_foreach_ext()` will issue callbacks.", + "comments": "Initialize with GIT_STATUS_OPTIONS_INIT. Alternatively, you can use git_status_options_init.
With git_status_foreach_ext, this will control which changes get callbacks. With git_status_list_new, these will control which changes are included in the list.
git status --porcelain regarding which files are included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to working directory comparison, not comparing the index to the HEAD.With git_status_foreach_ext, this will control which changes get callbacks. With git_status_list_new, these will control which changes are included in the list.
The default. This roughly matches git status --porcelain regarding\n which files are included and in what order.
Only gives status based on HEAD to index comparison, not looking at\n working directory changes.
\n", "value": 1 }, { "type": "int", "name": "GIT_STATUS_SHOW_WORKDIR_ONLY", - "comments": "", + "comments": "Only gives status based on index to working directory comparison,\n not comparing the index to the HEAD.
\n", "value": 2 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -34266,9 +35744,9 @@ "GIT_STATUS_CONFLICTED" ], "type": "enum", - "file": "status.h", - "line": 32, - "lineto": 50, + "file": "git2/status.h", + "line": 34, + "lineto": 52, "block": "GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED", "tdef": "typedef", "description": " Status flags for a single file.", @@ -34359,22 +35837,16 @@ "value": 32768 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ "git_strarray", { - "decl": [ - "char ** strings", - "size_t count" - ], + "decl": ["char ** strings", "size_t count"], "type": "struct", "value": "git_strarray", - "file": "strarray.h", + "file": "git2/strarray.h", "line": 22, "lineto": 25, "block": "char ** strings\nsize_t count", @@ -34382,16 +35854,8 @@ "description": " Array of strings ", "comments": "", "fields": [ - { - "type": "char **", - "name": "strings", - "comments": "" - }, - { - "type": "size_t", - "name": "count", - "comments": "" - } + { "type": "char **", "name": "strings", "comments": "" }, + { "type": "size_t", "name": "count", "comments": "" } ], "used": { "returns": [], @@ -34412,95 +35876,42 @@ "git_remote_upload", "git_reset_default", "git_strarray_copy", + "git_strarray_dispose", "git_strarray_free", "git_tag_list", - "git_tag_list_match" + "git_tag_list_match", + "git_worktree_list" ] } } ], [ - "git_stream", + "git_stream_t", { - "decl": [ - "int version", - "int encrypted", - "int proxy_support", - "int (*)(struct git_stream *) connect", - "int (*)(git_cert **, struct git_stream *) certificate", - "int (*)(struct git_stream *, const int *) set_proxy", - "ssize_t (*)(struct git_stream *, void *, int) read", - "ssize_t (*)(struct git_stream *, const char *, int, int) write", - "int (*)(struct git_stream *) close", - "void (*)(struct git_stream *) free" - ], - "type": "struct", - "value": "git_stream", - "file": "sys/stream.h", - "line": 29, - "lineto": 41, - "block": "int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const int *) set_proxy\nssize_t (*)(struct git_stream *, void *, int) read\nssize_t (*)(struct git_stream *, const char *, int, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free", + "decl": ["GIT_STREAM_STANDARD", "GIT_STREAM_TLS"], + "type": "enum", + "file": "git2/sys/stream.h", + "line": 99, + "lineto": 105, + "block": "GIT_STREAM_STANDARD\nGIT_STREAM_TLS", "tdef": "typedef", - "description": " Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as", - "comments": " struct my_stream { git_stream parent; ... }\n\n\nand fill the functions
\n", + "description": " The type of stream to register.", + "comments": "", "fields": [ { "type": "int", - "name": "version", - "comments": "" - }, - { - "type": "int", - "name": "encrypted", - "comments": "" + "name": "GIT_STREAM_STANDARD", + "comments": "A standard (non-TLS) socket.
\n", + "value": 1 }, { "type": "int", - "name": "proxy_support", - "comments": "" - }, - { - "type": "int (*)(struct git_stream *)", - "name": "connect", - "comments": "" - }, - { - "type": "int (*)(git_cert **, struct git_stream *)", - "name": "certificate", - "comments": "" - }, - { - "type": "int (*)(struct git_stream *, const int *)", - "name": "set_proxy", - "comments": "" - }, - { - "type": "ssize_t (*)(struct git_stream *, void *, int)", - "name": "read", - "comments": "" - }, - { - "type": "ssize_t (*)(struct git_stream *, const char *, int, int)", - "name": "write", - "comments": "" - }, - { - "type": "int (*)(struct git_stream *)", - "name": "close", - "comments": "" - }, - { - "type": "void (*)(struct git_stream *)", - "name": "free", - "comments": "" + "name": "GIT_STREAM_TLS", + "comments": "A TLS-encrypted socket.
\n", + "value": 2 } ], - "used": { - "returns": [], - "needs": [ - "git_stream_register_tls" - ] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -34509,9 +35920,9 @@ "decl": "git_submodule", "type": "struct", "value": "git_submodule", - "file": "types.h", - "line": 335, - "lineto": 335, + "file": "git2/types.h", + "line": 283, + "lineto": 283, "tdef": "typedef", "description": " Opaque structure representing a submodule.", "comments": "", @@ -34527,6 +35938,8 @@ "git_submodule_add_to_index", "git_submodule_branch", "git_submodule_cb", + "git_submodule_clone", + "git_submodule_dup", "git_submodule_fetch_recurse_submodules", "git_submodule_foreach", "git_submodule_free", @@ -34548,7 +35961,7 @@ "git_submodule_status", "git_submodule_sync", "git_submodule_update", - "git_submodule_update_init_options", + "git_submodule_update_options_init", "git_submodule_update_strategy", "git_submodule_url", "git_submodule_wd_id" @@ -34567,9 +35980,9 @@ "GIT_SUBMODULE_IGNORE_ALL" ], "type": "enum", - "file": "types.h", - "line": 399, - "lineto": 406, + "file": "git2/types.h", + "line": 347, + "lineto": 354, "block": "GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL", "tdef": "typedef", "description": " Submodule ignore values", @@ -34607,13 +36020,8 @@ } ], "used": { - "returns": [ - "git_submodule_ignore" - ], - "needs": [ - "git_submodule_set_ignore", - "git_submodule_status" - ] + "returns": ["git_submodule_ignore"], + "needs": ["git_submodule_set_ignore", "git_submodule_status"] } } ], @@ -34626,9 +36034,9 @@ "GIT_SUBMODULE_RECURSE_ONDEMAND" ], "type": "enum", - "file": "types.h", - "line": 418, - "lineto": 422, + "file": "git2/types.h", + "line": 366, + "lineto": 370, "block": "GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND", "tdef": "typedef", "description": " Options for submodule recurse.", @@ -34654,12 +36062,8 @@ } ], "used": { - "returns": [ - "git_submodule_fetch_recurse_submodules" - ], - "needs": [ - "git_submodule_set_fetch_recurse_submodules" - ] + "returns": ["git_submodule_fetch_recurse_submodules"], + "needs": ["git_submodule_set_fetch_recurse_submodules"] } } ], @@ -34683,7 +36087,7 @@ "GIT_SUBMODULE_STATUS_WD_UNTRACKED" ], "type": "enum", - "file": "submodule.h", + "file": "git2/submodule.h", "line": 74, "lineto": 89, "block": "GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED", @@ -34776,10 +36180,7 @@ "value": 8192 } ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": [] } } ], [ @@ -34789,27 +36190,23 @@ "unsigned int version", "git_checkout_options checkout_opts", "git_fetch_options fetch_opts", - "unsigned int clone_checkout_strategy" + "int allow_fetch" ], "type": "struct", "value": "git_submodule_update_options", - "file": "submodule.h", - "line": 129, - "lineto": 157, - "block": "unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy", + "file": "git2/submodule.h", + "line": 135, + "lineto": 158, + "block": "unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint allow_fetch", "tdef": "typedef", "description": " Submodule update options structure", - "comments": "Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:
\n\ngit_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;
\n", + "comments": "Initialize with GIT_SUBMODULE_UPDATE_OPTIONS_INIT. Alternatively, you can use git_submodule_update_options_init.
Currently unused.
\n", - "fields": [ - { - "type": "int", - "name": "GIT_TRANSPORTFLAGS_NONE", - "comments": "", - "value": 0 - } - ], - "used": { - "returns": [], - "needs": [] - } + "used": { "returns": [], "needs": ["git_transport_cb"] } } ], [ @@ -35192,9 +36470,9 @@ "decl": "git_tree", "type": "struct", "value": "git_tree", - "file": "types.h", - "line": 126, - "lineto": 126, + "file": "git2/types.h", + "line": 147, + "lineto": 147, "tdef": "typedef", "description": " Representation of a tree object. ", "comments": "", @@ -35206,9 +36484,11 @@ "git_treebuilder_get" ], "needs": [ + "git_apply_to_tree", "git_commit_amend", "git_commit_create", "git_commit_create_buffer", + "git_commit_create_cb", "git_commit_create_v", "git_commit_tree", "git_diff_tree_to_index", @@ -35218,6 +36498,7 @@ "git_index_read_tree", "git_merge_trees", "git_pathspec_match_tree", + "git_tree_create_updated", "git_tree_dup", "git_tree_entry_byid", "git_tree_entry_byindex", @@ -35249,6 +36530,7 @@ "git_treebuilder_new", "git_treebuilder_remove", "git_treebuilder_write", + "git_treebuilder_write_with_buffer", "git_treewalk_cb" ] } @@ -35260,9 +36542,9 @@ "decl": "git_tree_entry", "type": "struct", "value": "git_tree_entry", - "file": "types.h", - "line": 123, - "lineto": 123, + "file": "git2/types.h", + "line": 144, + "lineto": 144, "tdef": "typedef", "description": " Representation of each one of the entries in a tree object. ", "comments": "", @@ -35291,15 +36573,83 @@ } } ], + [ + "git_tree_update", + { + "decl": [ + "git_tree_update_t action", + "git_oid id", + "git_filemode_t filemode", + "const char * path" + ], + "type": "struct", + "value": "git_tree_update", + "file": "git2/tree.h", + "line": 449, + "lineto": 458, + "block": "git_tree_update_t action\ngit_oid id\ngit_filemode_t filemode\nconst char * path", + "tdef": "typedef", + "description": " An action to perform during the update of a tree", + "comments": "", + "fields": [ + { + "type": "git_tree_update_t", + "name": "action", + "comments": " Update action. If it's an removal, only the path is looked at " + }, + { "type": "git_oid", "name": "id", "comments": " The entry's id " }, + { + "type": "git_filemode_t", + "name": "filemode", + "comments": " The filemode/kind of object " + }, + { + "type": "const char *", + "name": "path", + "comments": " The full path from the root tree " + } + ], + "used": { "returns": [], "needs": ["git_tree_create_updated"] } + } + ], + [ + "git_tree_update_t", + { + "decl": ["GIT_TREE_UPDATE_UPSERT", "GIT_TREE_UPDATE_REMOVE"], + "type": "enum", + "file": "git2/tree.h", + "line": 439, + "lineto": 444, + "block": "GIT_TREE_UPDATE_UPSERT\nGIT_TREE_UPDATE_REMOVE", + "tdef": "typedef", + "description": " The kind of update to perform", + "comments": "", + "fields": [ + { + "type": "int", + "name": "GIT_TREE_UPDATE_UPSERT", + "comments": "Update or insert an entry at the specified path
\n", + "value": 0 + }, + { + "type": "int", + "name": "GIT_TREE_UPDATE_REMOVE", + "comments": "Remove an entry from the specified path
\n", + "value": 1 + } + ], + "used": { "returns": [], "needs": [] } + } + ], [ "git_treebuilder", { "decl": "git_treebuilder", "type": "struct", "value": "git_treebuilder", - "file": "types.h", - "line": 129, - "lineto": 129, + "file": "git2/types.h", + "line": 150, + "lineto": 150, "tdef": "typedef", "description": " Constructor for in-memory trees ", "comments": "", @@ -35314,7 +36664,8 @@ "git_treebuilder_insert", "git_treebuilder_new", "git_treebuilder_remove", - "git_treebuilder_write" + "git_treebuilder_write", + "git_treebuilder_write_with_buffer" ] } } @@ -35322,14 +36673,11 @@ [ "git_treewalk_mode", { - "decl": [ - "GIT_TREEWALK_PRE", - "GIT_TREEWALK_POST" - ], + "decl": ["GIT_TREEWALK_PRE", "GIT_TREEWALK_POST"], "type": "enum", - "file": "tree.h", - "line": 384, - "lineto": 387, + "file": "git2/tree.h", + "line": 398, + "lineto": 401, "block": "GIT_TREEWALK_PRE\nGIT_TREEWALK_POST", "tdef": "typedef", "description": " Tree traversal modes ", @@ -35348,32 +36696,202 @@ "value": 1 } ], + "used": { "returns": [], "needs": ["git_tree_walk"] } + } + ], + [ + "git_worktree", + { + "decl": "git_worktree", + "type": "struct", + "value": "git_worktree", + "file": "git2/types.h", + "line": 126, + "lineto": 126, + "tdef": "typedef", + "description": " Representation of a working tree ", + "comments": "", + "used": { + "returns": [], + "needs": [ + "git_repository_open_from_worktree", + "git_worktree_add", + "git_worktree_add_options_init", + "git_worktree_free", + "git_worktree_is_locked", + "git_worktree_is_prunable", + "git_worktree_lock", + "git_worktree_lookup", + "git_worktree_name", + "git_worktree_open_from_repository", + "git_worktree_path", + "git_worktree_prune", + "git_worktree_prune_options_init", + "git_worktree_unlock", + "git_worktree_validate" + ] + } + } + ], + [ + "git_worktree_add_options", + { + "decl": [ + "unsigned int version", + "int lock", + "int checkout_existing", + "git_reference * ref", + "git_checkout_options checkout_options" + ], + "type": "struct", + "value": "git_worktree_add_options", + "file": "git2/worktree.h", + "line": 86, + "lineto": 97, + "block": "unsigned int version\nint lock\nint checkout_existing\ngit_reference * ref\ngit_checkout_options checkout_options", + "tdef": "typedef", + "description": " Worktree add options structure", + "comments": "Initialize with GIT_WORKTREE_ADD_OPTIONS_INIT. Alternatively, you can use git_worktree_add_options_init.
Initialize with GIT_WORKTREE_PRUNE_OPTIONS_INIT. Alternatively, you can use git_worktree_prune_options_init.