@hyperfrontend/versioning/repository/url

url

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

§function

createCompareUrl(options: CreateCompareUrlOptions): string

Creates a platform-specific compare URL for viewing changes between two commits.
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)
For custom platforms, a formatCompareUrl function must be provided in the repository config. For unknown platforms, returns null.

Parameters

NameTypeDescription
§options
CreateCompareUrlOptions
Compare URL options including repository, fromCommit, and toCommit

Returns

string
The 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'

Interfaces

§interface

CreateCompareUrlOptions

Options for creating a compare URL.

Properties

§readonly fromCommit:string
Source commit hash for comparison (older version). Must be a full or abbreviated commit hash.
§readonly repository:RepositoryConfig
Repository configuration containing platform and base URL.
§readonly toCommit:string
Target commit hash for comparison (newer version). Must be a full or abbreviated commit hash.