@@ -115,8 +115,8 @@ gh run watch <run-id> --repo UiPath/libgit2sharp.nativebinaries --exit-status
115115
116116It fetches + SHA256-verifies the deps (no OpenSSL/libssh2 compile), builds libgit2 for all 6 RIDs,
117117assembles ` natives-<version>.zip ` , and — because ` publish=true ` (or on ` develop ` ) — publishes Release
118- ** ` natives-<version> ` ** . ` <version> ` comes from ** MinVer** on the nativebinaries repo, collapsed to a
119- single auto number ` X.Y.Z-v<height> ` (base tag ` 1.9.1-v5 ` + height 21 → ` 1.9.1-v21 ` ; see Reference).
118+ ** ` natives-<version> ` ** . ` <version> ` comes from ** MinVer** on the nativebinaries repo, reformatted to a
119+ single auto number ` X.Y.Z-v<epoch+ height> ` (base tag ` 1.9.1-v5 ` + height 1 → ` 1.9.1-v6 ` ; see Reference).
120120Find the exact tag:
121121
122122``` bash
@@ -141,17 +141,17 @@ windows/ubuntu/macos, and the user reviews and merges.
141141
142142## Step 3 — Ship the managed package (the very last step)
143143
144- ** Versioning — nothing to do.** The package version is ` X.Y.Z-v<height > ` (e.g. ` 1.9.1-v22 ` ), a single
145- auto-incrementing number. ` <height> ` is MinVer 's commit count since the base tag, surfaced as ` v<N> `
146- by the managed repo's ` AdjustVersions ` target and the nativebinaries ` build.yml ` "Resolve version"
147- step (both collapse MinVer's ` <epoch>.<height> ` into one ` v<height> ` ) . Every develop commit yields the
148- next ` v<N> ` — no manual version tagging.
144+ ** Versioning — nothing to do.** The package version is ` X.Y.Z-v<N > ` (e.g. ` 1.9.1-v6 ` ), a single auto
145+ number where ** ` N = the base tag 's epoch + the MinVer height ` ** . The base tag ` 1.9.1-v5 ` sets the epoch
146+ (5) and each commit past it increments N (v6, v7, …), computed by the managed repo's ` AdjustVersions `
147+ target and the nativebinaries ` build.yml ` "Resolve version" step . Every develop commit yields the next
148+ ` v<N> ` — no manual version tagging.
149149
150- ** Iron rule: ** the existing ` X.Y.Z-vN ` tag (e.g. ` 1.9.1-v5 ` ) is a ** permanent counting anchor ** . Do
151- ** not ** cut another ` -vN ` tag on the same ` X.Y.Z ` line — the height (hence ` v<N> ` ) would reset and the
152- package version would regress, which NuGet forbids (versions must rise). Cut a new base tag ** only **
153- when the upstream base changes, once (e.g. ` git tag 1.10.0-v0 ` ), to start a fresh line. Same scheme
154- and anchor tag apply to the nativebinaries repo.
150+ ** Re-tagging is seamless ** (unlike a height-only scheme). Because ` N = epoch + height ` , on the tag
151+ commit itself height is 0, so ` v<N> ` equals the tag — cutting a new tag at the ** current ** ` v<N> ` (e.g.
152+ ` git tag 1.9.1-v20 ` when the version already reads ` v20 ` ) just re-bases the epoch with no jump, and the
153+ number keeps climbing. Only pitfall: never tag ** below ** the current ` v<N> ` , or the version goes
154+ backwards (NuGet forbids). New upstream base → ` git tag X.Y.Z-v0 ` . Same scheme in the nativebinaries repo.
155155
156156** Publishing to the uipath-internal feed — done interactively from here** (like the gates: there is
157157no CI publish job). Once the Gate B PR is merged to ` develop ` and CI is green, get the
@@ -175,7 +175,7 @@ NuGetPackageSourceCredentials_uipath-internal="Username=az;Password=$TOKEN" \
175175
176176` --api-key ` /` -ApiKey ` is a required-but-ignored dummy (auth is the token / credential provider, not the
177177key). ` --skip-duplicate ` keeps it idempotent — and matters here: the feed may already hold a
178- manually-published ` 1.9.1-v5 ` , so the emitted ` X.Y.Z-v<height > ` must ** exceed** the highest version
178+ manually-published ` 1.9.1-v5 ` , so the emitted ` X.Y.Z-v<N > ` must ** exceed** the highest version
179179already on the feed (see the version-collision caveat). Human-run step — confirm the exact version with
180180the user before pushing. Only if the upstream base changed: ` git tag X.Y.Z-v0 ` once, first.
181181
@@ -189,11 +189,12 @@ the user before pushing. Only if the upstream base changed: `git tag X.Y.Z-v0` o
189189- ` natives.lock.json ` (this repo): ` { repo, tag, filename, url, sha256 } ` , one archive; ` filename ` is
190190 always ` <tag>.zip ` .
191191
192- ** MinVer** — both repos use ** bare numeric base tags** (no ` v ` prefix) with
193- ` --default-pre-release-identifiers preview.0 ` . MinVer emits ` X.Y.Z-<epoch>.<height> ` (e.g.
194- ` 1.9.1-v5.22 ` ); both repos then ** collapse it to ` X.Y.Z-v<height> ` ** (e.g. ` 1.9.1-v22 ` ) — a single
195- monotonic auto number. The base tag (` 1.9.1-v5 ` ) is a permanent anchor; never re-tag the line (Step
196- 3's iron rule). New upstream base → one fresh ` X.Y.Z-v0 ` tag.
192+ ** MinVer** — both repos use ` X.Y.Z-vN ` base tags with ` --default-pre-release-identifiers preview.0 ` .
193+ MinVer emits ` X.Y.Z-v<epoch>.<height> ` (e.g. ` 1.9.1-v5.1 ` ); both repos reformat to
194+ ** ` X.Y.Z-v<epoch+height> ` ** (e.g. ` 1.9.1-v6 ` ) — a single auto number that continues from the tag.
195+ MinVer's height is the * shortest graph distance* to the tag, so it stays small after a merge (the base
196+ tag often lands on the merge commit's first parent — that's why a naive height-only scheme wrongly
197+ produced ` v1 ` ); epoch+height keeps climbing regardless. New upstream base → ` git tag X.Y.Z-v0 ` .
197198
198199** Release gating** — ` build.yml ` 's publish step is gated on `inputs.publish || github.ref ==
199200refs/heads/develop` . PR/branch runs without ` publish=true` produce only a workflow artifact (no stray
0 commit comments