@hyperfrontend/versioning/repository/urlurl
Compare-URL generation for the supported repository platforms.
createCompareUrl(options) produces the platform-specific diff URL between two refs (tags, commits, or branches) — https://github.com/<owner>/<repo>/compare/<from>...<to> for GitHub, the equivalent path for GitLab, Bitbucket, and Azure DevOps. CreateCompareUrlOptions covers the typical inputs: repository config plus the from/to refs.
API Reference
ƒ Functions
Creates a platform-specific compare URL for viewing changes between two commits.
Each platform has a different URL format:
Each platform has a different URL format:
- GitHub:
{baseUrl}/compare/{fromCommit}...{toCommit}(three dots) - GitLab:
{baseUrl}/-/compare/{fromCommit}...{toCommit}(three dots,/-/prefix) - Bitbucket:
{baseUrl}/compare/{toCommit}..{fromCommit}(two dots, reversed order) - Azure DevOps:
{baseUrl}/compare?version=GT{toCommit}&compareVersion=GT{fromCommit}(query params)
custom platforms, a formatCompareUrl function must be provided in the repository config. For unknown platforms, returns null.Parameters
| Name | Type | Description |
|---|---|---|
§options | CreateCompareUrlOptions | Compare URL options including repository, fromCommit, and toCommit |
Returns
stringThe compare URL string, or null if URL cannot be generated
Example
Creating platform-specific compare URLs
// GitHub
createCompareUrl({
repository: { platform: 'github', baseUrl: 'https://github.com/owner/repo' },
fromCommit: 'abc1234',
toCommit: 'def5678'
})
// → 'https://github.com/owner/repo/compare/abc1234...def5678'
// GitLab
createCompareUrl({
repository: { platform: 'gitlab', baseUrl: 'https://gitlab.com/group/project' },
fromCommit: 'abc1234',
toCommit: 'def5678'
})
// → 'https://gitlab.com/group/project/-/compare/abc1234...def5678'
// Bitbucket (reversed order)
createCompareUrl({
repository: { platform: 'bitbucket', baseUrl: 'https://bitbucket.org/owner/repo' },
fromCommit: 'abc1234',
toCommit: 'def5678'
})
// → 'https://bitbucket.org/owner/repo/compare/def5678..abc1234'
// Azure DevOps
createCompareUrl({
repository: { platform: 'azure-devops', baseUrl: 'https://dev.azure.com/org/proj/_git/repo' },
fromCommit: 'abc1234',
toCommit: 'def5678'
})
// → 'https://dev.azure.com/org/proj/_git/repo/compare?version=GTdef5678&compareVersion=GTabc1234'
// Custom formatter
createCompareUrl({
repository: {
platform: 'custom',
baseUrl: 'https://my-git.internal/repo',
formatCompareUrl: (from, to) => `https://my-git.internal/diff/${from}/${to}`
},
fromCommit: 'abc1234',
toCommit: 'def5678'
})
// → 'https://my-git.internal/diff/abc1234/def5678'