TeamCity
 
You are viewing the documentation for an earlier version of TeamCity.

Git (JetBrains)

Last modified: 20 April 2023

Git support in TeamCity is implemented as a plugin.

This page contains description of the Git-specific fields of the VCS root settings. Common VCS Root properties Configuring VCS Roots.

General Settings



Branch Matching Rules



  • If the branch matches a line without patterns, the line is used.

  • If the branch matches several lines with patterns, the best matching line is used.

  • If there are several lines with equal matching, the one below takes precedence. Everything that is matched by the wildcard will be shown as a branch name in TeamCity interface. For example, +:refs/heads/* will match refs/heads/feature1 branch but in the TeamCity interface you'll see only feature1 as a branch name. The short name of the branch is determined as follows:

  • if the line contains no brackets, then full line is used, if there are no patterns or part of line starting with the first pattern-matched character to the last pattern-matched character.

  • if the line contains brackets, then part of the line within brackets is used. When branches are specified here, and if your build configuration has a VCS trigger and a change is found in some branch, TeamCity will trigger a build in this branch.

Supported Protocols for Server Side Checkout



The following protocols are supported for the server-side VCS Checkout Mode:

  • ssh: (e.g. ssh://git.somwhere.org/repos/test.git, ssh://git@git.somwhereElse.org/repos/test.git, scp-like syntax: git@git.somwhere.org:repos/test.git)

    note

    The scp-like syntax requires a colon after the hostname, while the usual ssh url does not. This is a common source of errors.

  • git: (e.g. git://git.kernel.org/pub/scm/git/git.git)

  • http: (e.g. http://git.somewhere.org/projects/test.git)

  • file: (e.g. file:///c:/projects/myproject/.git)

    note

    When you run TeamCity as a Windows service, it cannot access mapped network drives and repositories located on them.

Authentication Settings



For all the available options to connect to GitHub, please see the comment.

Server Settings



These are the settings used in case of the server-side VCS Checkout Mode.

Agent Settings



These are the settings used in case of the agent-side VCS Checkout Mode. Note that the agent-side checkout has limited support for SSH. The only supported authentication methods are "Default Private Key" and "Uploaded Private Key" . If you plan to use the VCS Checkout Mode, you need to have Git 1.6.4+ installed on the agents.

Git executable on the agent



The path to the git executable can be configured in the agent properties by setting the value of the TEAMCITY_GIT_PATH environment variable.

If the path to git is not configured, the git-plugin tries to detect the installed git on the launch of the agent. It first tries to run git from the following locations:

  • for windows - try to run git.exe at:

    • C:\Program Files\Git\bin

    • C:\Program Files (x86)\Git\bin

    • C:\cygwin\bin

  • for *nix - try to run git at:

    • /usr/local/bin

    • /usr/bin

    • /opt/local/bin

    • /opt/bin

If git wasn't found in any of these locations, try to run the git accessible from the $PATH.

If a compatible git (1.6.4+) is found, it is reported in the TEAMCITY_GIT_PATH environment variable. This variable can be used in the Path to git field in the VCS root settings. As a result, the configuration with such a VCS root will run only on the agents where git was detected or specified in the agent properties.

Internal Properties



For Git VCS it is possible to configure the following Configuring TeamCity Server Startup Properties:

Build Agent Configuration for Git:

Limitations



  • When using checkout on an agent, a limited subset of VCS Checkout Rules is supported, because Git cannot clone a subdirectory of a repository. You can only map the whole repository to a specific directory using the following checkout rule +:.=>subdir. The rest of the checkout rules are not supported.

Known Issues



  • Tagging is not supported over the HTTP protocol

  • java.lang.OutOfMemoryError while fetch repository. Usually occurs when there are large files in the repository. By default, TeamCity runs fetch in a separate process. To run fetch in the server process, set the teamcity.git.fetch.separate.process Configuring TeamCity Server Startup Properties to false.

  • Teamcity run as a Windows service cannot access a network mapped drives, so you cannot work with git repositories located on such drives. To make this work, run TeamCity using teamcity-server.bat.

  • inflation using streams in JGit prevents OutOfMemoryError, but can be time-consuming (see the related thread at jgit-dev for details and the TW-14947 issue related to the problem). If you meet conditions similar to those described in the issue, try to increase teamcity.git.stream.file.threshold.mb. Additionally, it is recommended to increase the overall amount of memory dedicated for TeamCity to prevent OutOfMemoryError.

Development Links



Git support is implemented as an open-source plugin. For development links, refer to the Git.