@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
CreateCompareUrlOptionsCompare 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 repository:RepositoryConfigRepository configuration containing platform and base URL.
§readonly fromCommit:stringSource commit hash for comparison (older version). Must be a full or abbreviated commit hash.
§readonly toCommit:stringTarget commit hash for comparison (newer version). Must be a full or abbreviated commit hash.