What is TinLizard?

TinLizard is a java web application to aggregate, annotate, and correlate codelines.

Aggregate codelines into "Views" that logically group togethor related codelines (by project? by team? ...)

Annotate codelines with a description, policy, and an owner.

Correlate codelines by the dependency relationships declared in their POMs.

[top]

What is a codeline?

A codeline is a fancy term for a branch - or any line of development (of code). Why not just call it a branch? Branch would save a couple of keystrokes, but doesn't quite account for things like HEAD in CVS or trunk in SVN - those are arguably branches, but definitely codelines. Also, with the distributed version control systems (HG, git) there may be a complete clone of the repository for some particular vein of development - A branch... well sort of, maybe we need a term that is a bit more flexible.

See also:

[top]

What does TinLizard need to run?

You'll need some sort of servlet container, configured with the following.

  • A datasource.
    • JNDI key: jdbc/TinLizardDB
    • WEB-INF/classes/META-INF/persistence.xml - set Hibernate Dialect
  • A realm, authenticator, or whatever term your target servlet container uses for Container Managed Authentications. Users will need the following roles.
    • TINLIZARD_USER - for users.
    • TINLIZARD_ADMIN - for admin

[top]

How do I keep TinLizard in sync with my SCM and build tools?

For each new project and/or each new project branch (codeline!), you can log into TinLizard, navigate your way through the (simple, easy to use, light-weight, lynx-friendly) menus, and create a new project and/or codeline. If you just want to make sure a particular codeline has the latest and great POM information, you could, once again, log in, navigate to a Codeline and select Refresh from the menu. TinLizard uses the API exposed as part of the Maven SCM Plugin to check out or refresh the POM from the SCM and extract your project's maven coordinates and dependencies. At the end of a codelines life, we can go back, log into TinLizard, and set the appropriate { policy, view } or just outright delete the codeline.

Not so bad for a small handful of codelines - say 5 projects, with one branch (codeline!) getting created/retired in a month. That probably won't scale, and actually, who wants to remember to do all that? No-one.

Queue some jobs (Hudson? cron? Cruise Control) to do all the clicking so you can REST. TinLizard sports a programmatic, RESTful API, that begs to be used. Some Scenarios:

  1. The nightly refresh: pull down the codelines you care about (xxx/xml, xxx/csv, xxx/json) and POST to /codeline/name/refresh. voila.
  2. Garbage Collection A - pull from Hudson: Cross-reference Codelines with Hudson - no job, no codeline (or set policy to something like "Retired").
  3. Garbage Collection B - push to Hudson: Cross-reference Codelines with Hudson - if the policy is set to something like "Retired", 86 the hudson job.
  4. Search and Employ: Poke around your { SCM, FishEye, RedLine, Hudson } for new { Modules, Branches, Projects, Jobs, Views } and bring them on over.
  5. Frozen Fist of Death: Block check-ins for branches with a policy of "Retired" or "Dead". While TinLizard could work as that app for you, you might not want to make your SCM check-ins dependenant on a webapp being up and running.
  6. Night of the Living Dead: Cross-Check your Codeline policies with your { FishEye, Hudson, SCM } to find "Retired" branches that decided to spring back into action. Fire off a lite (lite!) email, and this could be called "Noodle of Nudge".

[top]

How can I customize my TinLizard installation?

TINLIZARD_HOME/mash-files/tinlizard/web/*Web/*

[top]