Git Product home page Git Product logo

gradle-git-plugin's Introduction

Gradle DSL and Tasks for handling git repositories in some Use Cases.

This Gradle Plugin has a DSL(Domain Specific Language) and Tasks for handling git repositories in some Use Cases.

Use Cases

Gitは柔軟で強力な分散バージョン管理ツールですが、 それだけに実際の開発ではどのように利用するか、運用ルールを決める必要があります。

Gitによる運用ルールのベストプラクティスとしては、 Git Flow、GitLab Flow、GitHub Flowなどが有名です。

Git Flowは大規模な開発、運用を長期的に行う場合に向いているようです。 GitLab Flowは中・小規模で、iOS/Androidアプリケーションなどの開発に、 GitHub Flowは小さいチームに別れて行なうWebアプリケーションの開発に向いているようです。 詳細は最後の URLを参照してください。

この DSLが想定しているユースケースについて説明します。

aUseCase
Figure 1. Big Picture of a Use Case.

"fork"により開発を初める場合となります。

  • (a) GitHubやGitBucket等のレポジトリにて、 機能拡張や不具合修正の対象となる、オリジナルのレポジトリ(Original Repository)を forkし、 自分のレポジトリ(My Repository)を作成する。

  • (b) 自分のレポジトリ(My Repository)を、cloneして ローカルレポジトリ(Local Repository)を作成する。

  • (c) 機能拡張や不具合修正を行なうための branchを作成する。(GitHub Flowを想定)

  • (d)(e) 修正や新規追加したファイルを addし、commitする。

  • (f) 広く公開する前に、プライベートなサーバに pushし、公開して問題無い内容か確認する。 または、プロジェクトメンバによりレビューを行なう。 (必要に応じて pull requestをプライベート・サーバで発行する)

  • (g)(h) 他のプロジェクトメンバからの pushがあれば、それを fetchし mergeする。 または、他のメンバから pull requestがあれば mergeする。

  • (i) 問題が無ければ、公開するために pushする。

  • (j)(h) オリジナルのレポジトリ(Original Repository)で、 修正・更新されたコードを取り込むために、fetchし mergeする。

この DSLの記載例を以下に示します。

List 1. Example of DSL definitions(1).
git {
  repository = 'gitbucket'  // (1)
  filepattern = ['']  // (2)

  user_name = 'nobusugi246'  // (3)
  user_email = '[email protected]'  // (4)

  remote   = 'https://github.com/nobusugi246/gitbucket.git'  // (5)
  upstream = 'https://github.com/gitbucket/gitbucket.git'  // (6)
  acount = 'nobusugi246'  // (7)
  password = 'xxx'  // (8)

  middle = 'http://localhost:8080/git/xxx/gitbucket.git'  // (9)
  middleAcount = 'xxx'  // (10)
  middlePassword = 'xxx'  // (11)

  comment = ''  // (12)
}

githubFlow {
  topic = 'feature_xx'  // (13)
}
  1. ローカルレポジトリを作成するフォルダ名

  2. fork/cloneする時は不要。ファイルの追加/修正した時に、そのファイル名やフォルダを指定する。

  3. gitのユーザ名

  4. gitのメールアドレス

  5. forkした、cloneの対象のレポジトリ(My Repository)への URL

  6. fork元のレポジトリ(Original Repository)への URL

  7. GitHub(またはGitBucket等)のアカウント名

  8. GitHub(またはGitBucket等)のパスワード

  9. プライベートな Gitサーバへの URL

  10. プライベートな Gitサーバのアカウント名

  11. プライベートな Gitサーバのパスワード

  12. commitするときのコメント。随時、commit時に記載する。

  13. branchを作成するときの branch名

At first, you needs a environment that you can execute gradle or gradlew commands.

タスクの実行は、gradleまたは gradlewコマンドを実行できる環境で、行なってください。

List 2. Clone My Repository from GitHub. (b)
$ gradle --daemon -b git.gradle clone
List 3. Push to Private Git Server. (f)
$ gradle --daemon -b git.gradle middlePush
List 4. Clone and push to Private Git Server. (b)(f)
$ gradle --daemon -b git.gradle clone middlePush
List 5. Push to Github Server. (i)
$ gradle --daemon -b git.gradle push
List 6. Sync a fork. (Fetch upstream repository(Original Repository) and merge it.) (j)(h)
$ gradle --daemon -b git.gradle sync
anotherUseCase
Figure 2. Big Picture of another Use Case.

新規に開発したコードを公開する場合となります。

  • GitHub(またはGitBucket等)には空のレポジトリを作成しておく。 ローカルで作成したコードを対象に、レポジトリを作成((a) init)し、 ファイルを追加((b) add)、コミット((c) commit)、 プライベートなサーバに(d) pushして確認、 問題無ければ GitHubに(g) pushする。

  • GitHubや GitBucketでは、必要に応じて pull requestを作成する。 他のメンバからの pushによるコードの登録があれば、 (e)/(h) fetchして (f) mergeを行なう。

  • ローカルレポジトリで機能開発や不具合修正は、 (i) branchを作成して行なう。(GitHub Flow等)

この DSLの記載例を以下に示します。

List 7. Example of DSL definitions(2).
git {
  repository = '.'  // (1)
  filepattern = ['git.gradle', 'README.adoc', 'LICENSE-2.0.txt', 'readme_images']  // (2)

  user_name = 'nobusugi246'  // (3)
  user_email = '[email protected]'  // (4)

  remote   = 'https://github.com/nobusugi246/gradle-jgit-plugin.git'  // (5)
  upstream = ''  // (6)
  acount = 'nobusugi246'  // (7)
  password = 'xxx'  // (8)

  middle = 'http://localhost:8080/git/xxx/gradle-jgit-plugin.git'  // (9)
  middleAcount = 'xxx'  // (10)
  middlePassword = 'xxx'  // (11)

  comment = ''  // (12)
}

githubFlow {
  topic = 'feature_xx'  // (13)
}
  1. ローカルレポジトリを作成するフォルダ名

  2. バージョン管理対象のファイル名やフォルダを指定する。

  3. gitのユーザ名

  4. gitのメールアドレス

  5. GitHub等の Remote Repository。最初は空の Repositoryを作成する。

  6. このユースケースでは不要。

  7. GitHub(またはGitBucket等)のアカウント名

  8. GitHub(またはGitBucket等)のパスワード

  9. プライベートな Gitサーバへの URL

  10. プライベートな Gitサーバのアカウント名

  11. プライベートな Gitサーバのパスワード

  12. commitするときのコメント。随時、commit時に記載する。

  13. branchを作成するときの branch名

List 8. Initialize, add, commit, push to Private Git Server. (a)(b)(c)(d)
$ gradle --daemon -b git.gradle initG add commit middlePush
List 9. Initialize, add, commit, push to GitHub Server. (a)(b)(c)(g)
$ gradle --daemon -b git.gradle initTP  (abbrev. of "initThenPush")

License / ライセンス

Apache License Version 2.0

gradle-git-plugin's People

Contributors

nobusugi246 avatar

Watchers

James Cloos avatar

gradle-git-plugin's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.