/gradle_git_plugin

Gradle Plugin for using Git

Primary LanguageGroovy

Purpose

This is a plugin intended to work with other plugins to help establish a Git workflow for a project.

Creating the Plugin JAR

gradlew assemble

Usage

apply plugin: com.mooregreatsoftware.gradle.gitplugin.GitPlugin

buildscript {
  repositories {
    add(new org.apache.ivy.plugins.resolver.URLResolver()) {
            name = 'gitplugin_repo'
            addArtifactPattern "http://github.com/downloads/jdigger/gradle_git_plugin/[module]-[revision](-[classifier]).[ext]"
            descriptor = 'optional'
    }
  }
  dependencies {
    classpath 'com.mooregreatsoftware.gradle:gitplugin:1.1.0'
  }
}

Predefined Workflow

Normal Development

Look at bug system/cards and start developing against ISSUE-1234

gradle start1234

You can specify the prefix used in creating the branch name (e.g., 'ISSUE-') by setting the branchPrefix property in the project. It will try to figure out the current integration branch (e.g., 'origin/master') based on the branch you are currently on, but if you want to explicitly specify it, set the integrationBranch property in the project.

Work the issue. I'm paranoid that my machine will eat the files, but I want to make sure no-one else on my team will base any work off of my checkins.

gradle push-private

That will create the branch "work/jmoore/ISSUE-1234" on the server. You can customize the behavior of how the work branch is created by setting the baseWorkBranchName property on the project. The default name is work. Or, if you don't want to use the convention, specify workBranch on the project to be whatever you want.

When I want to make sure that I have the latest from the integration branch and rebase my work against it.

gradle update

I'm ready for others to review my changes before putting into into the "golden integration branch".

gradle push-review

That will create the branch "review/master/ISSUE-1234" on the server. You can customize the behavior of how the review branch is created by setting the baseReviewBranchName property on the project. The default name is review. Or, if you don't want to use the convention, specify reviewBranch on the project to be whatever you want.

Rinse and repeat.

Code Review

Checkout another developer's code.

git review3456

equivalent to

git checkout -b ISSUE-3456 origin/review/master/ISSUE-3456

Everything looks great.

gradle push-integration

Available Targets

update

Pull remote changes from the currently tracked branch into the current branch.

push-private

Push changes to a private branch on the server.

push-work

Push changes to a branch that can be shared with other developers.

push-review

Push changes to a branch used for doing code-reviews.

push-integration

Push changes to the integration branch others base their work from.

track-work

Change the local branch to track the "working" (i.e., shared) branch.

track-review

Change the local branch to track the code-review branch.

track-integration

Change the local branch to track the integration branch.

remove-private

Remove the remote private development branch for the current issue.

remove-work

Remove the remote shared development branch for the current issue.

remove-review

Remove the remote code-review branch for the current issue.

refresh-remote-branches

Removes references to remote branches that no longer exist.

Author and Origin

These plugins were written by Jim Moore. They are published at GitHub:jdigger/gradle_git_plugin.

License

All these plugins are licensed under the Apache Software License 2.0 license with no warranty (expressed or implied) for any purpose.