VCS

VCS Repository Attributes

This group defines the attributes for Version Control Systems (VCS).

AttributeTypeDescriptionExamplesStability
vcs.change.idstringThe ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.123Experimental
vcs.change.statestringThe state of the change (pull request/merge request/changelist).open; closed; mergedExperimental
vcs.change.titlestringThe human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.Fixes broken thing; feat: add my new feature; [chore] update dependencyExperimental
vcs.line_change.typestringThe type of line change being measured on a branch or change.added; removedExperimental
vcs.ref.base.namestringThe name of the reference such as branch or tag in the repository. [1]my-feature-branch; tag-1-testExperimental
vcs.ref.base.revisionstringThe revision, literally revised version, The revision most often refers to a commit object in Git, or a revision number in SVN. [2]9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc; main; 123; HEADExperimental
vcs.ref.base.typestringThe type of the reference in the repository. [3]branch; tagExperimental
vcs.ref.head.namestringThe name of the reference such as branch or tag in the repository. [4]my-feature-branch; tag-1-testExperimental
vcs.ref.head.revisionstringThe revision, literally revised version, The revision most often refers to a commit object in Git, or a revision number in SVN. [5]9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc; main; 123; HEADExperimental
vcs.ref.head.typestringThe type of the reference in the repository. [6]branch; tagExperimental
vcs.ref.typestringThe type of the reference in the repository.branch; tagExperimental
vcs.repository.namestringThe human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [7]semantic-conventions; my-cool-repoExperimental
vcs.repository.url.fullstringThe canonical URL of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [8]https://github.com/opentelemetry/open-telemetry-collector-contrib; https://gitlab.com/my-org/my-project/my-projects-project/repoExperimental
vcs.revision_delta.directionstringThe type of revision comparison.ahead; behindExperimental

[1] vcs.ref.base.name: base refers to the starting point of a change. For example, main would be the base reference of type branch if you’ve created a new reference of type branch from it and created new commits.

[2] vcs.ref.base.revision: base refers to the starting point of a change. For example, main would be the base reference of type branch if you’ve created a new reference of type branch from it and created new commits. The revision can be a full hash value (see glossary), of the recorded change to a ref within a repository pointing to a commit commit object. It does not necessarily have to be a hash; it can simply define a revision number which is an integer that is monotonically increasing. In cases where it is identical to the ref.base.name, it SHOULD still be included. It is up to the implementer to decide which value to set as the revision based on the VCS system and situational context.

[3] vcs.ref.base.type: base refers to the starting point of a change. For example, main would be the base reference of type branch if you’ve created a new reference of type branch from it and created new commits.

[4] vcs.ref.head.name: head refers to where you are right now; the current reference at a given time.

[5] vcs.ref.head.revision: head refers to where you are right now; the current reference at a given time.The revision can be a full hash value (see glossary), of the recorded change to a ref within a repository pointing to a commit commit object. It does not necessarily have to be a hash; it can simply define a revision number which is an integer that is monotonically increasing. In cases where it is identical to the ref.head.name, it SHOULD still be included. It is up to the implementer to decide which value to set as the revision based on the VCS system and situational context.

[6] vcs.ref.head.type: head refers to where you are right now; the current reference at a given time.

[7] vcs.repository.name: Due to it only being the name, it can clash with forks of the same repository if collecting telemetry across multiple orgs or groups in the same backends.

[8] vcs.repository.url.full: In Git Version Control Systems, the canonical URL SHOULD NOT include the .git extension.


vcs.change.state has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
closedClosed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request.Experimental
mergedMerged indicates that the change has been successfully integrated into the target codebase.Experimental
openOpen means the change is currently active and under review. It hasn’t been merged into the target branch yet, and it’s still possible to make changes or add comments.Experimental
wipWIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes.Experimental

vcs.line_change.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
addedHow many lines were added.Experimental
removedHow many lines were removed.Experimental

vcs.ref.base.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
branchbranchExperimental
tagtagExperimental

vcs.ref.head.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
branchbranchExperimental
tagtagExperimental

vcs.ref.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
branchbranchExperimental
tagtagExperimental

vcs.revision_delta.direction has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
aheadHow many revisions the change is ahead of the target ref.Experimental
behindHow many revisions the change is behind the target ref.Experimental

VCS Deprecated Attributes

“Describes deprecated vcs attributes.”

AttributeTypeDescriptionExamplesStability
vcs.repository.change.idstringDeprecated, use vcs.change.id instead.123Deprecated
Deprecated, use vcs.change.id instead.
vcs.repository.change.titlestringDeprecated, use vcs.change.title instead.Fixes broken thing; feat: add my new feature; [chore] update dependencyDeprecated
Deprecated, use vcs.change.title instead.
vcs.repository.ref.namestringDeprecated, use vcs.ref.head.name instead.my-feature-branch; tag-1-testDeprecated
Deprecated, use vcs.ref.head.name instead.
vcs.repository.ref.revisionstringDeprecated, use vcs.ref.head.revision instead.9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc; main; 123; HEADDeprecated
Deprecated, use vcs.ref.head.revision instead.
vcs.repository.ref.typestringDeprecated, use vcs.ref.head.type instead.branch; tagDeprecated
Deprecated, use vcs.ref.head.type instead.

vcs.repository.ref.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
branchbranchExperimental
tagtagExperimental