Monday, October 7, 2013

GitDetails plugin for Total Commander

During two evenings (Saturday and Monday) I made plugin for Total Commander. This plugin is based on java plugin interface (by Ken Händel) located here http://www.totalcmd.net/plugring/tc_java.html.

All source code you may find at my github https://github.com/crc83/tc-git-plugin
Binary distribution you may create by running mvn assembly, or download from here: https://github.com/crc83/tc-git-plugin/blob/master/binary/GitDetails-1.0.zip

Please contact me if you would like to see more features in this plugin. 

Thursday, September 12, 2013

Intellij Idea task repository plugin creation

Key notes
1) Reuse existing infrastructure
@Tag("Rally") // This is name of part in xml configuration file where your settings will be stored
public class RallyRepository extends BaseRepositoryImpl {

public class RallyRepositoryType extends BaseRepositoryType<RallyRepository> {
// UI things are located here (repository name, icon and stuff)

public class RallyTask extends Task {
// It's all about tasks. But nothing special here. Just implement all methods carefully

META-INF/plugin.xml
// In this file you may find some plugin configuration. But there is also nothing special

Making all the stuff works
All configuration goes through repository deitor which is responsible for reading changing and storing configuration. So extend existing one:

public class RallyRepositoryEditor extends BaseRepositoryEditor<RallyRepository> {

What is necesary to understand before implementation is that editor is tightly coupled with repository itself. Main items:
1) Editor check if something changed via equals method of repository (In our case RallyRepository)
2) Editor uses copying constructor of repository to create new changed instance of it
3) Editor serializes and deserializes repository according to bean conventions by default, so don't forget about appropriate getters and setters
4) Also don't use getXXX and setXXX methods for fields you don't whant to serialize. (There is @Transient annotation and you can use it)
5) Don't invoke logger in constructior of repository

You may refer my own plugin at github for additional implementation details (https://github.com/crc83/rallydev). I changed a lot from one that I forked (https://github.com/RallySoftware/intellij-plugin).

Download ready to use jar you can from here (http://dl.bintray.com/crc83/generic/rallydev.zip).

Monday, April 1, 2013

BuildHive + Github, Precommit builds for free

In previous post I wrote about integration your github repository with continious integration server buildhive from cloudbees.
Now I'd like to write about one incredible feature I discovered recently.
Here is it. BuildHive CI server tracs all pul requests to your repository. So what it do when it discover new pull request? It build your master with changes from pullrequest. Then CI server makes comment to your pull request in case build was succesfull or not (see screenshot above).

And last but not least. You CAN make pull requests to your own repo in case you need this feature and you owner of the repo.



Thursday, January 3, 2013

Opensource development ecosystem


 My aim was to have compleatly free development ecosystem for one project. Since this is java project I whanted to have java ecosystem. As a source control system was choosen git and that's why project was hosted at github (you know where it is so I don't put link here).
the JenktocatI start looking for free CI service. First I found Travis-CI but to maintain build there I have to make additional file in my repository (but at that time I was a bit lazy to do so). Fortunally I found another service. It's BuildHive from Cloudbees (and here is the link https://buildhive.cloudbees.com/). This service is based on Jenkins-CI and it was first plus. The second plus was the way to configure build. Actually you don't need to configure build, just type shell comands to build project ant that's it.