|
| 1 | +# Contributing |
| 2 | + |
| 3 | +## Updating libgit2 |
| 4 | + |
| 5 | +The following steps can be used to update libgit2: |
| 6 | + |
| 7 | +1. Update the submodule. |
| 8 | + There are several ways to go about this. |
| 9 | + One way is to go to the `libgit2-sys/libgit2` directory and run `git fetch origin` to download the latest updates, and then check out a specific tag (such as `git checkout v1.4.1`). |
| 10 | +2. Update all the references to the version: |
| 11 | + * Update [`libgit2-sys/build.rs`](https://github.com/rust-lang/git2-rs/blob/master/libgit2-sys/build.rs). |
| 12 | + There is a version probe (search for `cfg.atleast_version`) which should be updated. |
| 13 | + * Update the version in |
| 14 | + [`libgit2-sys/Cargo.toml`](https://github.com/rust-lang/git2-rs/blob/master/libgit2-sys/Cargo.toml). |
| 15 | + Update the metadata portion (the part after the `+`) to match libgit2. |
| 16 | + Also bump the Cargo version (the part before the `+`), keeping in mind |
| 17 | + if this will be a SemVer breaking change or not. |
| 18 | + * Update the dependency version in [`Cargo.toml`](https://github.com/rust-lang/git2-rs/blob/master/Cargo.toml) to match the version in the last step (do not include the `+` metadata). |
| 19 | + Also update the version of the `git2` crate itself so it will pick up the change to `libgit2-sys` (also keeping in mind if it is a SemVer breaking release). |
| 20 | + * Update the version in [`README.md`](https://github.com/rust-lang/git2-rs/blob/master/README.md) if needed. |
| 21 | + * If there was a SemVer-breaking version bump for either library, also update the `html_root_url` attribute in the `lib.rs` of each library. |
| 22 | +3. Run tests. |
| 23 | + `cargo test -p git2 -p git2-curl` is a good starting point. |
| 24 | +4. Run `systest`. |
| 25 | + This will validate for any C-level API problems. |
| 26 | + Unfortunately `systest` does not work on nightly, so you'll need to use stable. |
| 27 | + |
| 28 | + `cargo +stable run -p systest` |
| 29 | + |
| 30 | + The changelog at <https://github.com/libgit2/libgit2/blob/main/docs/changelog.md> |
| 31 | + can be helpful for seeing what has changed. |
| 32 | + The project has recently started labeling API and ABI breaking changes with labels: |
| 33 | + <https://github.com/libgit2/libgit2/pulls?q=is%3Apr+label%3A%22api+breaking%22%2C%22abi+breaking%22+is%3Aclosed> |
| 34 | +4. Once you have everything functional, publish a PR with the updates. |
0 commit comments