-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Git Plugin: Allow for options to be passed #26
Comments
I guess the easiest and quickest to implement (at least for the existing tasks) would be to allow to pass Gradle command line options to the tasks. So you could do: $ ./gradlew gitPullXyz --rebase Currently the Git tasks do not support every possible command line option of the Git command when used on the shell that is technically possible. But adding these should be fairly straight forward. Internally the plugin uses JGit. So the possible options are limited by the JGit API. Having arbitrary options may prove a bit difficult. Another option I see is to provide some GenericGitTask that basically makes the JGit API scriptable via the build.gradle file. This would give almost arbitrary freedom, e.g. task gitPullPluginsWithRebase(type: GenericGitTask) {
git.pull {
remote "https://github.com/seu-as-code/seu-as-code.plugins.git"
rebase true
}
} What do you think? Would that suite your needs? |
I don't think that would be a great user experience. Also if it is a team's policy to rather rebase than merge, then they would have to rememebr to type this the whole time whereas if it was configurable the just have to run the task.
When I said arbitrary, I was fine with it being limited by JGit support
I think having a generic task type is always a useful addition Overall I have to say that I like the way that defining the repositories ends up in having a number of tasks predefined. (It is a bit like the new model in certain way. it does present a challenge if one would want to configure attributes (which currently does not exist) on of of these tasks. There could be two alternative DSL way to allows configuration of the standard tasks that are created for a repo. Let's take boolean rebase = false as a property. In the simplest form the build script author can now do tasks.whenTaskAdded(GitPullTask) {
it.rebase = true
} This will happily work as your plugin only creates the tasks via an A second form could be to add the config in the extension DSL git {
foo {
url 'https://foo-server/foo.git'
options {
pull {
rebase = true
}
}
}
} This provides a slick, communicative DSL to the user, but more of a programming challenge to you as the plugin author. 🎱 |
Adding some extra attributes to the Git*Tasks and providing additional extension DSL support should be pretty straight forward to implement. Once I am done with the Mac support for the Credentials plugin I can start working on this one. |
Just published a RC1 version of the Git plugin to Bintray and the Gradle Plugin portal. plugins {
id 'de.qaware.seu.as.code.git' version '2.3.0.RC1'
} Please check if this suites your needs. Pretty much implemented the DSL configuration way you suggested. git {
SeuAsCodePlugins {
url 'https://github.com/seu-as-code/seu-as-code.plugins.git'
options {
pull {
rebase = true
timeout = 600
}
clone {
singleBranch = false
cloneSubmodules = true
noCheckout = false
timeout = 300
}
push {
dryRun = true
pushAll = true
pushTags = true
timeout = 200
force = true
}
}
}
} |
👍 Will try it over the weekend. |
I forgot to tell you that the changes you made works very well. |
It would be great is there was additional flexibility to pass arbitrary options to a task to customise the Git behaviour. For instance with
gitPullXyz
I might want to have the equivalent ofgit pull --rebase
.Maybe
AbstractGitTask
can be extended to add some way for options.The text was updated successfully, but these errors were encountered: