defmodule OpenTelemetry.SemConv.Incubating.VcsAttributes do
  # This is an auto-generated file
  @moduledoc """
  OpenTelemetry Semantic Conventions for Vcs attributes.
  """

  @doc """
  The ID of the change (pull request/merge request) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.

  ### Value type

  Value must be of type `atom() | String.t()`.
  ### Examples

  ```
  ["123"]
  ```

  <!-- tabs-open -->

  ### Elixir

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_change_id()
      :"vcs.repository.change.id"

  ### Erlang

  ```erlang
  ?VCS_REPOSITORY_CHANGE_ID.
  'vcs.repository.change.id'
  ```

  <!-- tabs-close -->
  """
  @spec vcs_repository_change_id :: :"vcs.repository.change.id"
  def vcs_repository_change_id do
    :"vcs.repository.change.id"
  end

  @doc """
  The human readable title of the change (pull request/merge request). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.

  ### Value type

  Value must be of type `atom() | String.t()`.
  ### Examples

  ```
  ["Fixes broken thing", "feat: add my new feature", "[chore] update dependency"]
  ```

  <!-- tabs-open -->

  ### Elixir

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_change_title()
      :"vcs.repository.change.title"

  ### Erlang

  ```erlang
  ?VCS_REPOSITORY_CHANGE_TITLE.
  'vcs.repository.change.title'
  ```

  <!-- tabs-close -->
  """
  @spec vcs_repository_change_title :: :"vcs.repository.change.title"
  def vcs_repository_change_title do
    :"vcs.repository.change.title"
  end

  @doc """
  The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.

  ### Value type

  Value must be of type `atom() | String.t()`.
  ### Examples

  ```
  ["my-feature-branch", "tag-1-test"]
  ```

  <!-- tabs-open -->

  ### Elixir

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_ref_name()
      :"vcs.repository.ref.name"

  ### Erlang

  ```erlang
  ?VCS_REPOSITORY_REF_NAME.
  'vcs.repository.ref.name'
  ```

  <!-- tabs-close -->
  """
  @spec vcs_repository_ref_name :: :"vcs.repository.ref.name"
  def vcs_repository_ref_name do
    :"vcs.repository.ref.name"
  end

  @doc """
  The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.

  ### Value type

  Value must be of type `atom() | String.t()`.
  ### Notes

  The revision can be a full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),
  of the recorded change to a ref within a repository pointing to a
  commit [commit](https://git-scm.com/docs/git-commit) object. It does
  not necessarily have to be a hash; it can simply define a
  [revision number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)
  which is an integer that is monotonically increasing. In cases where
  it is identical to the `ref.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.

  ### Examples

  ```
  ["9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc", "main", "123", "HEAD"]
  ```

  <!-- tabs-open -->

  ### Elixir

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_ref_revision()
      :"vcs.repository.ref.revision"

  ### Erlang

  ```erlang
  ?VCS_REPOSITORY_REF_REVISION.
  'vcs.repository.ref.revision'
  ```

  <!-- tabs-close -->
  """
  @spec vcs_repository_ref_revision :: :"vcs.repository.ref.revision"
  def vcs_repository_ref_revision do
    :"vcs.repository.ref.revision"
  end

  @typedoc """
  The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.


  ### Enum Values
  * `:branch` ^[e](`m:OpenTelemetry.SemConv#experimental`)^ - [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch)
  * `:tag` ^[e](`m:OpenTelemetry.SemConv#experimental`)^ - [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag)
  """
  @type vcs_repository_ref_type_values() :: %{
          :branch => :branch,
          :tag => :tag
        }
  @doc """
  The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.


  ### Examples

  ```
  ["branch", "tag"]
  ```

  <!-- tabs-open -->

  ### Elixir

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_ref_type()
      :"vcs.repository.ref.type"

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_ref_type_values().branch
      :branch

      iex> %{OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_ref_type() => OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_ref_type_values().branch}
      %{:"vcs.repository.ref.type" => :branch}

  ### Erlang

  ```erlang
  ?VCS_REPOSITORY_REF_TYPE.
  'vcs.repository.ref.type'

  ?VCS_REPOSITORY_REF_TYPE_VALUES_BRANCH.
  'branch'

  \#{?VCS_REPOSITORY_REF_TYPE => ?VCS_REPOSITORY_REF_TYPE_VALUES_BRANCH}.
  \#{'vcs.repository.ref.type' => 'branch'}
  ```

  <!-- tabs-close -->
  """
  @spec vcs_repository_ref_type :: :"vcs.repository.ref.type"
  def vcs_repository_ref_type do
    :"vcs.repository.ref.type"
  end

  @spec vcs_repository_ref_type_values() :: vcs_repository_ref_type_values()
  def vcs_repository_ref_type_values() do
    %{
      :branch => :branch,
      :tag => :tag
    }
  end

  @doc """
  The [URL](https://en.wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository.

  ### Value type

  Value must be of type `atom() | String.t()`.
  ### Examples

  ```
  ["https://github.com/opentelemetry/open-telemetry-collector-contrib", "https://gitlab.com/my-org/my-project/my-projects-project/repo"]
  ```

  <!-- tabs-open -->

  ### Elixir

      iex> OpenTelemetry.SemConv.Incubating.VcsAttributes.vcs_repository_url_full()
      :"vcs.repository.url.full"

  ### Erlang

  ```erlang
  ?VCS_REPOSITORY_URL_FULL.
  'vcs.repository.url.full'
  ```

  <!-- tabs-close -->
  """
  @spec vcs_repository_url_full :: :"vcs.repository.url.full"
  def vcs_repository_url_full do
    :"vcs.repository.url.full"
  end
end
