Skip to content

Commit ac62613

Browse files
committed
Read GitHub for plugins.jenkins.io docs
Accepts that some documentation is better than no documentation and that imperfect descriptions of extensions are better than no descriptions of extensions.
1 parent c47b757 commit ac62613

File tree

2 files changed

+228
-40
lines changed

2 files changed

+228
-40
lines changed

README.md

Lines changed: 227 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,244 @@
1-
# Git SCM plugin
1+
# Git plugin
22

3-
Git software configuration management for Jenkins
3+
[![Build Status](https://ci.jenkins.io/job/Plugins/job/git-plugin/job/master/badge/icon)](https://ci.jenkins.io/job/Plugins/job/git-plugin/job/master/)
4+
[![Contributors](https://img.shields.io/github/contributors/jenkinsci/git-plugin.svg)](https://github.com/jenkinsci/git-plugin/graphs/contributors)
5+
[![GitHub release](https://img.shields.io/github/release/jenkinsci/git-plugin.svg?label=release)](https://github.com/jenkinsci/git-plugin/releases/latest)
46

5-
* see [Jenkins wiki](https://plugins.jenkins.io/git) for feature descriptions
6-
* use [JIRA](https://issues.jenkins-ci.org) to report issues / feature requests
7+
<img src="https://git-scm.com/images/logos/downloads/Git-Logo-2Color.png" width="303">
78

8-
## Master Branch
9+
## Introduction
910

10-
The master branch is the primary development branch.
11+
The git plugin provides fundamental git operations for Jenkins projects.
12+
It can poll, fetch, checkout, branch, list, merge, and tag repositories.
1113

12-
Branch names using the pattern 'stable-x.y' are development branches
13-
for changes from a base release 'x.y'. For example, stable-3.9 is the
14-
branch used to release fixes based on git plugin 3.9 while master branch
15-
development is preparing for the 4.0.0 release.
14+
## Contents
1615

17-
## Contributing to the Plugin
16+
* [Changelog](#changelog)
17+
* [Configuration](#configuration)
18+
* [Extensions](#extensions)
19+
* [Environment Variables](#environment-variables)
20+
* [Properties](#properties)
21+
// * [Pipelines](#pipelines)
22+
// * [Performance Tuning](#performance-tuning)
23+
// * [Reference repositories](#reference-repositories)
24+
* [Combining repositories](#combining-repositories)
25+
* [Bug Reports](#bug-reports)
26+
* [Contributing to the Plugin](#contributing-to-the-plugin)
27+
28+
## Changelog
29+
30+
Release notes are recorded in [GitHub](https://github.com/jenkinsci/git-plugin/releases) beginning with git plugin 3.10.1.
31+
Prior release notes are recorded on the [Jenkins wiki](https://wiki.jenkins.io/display/JENKINS/Git+Plugin#GitPlugin-ChangeLog-MovedtoGitHub).
32+
33+
## Configuration
34+
35+
### Using Credentials
36+
37+
The git plugin supports username / password credentials and private key credentials provided by the [Jenkins credentials plugin](https://plugins.jenkins.io/credentials).
38+
Select credentials from the job definition drop down menu or enter their identifiers in Pipeline job definitions.
39+
40+
### Push Notifications
41+
42+
### Enabling JGit
43+
44+
See the [git client plugin documentation](https://plugins.jenkins.io/git-client) for instructions to enable JGit.
45+
JGit becomes available throughout Jenkins once it has been enabled.
46+
47+
## Extensions
48+
49+
### Advanced checkout behaviors
50+
51+
Timeout (in minutes) for checkout operation::
52+
Specify a timeout (in minutes) for checkout.
53+
54+
### Advanced clone behaviours
55+
56+
Fetch tags::
57+
Deselect this to perform a clone without tags, saving time and disk space when you just want to access what is specified by the refspec.
58+
59+
Honor refspec on initial clone::
60+
Perform initial clone using the refspec defined for the repository.
61+
This can save time, data transfer and disk space when you only need to access the references specified by the refspec.
62+
63+
Shallow clone::
64+
Perform shallow clone.
65+
Git will not download the complete history of the project, saving time and disk space when you just want to access the latest version of a repository.
66+
67+
Shallow clone depth::
68+
Set shallow clone depth to the specified numebr of commits.
69+
Git will only download that many commits from the remote repository, saving time and disk space.
70+
71+
[[clone-reference-repository-path,reference repository path]]
72+
Path of the reference repo to use during clone::
73+
Specify a folder containing a repository that will be used by git as a reference during clone operations.
74+
This option will be ignored if the folder is not available on the agent.
75+
76+
Timeout (in minutes) for clone and fetch operations::
77+
Specify a timeout (in minutes) for clone and fetch operations.
78+
79+
### Advanced sub-modules behaviours
80+
81+
Disable submodules processing::
82+
Ignore submodules in the repository.
83+
84+
Recursively update submodules::
85+
Retrieve all submodules recursively.
86+
Without this option, submodules which contain other submodules will ignore the contained submodules.
87+
88+
Update tracking submodules to tip of branch::
89+
Retrieve the tip of the configured branch in .gitmodules.
90+
91+
Use credentials from default remote of parent repository::
92+
Use credentials from the default remote of the parent project.
93+
Submodule updates do not use credentials by default.
94+
Enabling this extension will provide the parent repository credentials to each of the submodule repositories.
95+
Submodule credentials require that the submodule repository must accept the same credentials as the parent project.
96+
If the parent project is cloned with https, then the authenticated submodule references must use https as well.
97+
If the parent project is cloned with ssh, then the authenticated submodule references must use ssh as well.
98+
99+
Shallow clone::
100+
Perform shallow clone of submodules.
101+
Git will not download the complete history of the project, saving time and disk space.
102+
103+
Shallow clone depth::
104+
Set shallow clone depth for submodules.
105+
Git will only download recent history of the project, saving time and disk space.
106+
107+
Path of the reference repo to use during submodule update::
108+
Folder containing a repository that will be used by git as a reference during submodule clone operations.
109+
This option will be ignored if the folder is not available on the agent running the build.
110+
A reference repository may contain multiple subprojects.
111+
See the [combining repositories](#combining-repositories) section for more details.
112+
113+
Timeout (in minutes) for submodules operations::
114+
Specify a timeout (in minutes) for submodules operations.
115+
This option overrides the default timeout.
116+
117+
Number of threads to use when updating submodules::
118+
Number of parallel processes to be used when updating submodules.
119+
Default is to use a single thread for submodule updates
120+
121+
### Calculate changelog against a specific branch
122+
123+
Name of repository::
124+
Name of the repository, such as origin, that contains the branch.
18125

19-
Plugin source code is hosted on [GitHub](https://github.com/jenkinsci/git-plugin).
20-
New feature proposals and bug fix proposals should be submitted as
21-
[pull requests](https://help.github.com/articles/creating-a-pull-request).
22-
Fork the repository, prepare your change on your forked
23-
copy, and submit a pull request to the master branch. Your pull request will be evaluated
24-
by the [Jenkins job](https://ci.jenkins.io/job/Plugins/job/git-plugin/).
126+
Name of branch::
127+
Name of the branch used for the changelog calculation within the named repository.
25128

26-
Before submitting your pull request, please add tests which verify your
27-
change. There have been many developers involved in the git plugin and
28-
there are many users who depend on the git plugin. Tests help us assure
29-
that we're delivering a reliable plugin, and that we've communicated
30-
our intent to other developers in a way that they can detect when they
31-
run tests.
129+
### Checkout to a sub-directory
32130

33-
Code coverage reporting is available as a maven target and is actively
34-
monitored. Please improve code coverage with the tests you submit.
35-
Code coverage reporting is written to `target/site/jacoco/` by the maven command:
131+
Specify a local directory (relative to the workspace root) where the git repository will be checked out.
132+
If left empty, the workspace root itself will be used.
36133

134+
### Checkout to specific local branch
135+
136+
Branch name::
137+
If given, checkout the revision to build as HEAD on the named branch.
138+
If value is an empty string or "**", then the branch name is computed from the remote branch without the origin.
139+
In that case, a remote branch origin/master will be checked out to a local branch named master, and a remote branch origin/develop/new-feature will be checked out to a local branch named develop/newfeature.
140+
141+
### Clean after checkout
142+
143+
Clean the workspace **after** every checkout by deleting all untracked files and directories, including those which are specified in .gitignore.
144+
Resets all tracked files to their versioned state.
145+
Ensures that the workspace is in the same state as if cloned and checkout were performed in a new workspace.
146+
Reduces the risk that current build will be affected by files generated by prior builds.
147+
Does not remove files outside the workspace (like temporary files or cache files).
148+
Does not remove files in the `.git` repository of the workspace.
149+
150+
### Clean before checkout
151+
152+
Clean the workspace **before** every checkout by deleting all untracked files and directories, including those which are specified in .gitignore.
153+
Resets all tracked files to their versioned state.
154+
Ensures that the workspace is in the same state as if cloned and checkout were performed in a new workspace.
155+
Reduces the risk that current build will be affected by files generated by prior builds.
156+
Does not remove files outside the workspace (like temporary files or cache files).
157+
Does not remove files in the `.git` repository of the workspace.
158+
159+
### Create a tag for every build
160+
161+
Create a tag in the workspace for every build to unambiguously mark the commit that was built.
162+
You can combine this with Git publisher to push the tags to the remote repository.
163+
164+
### Custom SCM name - __Deprecated__
165+
166+
Unique name for this SCM.
167+
Was needed when using Git within the Multi SCM plugin.
168+
Pipeline is the robust and feature-rich way to checkout from multiple repositories in a single job.
169+
170+
### Custom user name/e-mail address
171+
172+
user.name::
173+
Defines the user name value which git will assign to new commits made in the workspace.
174+
If given, `git config user.name [this]` is called before builds.
175+
This overrides values from the global settings.
176+
177+
user.email::
178+
Defines the user email value which git will assign to new commits made in the workspace.
179+
If given, `git config user.email [this]` is called before builds.
180+
This overrides whatever is in the global settings.
181+
182+
// ### Don't trigger a build on commit notifications
183+
// ### Force polling using workspace
184+
// ### Git LFS pull after checkout
185+
// ### Merge before build
186+
// ### Polling ignores commits from certain users
187+
// ### Polling ignores commits in certain paths
188+
// ### Polling ignores commits with certain messages
189+
190+
### Prune stale remote tracking branches
191+
192+
Runs `git remote prune` for each remote to prune obsolete local branches.
193+
194+
// ### Sparse checkout paths
195+
// ### Strategy for choosing what to build
196+
197+
### Use commit author in changelog
198+
199+
The default behavior is to use the Git commit's "Committer" value in build changesets.
200+
If this option is selected, the git commit's "Author" value is used instead.
201+
202+
// ### Wipe out repository and force clone
203+
204+
## Environment Variables
205+
206+
## Properties
207+
208+
Some git plugin settings can only be controlled from command line properties set at Jenkins startup.
209+
210+
Default timeout::
211+
The default initial git timeout value can be overridden through the property `org.jenkinsci.plugins.gitclient.Git.timeOut` (see [JENKINS-11286](https://issues.jenkins-ci.org/browse/JENKINS-11286)).
212+
The property should be set on both master and agent to have effect (see [JENKINS-22547](https://issues.jenkins-ci.org/browse/JENKINS-22547)).
213+
214+
// ## Pipelines
215+
216+
// ## Performance Tuning
217+
218+
// ### Reference repositories
219+
220+
### Combining repositories
221+
222+
A single reference repository may contain commits from multiple repositories.
223+
For example, if a repository named `parent` includes references to submodules `child-1` and `child-2`, a reference repository could be created to cache commits from all three repositories using the commands:
37224
```
38-
$ mvn -P enable-jacoco clean install jacoco:report
225+
$ mkdir multirepository-cache.git
226+
$ cd multirepository-cache.git
227+
$ git init --bare
228+
$ git remote add parent https://github.com/jenkinsci/git-plugin
229+
$ git remote add child-1 https://github.com/jenkinsci/git-client-plugin
230+
$ git remote add child-2 https://github.com/jenkinsci/platformlabeler-plugin
231+
$ git fetch --all
39232
```
40233

41-
Before submitting your change, review the spotbugs output to
42-
assure that you haven't introduced new spotbugs warnings.
234+
Those commands will create a single bare repository which includes the current commits from all three repositories.
235+
If that reference repository is used in the advanced clone options <<clone-reference-repository-path>>, it will reduce data transfer and disc use for the parent repository.
236+
If that reference repository is used in the submodule options <<submodule-reference-repository-path>>, it will reduce data transfer and disc use for the submodule repositories.
43237

44-
## Building the Plugin
238+
## Bug Reports
45239

46-
```bash
47-
$ java -version # Need Java 1.8
48-
$ mvn -version # Need a modern maven version; maven 3.5.4 or later are required
49-
$ mvn clean install
50-
```
240+
Report issues and enhancements in the [Jenkins issue tracker](https://issues.jenkins-ci.org).
51241

52-
## To Do
242+
## Contributing to the Plugin
53243

54-
* Fix [bugs](https://issues.jenkins-ci.org/secure/IssueNavigator.jspa?mode=hide&reset=true&jqlQuery=project+%3D+JENKINS+AND+status+in+%28Open%2C+"In+Progress"%2C+Reopened%29+AND+component+%3D+git-plugin)
55-
* Improve code coverage
56-
* Improve javadoc
244+
Refer to [contributing to the plugin](CONTRIBUTING.md) for contribution guidelines.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<packaging>hpi</packaging>
2121
<name>Jenkins Git plugin</name>
2222
<description>Integrates Jenkins with GIT SCM</description>
23-
<url>https://wiki.jenkins.io/display/JENKINS/Git+Plugin</url>
23+
<url>https://plugins.jenkins.io/git</url>
2424
<inceptionYear>2007</inceptionYear>
2525

2626
<properties>

0 commit comments

Comments
 (0)