Tracks changes made to all branches (or branches matching a filter). This will skip commits on individual branches, but ensure a version is emitted for each change to the branches.
This resource is meant to be used with version: every
.
Add the following resource_types
entry to your pipeline:
---
resource_types:
- name: git-branch-heads
type: docker-image
source: {repository: vito/git-branch-heads-resource}
All source configuration is based on the Git resource, with the addition of the following property:
branches
: Optional. An array of branch name filters. If not specified, all branches are tracked.exclude
: Optional A Regex for branches to be excluded. If not specified, no branches are excluded.
The branch
configuration from the original resource is ignored for check
.
Resource configuration for a repo with a bunch of branches named wip-*
:
resources:
- name: my-repo-with-feature-branches
type: git-branch-heads
source:
uri: https://github.com/concourse/atc
branches: [wip-*]
Resource configuration for a repo with version
and branches beginning with feature/
filtered out:
resources:
- name: my-repo-with-feature-branches
type: git-branch-heads
source:
uri: https://github.com/concourse/atc
exclude: version|feature/.*
The repository is cloned (or pulled if already present), all remote branches are enumerated, and compared to the existing set of branches.
If any branches are new or removed, a new version is emitted including the delta.
This resource delegates entirely to the in
of the original Git resource, by
specifying source.branch
as the branch that changed, and version.ref
as the
commit on the branch.
All params
and source
configuration of the original resource will be
respected.
If you use this resource as a put
step it'll just commit and push all changes in the repo.