From d0b443ccada712ee58f2036a96c0435a18dd0dd7 Mon Sep 17 00:00:00 2001 From: Chad Wilson Date: Sun, 17 Nov 2019 00:39:23 +0800 Subject: [PATCH] Prepare for `2.0` release --- README.md | 69 ++++++++++++++++++++++++++++++++++++++++++++----------- pom.xml | 2 +- 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ff114fa..5cba3c7 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,75 @@ [![Maven Central](https://maven-badges.herokuapp.com/maven-central/in.ashwanthkumar/git-cmd/badge.svg)](https://maven-badges.herokuapp.com/maven-central/in.ashwanthkumar/git-cmd) -Fork of [srinivasupadhya/git-cmd](https://github.com/srinivasupadhya/git-cmd/), maintaining it so that I can publish this to maven. +`git-cmd` is a common Git helper module that all GoCD plugins needing to poll or interact with +Git repositories can use. -
+This is a fork of [srinivasupadhya/git-cmd](https://github.com/srinivasupadhya/git-cmd/), being maintained +in support of the several GoCD Git-based plugins. -Common module that all Go CD plugins to poll Git repository can use. +## Compatibility +| Plugin Version | Java Version for GoCD | +|:--------------:|:---------------------:| +| < 2.0 | 7+ | +| \>= 2.0 | 9+ | -*Usage:* -Inside `git-cmd` project: -``` -$ mvn clean install -DskipTests -``` +## Features + +* Supports detection of whether the `git` command line client is installed, with fallback to +[JGit](https://www.eclipse.org/jgit/) if it is not available +* Intended to support most operations of the upstream [GoCD Git Material](https://github.com/gocd/gocd/blob/master/domain/src/main/java/com/thoughtworks/go/config/materials/git/GitMaterial.java) + and [GitCommand](https://github.com/gocd/gocd/blob/master/domain/src/main/java/com/thoughtworks/go/domain/materials/git/GitCommand.java) + upon which this library is based. +* Most regular `Git` operations required by such a plugin are supported + * clone + * **git command line only** `--depth=1` shallow clones, and unshallowing when necessary (since `2.0`) + * **git command line only** `--no-checkout` mode + * fetch from refSpec + * clean working directories + * hard reset + * pull + * find revision operations + * latest revision + * revisions since + * revision details + * get current revision + * get all revisions + * get commit count (when not on a shallow clone) + * filter revision searches by repo subpaths + * submodule support + * add, commit, push +## Usage Add Dependency (to plugin project): -``` + +Maven +```xml in.ashwanthkumar git-cmd - 1.0 + 2.0 ``` -Use: +Gradle +```groovy +dependencies { + implementation 'in.ashwanthkumar:git-cmd:2.0' +} ``` + +Use: +```java +GitConfig config = new GitConfig("git@github.com:ashwanthkumar/git-cmd.git"); GitHelper git = HelperFactory.git(gitConfig, new File(flyweightFolder)); git.cloneOrFetch(); -... +//... +``` + +## Development + +Building: +``` +$ mvn clean install ``` -`HelperFactory.git(gitConfig, new File(flyweightFolder));` detects & uses git if installed else falls back on jgit implementation. diff --git a/pom.xml b/pom.xml index 2db9196..ed06128 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ in.ashwanthkumar git-cmd - 2.0-SNAPSHOT + 2.0 jar Git-CMD Common module that all Go CD plugins can use to poll Git repository.